Macro pour comparer caractere dans deux cellules

Fermé
tiotevero - 21 févr. 2014 à 10:22
f894009 Messages postés 17213 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 25 décembre 2024 - 21 févr. 2014 à 12:30
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 17213 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 25 décembre 2024 1 711
21 févr. 2014 à 10:35
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
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 17213 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 25 décembre 2024 1 711
21 févr. 2014 à 12:03
pouvez-vous montrez le code svp
0
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 17213 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 25 décembre 2024 1 711
Modifié par f894009 le 21/02/2014 à 13:29
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