Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1230 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Supprimer ligne Excel vba [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Supprimer ligne Excel vba [résolu]

n°1441769
GillooZ
un reportage de filip loulou
Posté le 13-09-2006 à 14:29:47  profilanswer
 

Bonjour à tous,  
 
Voila mon code parcours une feuille excel et je cherche a supprimer les lignes qui ne correspondent pas aux besoins de l'utilisateur.
 
J'ai un userform sur lequel celui ci peut faire different choix pour farie un filtre sur une feuille excel.
 
seulement lors de la suppression des lignes mon pc comprends plus rien, se fige et Excel plante
 
With Worksheets("enr_incidents" )
 
Do
  DateNow = CDate(.Range("A" & cpt))
  If (DateNow >= DateDebut) And (DateNow <= DateFin) Then
    For cptList = 0 To ListCli.ListCount - 1
        If ListCli.Selected(cptList) Then
            Cli = ListCli.Column(0, cptList)
            'boucle sur tous les clients selectionnés par l'utilisateur
            If (.Range("B" & cpt).Value = Cli) Then
                LigneValide = 1
                MsgBox cpt
            End If
        End If
    Next cptList
  End If
  If LigneValide = 0 Then
    Rows(cpt).Delete
  End If
  cpt = cpt + 1
  LigneValide = 0
             
Loop Until IsEmpty(.Range("A" & cpt))
End With
 
 
J'ai trouvé la commande Rows(cpt).Delete sur un site mais apperement elle fait completement planter mon programme, car j'ai deja testé mon code sans les suppressions pour vérifier qu'il ne se trompait pas sur les lignes valdies et aucun pb.
 
Y a til une meilleure commande pour supprimer une ligne ? ou pb dans mon code ?
 
Merci à tous !


Message édité par GillooZ le 14-09-2006 à 11:27:52
mood
Publicité
Posté le 13-09-2006 à 14:29:47  profilanswer
 

n°1441969
Daranc
Posté le 13-09-2006 à 17:17:00  profilanswer
 

cpt=cpt+1
donc au départ de la procédure cpt=0 ?
ce cpt est il defini

n°1442010
seniorpapo​u
Posté le 13-09-2006 à 18:12:09  profilanswer
 

Bonsoir,  
je crois bien que pour supprimer des lignes il vaut mieux commencer la boucle par la fin, ce qui évite des pb de pointeurs.
galopin01 dixit
http://forum.hardware.fr/hardwaref [...] 4705-1.htm
Cordialement


Message édité par seniorpapou le 13-09-2006 à 18:18:41
n°1442042
galopin01
Posté le 13-09-2006 à 19:52:57  profilanswer
 

Je confirme !

n°1442168
GillooZ
un reportage de filip loulou
Posté le 14-09-2006 à 08:17:27  profilanswer
 

oki je vais inverser ma boucle et voir ce que ca donne :)

n°1442180
GillooZ
un reportage de filip loulou
Posté le 14-09-2006 à 09:07:35  profilanswer
 

j'ai inversé la boucle, j'ai initialisé mon cpt a mon nombre de ligne et j'ai mis comme condition d'arret  
Loop Until (cpt = 2)
 
Car je veux k'il lise jusk'a la ligne 3 mais des que je lance l'analyse excel me plante direct alors que ca marche tres bien sans le Rows(cpt).Delete
 
!!!

n°1442182
GillooZ
un reportage de filip loulou
Posté le 14-09-2006 à 09:09:32  profilanswer
 

quand je fais Rows(cpt).Delete, meme si je suis dans mon With pour bien travailler sur la bonne feuille, je ne dois pas mettre de précision sur la ligne ?

n°1442193
GillooZ
un reportage de filip loulou
Posté le 14-09-2006 à 09:22:21  profilanswer
 

j'ai fait une fonction a coté qui supprime juste une ligne et ca fonctionne correctement, mais pourquoi lors de mon analyse complete le pc se fige direct ?

n°1442196
seniorpapo​u
Posté le 14-09-2006 à 09:28:08  profilanswer
 

bonjour,
repostes ton code stp
Cordialement

n°1442199
GillooZ
un reportage de filip loulou
Posté le 14-09-2006 à 09:35:10  profilanswer
 

