Problème de suppression de lignes(Exxcel)
Résolu
BenGonGon
-
BenGonGon -
BenGonGon -
Bonjour,
J'ai un petit pépin avec une macro Excel (pour changer).
Pépin:
Je cherche une chaine de caractère dans une colonne.
Quand il la trouve, je demande de supprimer la ligne complète.
Tout se décale vers le haut.
Et il passe à la ligne suivante sans la tester.
J'ai résolu le problème en relançant la boucle tant qu' il trouve quelque chose à supprimer.
J'ai fait comme ça parce que je n'ai pas trouvé comment décrémenter mon "for each".
Mais maintenant ce tri me prend des plombes.
Code:
Dim pouet As Boolean
Dim tut As Range
pouet = True
Do While pouet
pouet = False
Columns("F:F").Select
For Each LaCase In Selection
If tut .Text <> ("Type de commande") Then
If tut .Text <> ("Sous-traitance") Then
If tut .Text <> ("") Then
tut .Value = tut .Row
Rows(tut .Row).Select
Selection.Delete Shift:=xlUp
pouet = True
End If
End If
End If
Next
Loop
Récapitulatif:
Une fois que le fou rire sera passé.
Si vous avez une piste pour résoudre mon pépin de temps.
Ce serais bien volontier.
Avec un grand merci à l'équipe de "Commentcamarche" et à toutes sympathique communauté.
BenGonGon
J'ai un petit pépin avec une macro Excel (pour changer).
Pépin:
Je cherche une chaine de caractère dans une colonne.
Quand il la trouve, je demande de supprimer la ligne complète.
Tout se décale vers le haut.
Et il passe à la ligne suivante sans la tester.
J'ai résolu le problème en relançant la boucle tant qu' il trouve quelque chose à supprimer.
J'ai fait comme ça parce que je n'ai pas trouvé comment décrémenter mon "for each".
Mais maintenant ce tri me prend des plombes.
Code:
Dim pouet As Boolean
Dim tut As Range
pouet = True
Do While pouet
pouet = False
Columns("F:F").Select
For Each LaCase In Selection
If tut .Text <> ("Type de commande") Then
If tut .Text <> ("Sous-traitance") Then
If tut .Text <> ("") Then
tut .Value = tut .Row
Rows(tut .Row).Select
Selection.Delete Shift:=xlUp
pouet = True
End If
End If
End If
Next
Loop
Récapitulatif:
Une fois que le fou rire sera passé.
Si vous avez une piste pour résoudre mon pépin de temps.
Ce serais bien volontier.
Avec un grand merci à l'équipe de "Commentcamarche" et à toutes sympathique communauté.
BenGonGon
Configuration: Windows Vista Internet Explorer 7.0 Excel 2003
4 réponses
-
Bonjour
Option Explicit Sub SuppressionLignes() Dim Feuille Dim NumLigne Set Feuille = ActiveSheet Feuille.Activate NumLigne = 1 Do If Feuille.Range("F" & NumLigne) <> "Type de commande" And Feuille.Range("F" & NumLigne) <> "Sous-traitance" And Feuille.Range("F" & NumLigne) <> "" Then Feuille.Rows(NumLigne).Delete Shift:=xlUp Else NumLigne = NumLigne + 1 End If Loop While NumLigne <= 65356 End Sub
Je préfère faire un do loop plutôt qu'un each pour pouvoir choisir de changer de ligne ou non. S'il y a une suppression, on teste la même ligne sinon, on descend.
Il faut 10-20 secondes pour faire tout le fichier.
-
Salut,
Vous n'avez que 2 chaines de caractères à "traiter"? Type de commande et sous-traitance?
Si c'est le cas essayez ceci :
Sauvegardez votre tableau car une fois qu'une macro est lancée on ne peux plus annuler!!!
ActiveSheet.Range("F1").Select 'sélectionne la 1ère cellule colonne F
Do While ActiveCell <> "" 'tant que la cellule n'est pas vide
If ActiveCell.Value = "Type de commande" Then 'si cellule = type de commande alors
ActiveCell.EntireRow.Delete 'supprimer la ligne entière
Else 'sinon
If ActiveCell.Value = "sous-traitance" Then 'si cellule = sous-traitance alors
ActiveCell.EntireRow.Delete ' supprimer la ligne entière
End If
End If
ActiveCell.Offset(1, 0).Select 'si cellule différent de type de commande et de sous-traitance passer à la suivante
Loop 'on recommence jusqu'à ce que mon tableau soit épuré de ce que je ne veux plus
ça doit être ça... -
Pardon !!! Ma macro supprime les lignes ou est indiqué sous traitance et Type de commande....
Suit les conseils de "leplot".
Encore désolé -
Pikaju,
Il me semblait bien que quelque chose dans ton code quelque chose clochait.
Mais ton temps de réponse, aimabilité et honneté fait que ton aide à été grandement apprécié.
leplot,
Un grand merci à toi, ta réponse est claire, efficace et élégante.
Tu viens de me retirer une jolie épine du pied.
Ce problème à été résolu avec une grande efficacité.
Encore une fois, Un grand MERCI à toutes la communauté "commentcamarche".
BenGonGon