Suppressions données
Bonjour,
Je voudrais savoir s’il y a un moyen de supprimer les références qu’il y a dans mes lignes 2 et 3 (à partir de ma colonne G)
Il faudrait que j’arrive à les supprimer dans ma colonne A.
Sachant que je peux en avoir plus que ce qu’il y a actuellement et qu’il me faut pas que cela me mettre une erreur s’il n’y a rien.
Ci joint mon fichier:
https://www.cjoint.com/c/GBioBvr0oGi
Merci d'avance
Je voudrais savoir s’il y a un moyen de supprimer les références qu’il y a dans mes lignes 2 et 3 (à partir de ma colonne G)
Il faudrait que j’arrive à les supprimer dans ma colonne A.
Sachant que je peux en avoir plus que ce qu’il y a actuellement et qu’il me faut pas que cela me mettre une erreur s’il n’y a rien.
Ci joint mon fichier:
https://www.cjoint.com/c/GBioBvr0oGi
Merci d'avance
2 réponses
-
Contributeurbonsoir, tu veux supprimer les lignes dont le contenu de la colonne 1 est identique à la valeur d'une des cellules du rectangle dont le coin supérieur gauche est en G2?
-
Contributeurje propose ceci:
Option Explicit Sub eliminate() Dim nlig As Long, ncol As Long Dim elim As Scripting.Dictionary Set elim = New Scripting.Dictionary nlig = 2 Do While Cells(nlig, 7) <> "" ncol = 7 Do While Cells(nlig, ncol) <> "" Call elim.Add(Cells(nlig, ncol).Value, "") ncol = ncol + 1 Loop nlig = nlig + 1 Loop nlig = 5 Do While Cells(nlig, 1) <> "" If elim.Exists(Cells(nlig, 1).Value) Then Rows(nlig).EntireRow.Delete Else nlig = nlig + 1 End If Loop End Sub-
Bonjour,
J'ai fait la macro comme indiqué ci-dessus mais quand je veux l'activer j'ai :Sub eliminate()
Qui se met en jaune et :elim As Scripting.Dictionary
Qui se surligne également.
J'ai également une petite question car j'aurai cette "procédure" à faire sur plusieurs onglets d'un même fichier, je ne vois pas le nom de l'onglet ? Comment la macro sait ou aller supprimer ?
Merci pour votre aide. -
ContributeurPour éviter l'erreur, il faut, dans l'utilitaire VBA (celui qui te montre l'erreur en jaune), dans le menu outils, choix references, cocher "microsoft scripting runtime".
En ce qui concerne le nom de l'onglet, voici une macro améliorée où tu peux contrôler le nom de l'onglet:Option Explicit Sub eliminate() Dim rectangle As Range Dim nlig As Long, ncol As Long Dim wk As Worksheet Dim elim As Scripting.Dictionary Set elim = New Scripting.Dictionary Set wk = ThisWorkbook.Sheets("IP sur OF composants") nlig = 2 Do While wk.Cells(nlig, 7) <> "" ncol = 7 Do While wk.Cells(nlig, ncol) <> "" Call elim.Add(wk.Cells(nlig, ncol).Value, "") ncol = ncol + 1 Loop nlig = nlig + 1 Loop nlig = 5 Do While wk.Cells(nlig, 1) <> "" If elim.Exists(wk.Cells(nlig, 1).Value) Then wk.Rows(nlig).EntireRow.Delete Else nlig = nlig + 1 End If Loop End Sub -
@yg_beCa fonctionne... Merci beaucoup
Juste pour mon information personnel a quoi sert "Option Explicit" ? -
Contributeur@Cabrinacela sert à forcer la déclaration des variables (via
Dim
).
je remarque que la variable rectangle n'est pas utilisée, tu peux supprimer la ligne qui la déclare.
-