Macro pour comparer caractere dans deux cellules

tiotevero -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai une macro pour un fichier qui n'est pas très propre en fait, j'aimerais rajouter quelques lignes pour le nettoyer, et j'ai besoin de votre aide.

A1 : V53A B1 : V534
A2 : V21D B2 : V482
A3 : V21X B3 : V217

J'aimerais comparer les 3 premiers caractères des deux colonnes et si ils ne sont pas identiques, supprimer la ligne. Pour mon exemple, je supprimerai ligne 2.
Je pense à une fonction de comparaison dans une boucle pour passer toutes les lignes de mon fichier de 600k lignes mais je ne suis pas vraiment douée.

Pour info, les cellules commenceront toujours par un V.

Je remercie d'avance, ceux et celles qui auront des idées,

Véro

1 réponse

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    un exemple de code a mettre dans un module VBA

    Sub compare()
    'fige ecran pour gain temps execution
    Application.ScreenUpdating = False
    'nom de feuille a adapter
    With Worksheets("feuil1")
    ' derniere cellule non vide colonne A
    derlig = .Range("A" & Rows.Count).End(xlUp).Row
    'boucle de derniere ligne a 1
    For x = derlig To 1 Step -1
    'test si difference des 3 caracteres de gauche
    If Left(.Range("A" & x), 3) <> Left(.Range("B" & x), 3) Then
    'delete ligne
    .Rows(x).Delete
    End If
    Next x
    End With
    'defige ecran
    Application.ScreenUpdating = True
    End Sub
    0
    1. tiotevero
       
      Bonjour,

      Merci pour la macro qui est très commenté, ce qui est super plaisant à lire pour quelqu'un qui ne code pas.

      J'ai une erreur sur: la méthode Delete de la classe Range a échoué.

      Auriez-vous une idée ?

      EDIT: Ma plage etait sous forme de tableau

      Problème résolu !!

      Merci bien
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      pouvez-vous montrez le code svp
      0
    3. tiotevero
       
      Voici le code qui n'a pas bougé ou presque

      Sub compare_V53()
      'fige ecran pour gain temps execution
      Application.ScreenUpdating = False
      'nom de feuille a adapter
      With Worksheets("IP_CF")
      ' derniere cellule non vide colonne A
      derlig = .Range("A" & Rows.Count).End(xlUp).Row
      'boucle de derniere ligne a 1
      For X = derlig To 2 Step -1
      'test si difference des 3 caracteres de gauche
      If Left(.Range("A" & X), 3) <> Left(.Range("B" & X), 3) Then
      'delete ligne
      .Rows(X).Delete
      End If
      Next X
      End With
      'defige ecran
      Application.ScreenUpdating = True

      End Sub
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      Sur quelle ligne est l'erreur ????

      Quand vous avez l'erreur, clic sur debugage, placez le curseur souris sur derlig et rendez compte

      votre tableau commence bien en colonne A ???

      A+
      0