Macro pour comparer caractere dans deux cellules

tiotevero -  
f894009 Messages postés 17414 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

A voir également:

1 réponse

f894009 Messages postés 17414 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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
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
f894009 Messages postés 17414 Date d'inscription   Statut Membre Dernière intervention   1 715
 
pouvez-vous montrez le code svp
0
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
f894009 Messages postés 17414 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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