VBA Excel macro

Résolu
olive60 Messages postés 253 Date d'inscription   Statut Membre Dernière intervention   -  
olive60 Messages postés 253 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

En colonne C, j'ai une liste de nom.

En cellule B1, j'ai une liste déroulante avec des noms.

Je souhaite que quand je sélectionne un nom en B1, toutes les lignes dont le nom en colonne C ne correspond pas au nom choisi dans B1 soient effacées.

Le souci est que mon code fonctionne "à moitié". En effet, il faut que je le relance plusieurs fois pour qu'il efface toutes les lignes pertinentes. si je ne lance qu'une fois il y a des "oublis".

Bizarre non?

Voici mon code:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

Dim ligne As Long

If MsgBox("Did you choose the right Member? Click YES only if you are sure of it." & Chr(10) & Chr(10) & "Other Projects not associated to you Member name will be definitively deleted", vbOKCancel, "JOINT") = vbCancel Then GoTo EXITER

For ligne = 3 To 1400

If Range("c" & ligne).Value <> Range("B1").Value And Range("c" & ligne).Value <> "" Then Range("c" & ligne).EntireRow.Delete

Next ligne

EXITER:
Application.EnableEvents = True
End Sub
A voir également:

3 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Re-
Fait ta boucle à l'envers :
For ligne = 1400 to 3 step -1
Quand on supprime des lignes, mieux vaux procéder comme cela pour qu'excel n'en loupe pas une au passage. En effet, la suppression fait remonter tes données...
1
athizy Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne suis pas un pro d'excel mais à ta place j'utiliserai quelque chose comme ça :

If Cells(i, 3).Value = "B1" Then...

Bon courage
0
olive60 Messages postés 253 Date d'inscription   Statut Membre Dernière intervention   27
 
Ouiii merci Pikaju!

bonne soirée merci encore!
0