Supprimer ligne sous condition

Résolu
maggg
Messages postés
7
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
23 mai 2008
- 22 mai 2008 à 14:06
maggg
Messages postés
7
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
23 mai 2008
- 23 mai 2008 à 11:09
Bonjour,

Qui pourrait m'aider à faire une macro ?
J'ai un tableau où dans la colonne AI, j'ai une liste de code (10 codes différents).
Je ne veux garder que les lignes avec le code "1115", toutes les autres lignes doivent être effacées.

Pour effacer des lignes qui contiennent un code précis, j'utilise :
Dim J As Long
Dim Plage As Range
Set Plage = Range ("AI5", range("AI65536").End(xlup))
For J = Plage.Cells.Count To 1 Step -1
            If Plage.Cells(J).Value = "1115" Then
               Plage.Cells(J).EntireRow.Delete
            End If

Mais je ne sais pas comment formuler pour dire que le contenu de la cellule doit être différent de "1115" ?

Merci d'avance pour votre aide.

maggg

5 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
22 mai 2008 à 14:25
arf, suis allé trop vite :

<strike>If Plage.Cells(J).Value <> "1115" Then rows(J).Delete</strike>
If range("AI" & J).Value <> "1115" Then rows(J).Delete

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
3
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
22 mai 2008 à 15:30
ok, au cas où, avec mon code, ça aurait donné ca (une seule modif) :



Dim J As Long
Dim DerLigne As long
DerLigne = range("AI65536").End(xlup).row
For J = DerLigne To 4 Step -1
            If range("AI" & J).Value <> "1115" Then rows(J).Delete
next J

DerLigne contient le numéro de la dernière ligne utilisé de la colonne AI
@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
3
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
22 mai 2008 à 14:24
Dim J As Long
Dim DerLigne As long
DerLigne = range("AI65536").End(xlup).row
For J = DerLigne To 1 Step -1
            If Plage.Cells(J).Value <> "1115" Then rows(J).Delete
next J

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
maggg
Messages postés
7
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
23 mai 2008

22 mai 2008 à 15:26
Merci Mortalino,

En appliquant ta proposition, j'ai rencontré un petit souci parce que les 4 premières lignes du fichier sont des lignes titres qui ne doivent pas disparaître.
Et donc les cellules AI1, AI2, AI3 et AI4 ne contenant rien disparaissent également.
C'est pour cela qu'en mentionnant "Set Plage = Range ("AI5", range("AI65536").End(xlup))", je protégeais mes 4 premières lignes.

Donc en attendant, et n'ayant jamais travaillé avec DerLigne, pour avoir un résultat, j'ai adapté comme ceci :
Dim J As Long
        Dim Plage As Range
        Set Plage = Range("AI5", Range("AI65536").End(xlUp))
        For J = Plage.Cells.Count To 1 Step -1
            If Plage.Cells(J).Value <> "1115" Then
                Plage.Cells(J).EntireRow.Delete
            End If

Cela fonctionne parfaitement.

Merci pour ton aide

maggg
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maggg
Messages postés
7
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
23 mai 2008

23 mai 2008 à 11:09
Merci Mortalino
Super

maggg
0