Faire une boucle plus simple

Résolu
pegou Messages postés 13 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 17 juillet 2008 - 1 juil. 2008 à 08:00
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 2 juil. 2008 à 11:18
bonjour,

j'ai une petite boucle qui fonctionne mais pas parfaite en terme de programmation

pouvez vous me dire ce que vous en pensez

    Range("B1").Select
    y = 1
    Do
20  If Cells(y, 2).Value = "A" Then GoTo 10
    Cells(y, 2).Select
    Rows(ActiveCell.Row).Select
    Selection.Delete
    GoTo 20
10  y = y + 1
    Loop Until Cells(y, 2) = ""

merci de vos remarques

bye - bye  [Insert_Emoticon('/imgs2/smile_wink.gif'); ]

4 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
1 juil. 2008 à 08:48
salut,

plus rapide :

Dim oRange as range

for each oRange in Range("B1:B" & Range("B1").End(xlDown).Row)
    If oRange.Value <> "A" then Rows(oRange.Row).Delete
next oRange
~
<small>Mortalino ~ [code.aspx?ID=39466 Colorisation
automatique]</small>

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
3
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
1 juil. 2008 à 08:14
Je suis pas trop sur mais ceci ne serait-il pas mieux :

    Do
        If Cells(y, 2).Value = "A" Then
            y = y + 1
        Else
            Cells(y, 2).Select
            Rows(ActiveCell.Row).Select
            Selection.Delete
        End If
    Loop Until Cells(y, 2) = ""

Bonne prog
++
0
pegou Messages postés 13 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 17 juillet 2008
2 juil. 2008 à 11:12
merci à vous deux

mortalito : ta macro fontionne mais il faut la lancer plusieurs fois mais je suis dessus....

bye - bye  [Insert_Emoticon('/imgs2/smile_wink.gif'); ]
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 juil. 2008 à 11:18
Exact, vu qu'il y a suppression de lignes, il faut partir d'en bas et remonter :

Dim i As Integer

For i = Range("B1").End(xlDown).Row To 1 Step -1
    If Cells(i, 2).Value <> "A" Then Rows(i).Delete
Next i
~
<small>Mortalino ~ [code.aspx?ID=39466 Colorisation
automatique]</small>

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
Rejoignez-nous