nhanvin
Messages postés6Date d'inscriptionlundi 26 novembre 2007StatutMembreDernière intervention27 juillet 2011
-
25 juil. 2011 à 13:56
NHenry
Messages postés15069Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 mai 2023
-
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
NHenry
Messages postés15069Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 mai 2023158 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.
NHenry
Messages postés15069Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 mai 2023158 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.