Code pour supprimer des lignes qui bug

nhanvin Messages postés 6 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 27 juillet 2011 - 25 juil. 2011 à 13:56
NHenry Messages postés 15137 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 23 juin 2024 - 26 juil. 2011 à 21:00
Bonjour à tous,

Je souhaite supprimer toutes le lignes d'un tableau dont la colonne D a une valeur qui ne commence pas par
602,611,613,615,616,618,621,62,681. Le tableau commence en A1 et fini en S.

Voici ce que j'ai fait:


Sub Suppression1()

Range([A1], [R1].End(xdown)) As Range
Dim x As Variant, r As Long, c As Long, g As Long
x = Range("d1", Cells(Rows.Count, "d").End(xdown))
For r = 1 To UBound(x, 1)
For c = 1 To UBound(x, 2)
For g = 1 To UBound(x, 3)
If Left(x(r, c, g), 3) <> 606 Then
If Left(x(r, c, g), 3) <> 611 Then
If Left(x(r, c, g), 3) <> 613 Then
If Left(x(r, c, g), 3) <> 616 Then
If Left(x(r, c, g), 3) <> 618 Then
If Left(x(r, c), 2) <> 62 Then
If Left(x(r, c, g), 3) <> 681 Then
Rows.Delete
ligne = ligne - 1
End If
End Sub

3 réponses

NHenry Messages postés 15137 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 23 juin 2024 159
25 juil. 2011 à 21:55
Bonjour,

Quand tu travailles sur des chaines, mets toujours un $ (VB6 et VBA seulement) et mets des quotes, car sinon, ça oblige VB à caster la valeur à chaque fois et ralenti ton programme
If Left$(...,3)="606" Then

Tu répètes plusieurs fois :
x(r, c, g)
Stocke la valeur dans une variable temporaire, ce serait plus rapide et plus simple.

Donnes des noms explicites à tes variables ce sera plus simple à comprendre

Quand tu postes un code, utilises la coloration syntaxique (3ième icône en partant de la droite )

Je vois 7 If, mais un seul End If.
Renseignes-toi sur l'opérateur Or.

Mon site
0
nhanvin Messages postés 6 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 27 juillet 2011
25 juil. 2011 à 22:55
Bonsoir Nhenry,

Merci de ton commentaire. J'ai recherché des info et tenté de modifier la syntaxe mais ça ne marche pas.

J'ai pas touché à VBA depuis 2007 et c'est pas comme le vélo :)

Il faudrait que je change carrément la structure.

c'est la galère. Je vais continuer à chercher mais si tu as une idée je suis preneur.

Merci d'avance
Vinh
0
NHenry Messages postés 15137 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 23 juin 2024 159
26 juil. 2011 à 21:00
Bonjour,

Tu peux aussi faire un tableau, ensuite, tu passes chaque éléments en revue et si l'un d'eux correspond, tu mets un booléen à True et cela t'indiquera qu'il ne faut pas supprimer la ligne.

Je pense que ce n'est pas le Or qu'il te faut, mais un And.

Mon site
0
Rejoignez-nous