Suppressions données

Cabrina Messages postés 273 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. Cabrina Messages postés 273 Statut Membre 8
       
      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
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. Cabrina Messages postés 273 Statut Membre 8
       
      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
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
      1. Cabrina Messages postés 273 Statut Membre 8 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Ca fonctionne... Merci beaucoup
        Juste pour mon information personnel a quoi sert "Option Explicit" ?
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Cabrina Messages postés 273 Statut Membre
         
        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