Suppressions données

Fermé
Cabrina Messages postés 248 Date d'inscription samedi 5 avril 2008 Statut Membre Dernière intervention 13 mars 2024 - 8 févr. 2017 à 15:27
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 - 10 févr. 2017 à 17:29
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

2 réponses

yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
8 févr. 2017 à 19:50
bonsoir, 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?
0
Cabrina Messages postés 248 Date d'inscription samedi 5 avril 2008 Statut Membre Dernière intervention 13 mars 2024 6
8 févr. 2017 à 20:36
Oui c'est ça mais G2,G3, et/ou H2,H3
En fait c'est les références qui commence en M... que je veux supprimé de ma liste qui se trouve n colonne A
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
8 févr. 2017 à 22:07
je 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
0
Cabrina Messages postés 248 Date d'inscription samedi 5 avril 2008 Statut Membre Dernière intervention 13 mars 2024 6
9 févr. 2017 à 12:42
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.
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
9 févr. 2017 à 19:19
Pour é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
0
Cabrina Messages postés 248 Date d'inscription samedi 5 avril 2008 Statut Membre Dernière intervention 13 mars 2024 6 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
10 févr. 2017 à 14:25
Ca fonctionne... Merci beaucoup
Juste pour mon information personnel a quoi sert "Option Explicit" ?
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > Cabrina Messages postés 248 Date d'inscription samedi 5 avril 2008 Statut Membre Dernière intervention 13 mars 2024
10 févr. 2017 à 17:29
cela 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.
0