Bonjour,
Je souhaite supprimer dans une feuille 1, des lignes dont une des cellules, ex dans colonne "c" ne contient pas une valeur listés dans la colonne "A" de la feuille 2.
Merci pour votre aide.
Bonjour,
Je souhaite supprimer dans une feuille 1, des lignes dont une des cellules, ex dans colonne "c" ne contient pas une valeur listés dans la colonne "A" de la feuille 2.
Merci pour votre aide.
Si C1 de la feuille 1 est différent de A1 de la feuille 2 alors supprimer la ligne 1 de la feuille 1 ?
Ou alors
Si C1 de la feuille 1 n'est pas dans la colonne A de la feuille 2 alors supprimer ?
Dans les deux cas, une boucle en partant de la dernière ligne un if et le tour est joué
C'est le deuxième cas.
J'utilise la macro suivante pour supprimer une ligne dont la cellule dans la colonne "c" est à zéro, par contre je ne sais pas comment remplacer le 0 par la liste contenu dans la colonne "a" de la feuille 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub Macro1() ' Suppression 0 Sheets("feuille 1").Select Dim n As Integer Application.ScreenUpdating = False For n = Range("G65536").End(xlUp).Row To 1 Step -1 If ((Range("A" & n) = 0)) Then Rows(n).Delete End If Next n End Sub
Au vu de ton niveau je te propose un code que tu pourras comprendre, il serait bien plus simple de faire un find...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Sub Macro1() Dim i As Integer Application.ScreenUpdating = False deleter = True With Sheets("feuille 1") For i = Range("C" & .Rows.Count).End(xlUp).Row To 1 Step -1 For j = 1 To Sheets("feuille 2").Range("A" & .Rows.Count).End(xlUp).Row If .Range("C" & i) = Sheets("feuille 2").Range("A" & j) Then deleter = False End If Next j If deleter = True Then .Rows(i).Delete End If deleter = True Next i End With Application.ScreenUpdating = True End Sub
Comme tu as pu le constater, je débute dans ce domaine.
Effectivement, la macro que tu as fait fonctionne parfaitement.
Encore merci
Bonjour,
un peu en retard, voici une alternative à la double boucle et à la méthode Find :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub DeleteRows() With Feuil2 SRC = Application.Transpose(.Range("A1", .Cells(.Rows.Count, 1).End(xlUp)).Value) End With With Feuil1 Application.ScreenUpdating = False AR = .Range("C1", .Cells(.Rows.Count, 3).End(xlUp)).Value For R& = UBound(AR) To 1 Step -1 If AR(R, 1) > "" Then _ If IsError(Application.Match(AR(R, 1), SRC, 0)) Then .Rows(R).Delete Next Application.ScreenUpdating = True End With End Sub__________________________________________________________________________________________
Merci de cliquer surpour chaque message ayant aidé dans cette discussion …
Partager