Macro pour comparer caractere dans deux cellules
tiotevero
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
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
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
-
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-
-
-
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 -
-