Do
  DateNow = CDate(.Range("A" & cpt))
  If (DateNow >= DateDebut) And (DateNow <= DateFin) Then
    For cptList = 0 To ListCli.ListCount - 1
        If ListCli.Selected(cptList) Then
            Cli = ListCli.Column(0, cptList)
            'boucle sur tous les clients selectionnés par l'utilisateur
            For cptListResp = 0 To ListBoxResp.ListCount - 1
                If ListBoxResp.Selected(cptListResp) Then
                    Resp = ListBoxResp.Column(0, cptListResp)
                    'boucle sur toutes les responsabilités choisies
                    For cptInc = 0 To ListBoxIncident.ListCount - 1
                        If ListBoxIncident.Selected(cptInc) Then
                            INC = ListBoxIncident.Column(0, cptInc)
                            'boucle sur toutes les numéros d'incidents choisis
                            For cptCat = 0 To ListBoxCat.ListCount - 1
                                If ListBoxCat.Selected(cptCat) Then
                                    Cat = ListBoxCat.Column(0, cptCat)
                                    'boucle sur toutes les catégories choisies
                                        If (.Range("B" & cpt).Value = Cli) And (.Range("X" & cpt).Value = Resp) And (.Range("D" & cpt).Value = INC) And (.Range("H" & cpt).Value = Cat) Then
                                            LigneValide = 1
                                            MsgBox cpt
                                        Else
                                            Rows(cpt).Delete
                                        End If
                                         
                                End If
                            Next cptCat
                        End If
                    Next cptInc
                End If
            Next cptListResp
        End If
    Next cptList
  End If
  cpt = cpt - 1
  LigneValide = 0
                     
             
             
             
             
             
             
             
             
Loop Until (cpt = 2)
 
voila, des que je lance mon analyse excel freeze direct ... juste pour les suppressions de ligne

mood
Publicité
Posté le 14-09-2006 à 09:35:10  profilanswer
 

n°1442202
GillooZ
un reportage de filip loulou
Posté le 14-09-2006 à 09:37:46  profilanswer
 

dans ce meme code j'ai remplacé ma suppression de ligne par rentrer "plouf" dans la cellule de la colonne A correspondant à la ligne et l'analyuse se fait en 2 sec ...

n°1442203
seniorpapo​u
Posté le 14-09-2006 à 09:42:17  profilanswer
 

Bonjour,
Je n'ai pas vu où tu mettais la valeur de départ de cpt?
@+

n°1442205
GillooZ
un reportage de filip loulou
Posté le 14-09-2006 à 09:44:54  profilanswer
 

yes j'ai trouvé ca sur le net :  
 
Range(i & ":" & i).EntireRow.Hidden = True
 
bon ok ca les supprime pas mais au moins ca marche !

n°1442207
GillooZ
un reportage de filip loulou
Posté le 14-09-2006 à 09:45:12  profilanswer
 

je l'initialise plus haut dans mon code tkt

n°1442209
GillooZ
un reportage de filip loulou
Posté le 14-09-2006 à 09:50:31  profilanswer
 

par contre comment on fait pour rafficher toutes les lignes masqués par la méthode que j'ai utilisé ?
 

n°1442217
seniorpapo​u
Posté le 14-09-2006 à 10:02:53  profilanswer
 

Re,
 
 
Cells.Select
    Selection.EntireRow.Hidden = False
 
pour le delete as-tu essayé   de mettre un point  :       .Rows(cpt).Delete  
puisque tu as un with
   
@+

Message cité 1 fois
Message édité par seniorpapou le 14-09-2006 à 10:04:56
n°1442224
GillooZ
un reportage de filip loulou
Posté le 14-09-2006 à 10:07:42  profilanswer
 

seniorpapou a écrit :

Re,
 
 
Cells.Select
    Selection.EntireRow.Hidden = False
 
pour le delete as-tu essayé   de mettre un point  :       .Rows(cpt).Delete  
puisque tu as un with
   
@+


 
ok merci je vais tenter ca


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Supprimer ligne Excel vba [résolu]

 

Sujets relatifs
[Batch Dos][Résolu] cacher l'invite de commandeTri auto de tableau excel
[Résolu]Se connecter à une interbase distante depuis PHP[Résolu] Casse tête de .dll
Donnees en colonnes dans le header excel[Résolu] Problème avec count et distinct
[Résolu] [SQL 2005] Copier les valeurs d'une table à une autre[résolu]Encodage de caractère
Editer,modifier et supprimer des enregistrements dans datagrid[Résolu][ASP.NET 2.0][C#] Plusieurs load pour une meme page
Plus de sujets relatifs à : Supprimer ligne Excel vba [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR