{Résolu}Comparer deux colonnes dans deux fichiers différents - VB/VBA/VBS - Programmation
Marsh Posté le 30-05-2006 à 10:32:59
bah je pense que la meilleur solution est dutiliser la fonction find.
C comme si tu utiliser edition,rechercher dans excel, donc c tres rapide.
Tu aura juste a faire une boucle de 80 ligne de ton premier fichier.
voila ma fonction que l'utilise :
Sub rechcase(chaine As String)
On Error Resume Next
Set MotTrouvé = Cells.Find(What:=chaine, LookAt:=xlPart)
If Not MotTrouvé Is Nothing Then
MotTrouvé.Select
ActiveCell.Select
End If
End Sub
n'oublie pa d'ouvrir le bon classeur avant de lancer la fonction et fait tes operation "oui" "non" dans le if
Marsh Posté le 30-05-2006 à 11:39:34
Salut Bipbip et merci pour ton aide.
J'ai essayé ton code et il marche très bien pour une valeur, mais pour une boucle ça fonctionne pas totalement comme je voudrais :
Citation : |
Ca me met bien ce que je veux en rouge mais le "nb" n'est pas le nombre attendu, au lieu de me mettre le nombre de doublons trouvé, il met le nombre de lignes parcourues.
Comment elle fonctionne exactement cette garde? Si mon "mottrouvé" n'est pas nul, alors j'execute le code, c'est ça? Et comment faire justement si il ne trouve pas le doublons, je dois utiliser un Else?
PS : T'aurais pas une astuce pour la statusbar aussi ?
Marsh Posté le 30-05-2006 à 14:51:12
bon deja moi je debute en vba donc je suis pas un pro et ce code est un code que j'ai repris.
pour ton nb, je peut pa t'aider ca devré etre le bon nombre pourtant et oui il te faut un else pour le cas ou il trouve rien(si ta envi de faire quelquechose dans ce cas)
PS:euh...c koi la status bar?....bref aucune idée pour la derniere question aussi
Marsh Posté le 31-05-2006 à 09:39:37
C'est bon j'ai enfin fini mon programme. Et au final ça me donne ça :
Citation : |
Merci beaucoup BipBip pour ton aide, j'aurai pas trouvé cette methode "Find" sans toi.
Marsh Posté le 30-05-2006 à 09:56:35
Bonjour à tous, jusque là j'ai pu me débrouiller grâce à ce super forum mais maintenant j'ai réellement besoin de vous.
Je dois créer un programme qui me permettrait de retrouver le contenu d'une cellule d'un fichier, dans un autre fichier. C'est à dire parcourir toutes les lignes d'une colonne du premier fichier pour vérifier si une ou plusieurs de ces cellules se retrouvent dans le deuxième fichier. Si je trouve un doublons, je mets la lignes en rouge ou j'écris dans une autre colonne "Oui".
Pas de problèmes me diriez-vous mais mon problème est que mon premier fichier (que l'on appellera "Answer" ) contient 80 lignes et que mon deuxième ("Ttlcount" ) fait plus de 25500 lignes et mon programme devra tourner sur des fichier bien plus gros encore. J'ai quand même voulu essayer avec deux boucles (voir le code plus bas): dans une je prenais toutes les valeurs les une après les autres dans "Answer" et dans l'autre je les comparais dans toutes les cellules de la colonne du deuxième fichier. Mais le programme ne semble pas s'arretter. Pourtant j'ai fait plusieurs tests et il ne me semble pas que celà vienne d'une boucle infinie mais je peux me tromper.
Alors aujourd'hui je vous demande votre aide, s'il vous plaît, pour trouver un algo moins lourd pour la machine et adabtable à plusieurs fichiers (avec le même nom de feuille et la même structure mais pas les même donnée).
Si vous pouviez me donner une astuce pour créer une "Statusbar" pour montrer l'avancement de la recherche à l'utilisateur aussi ça serait sympa (j'ai pas fait d'userform par contre). Merci!
If noopenError = "True" Or noopenError2 = "True" Then
Dim z As Integer
Dim x As Integer
Dim i As Integer, a As Integer
a = 1
i = 1
w = Workbooks(fileName).Sheets(1).UsedRange.Rows.Count 'nb de lignes dans le Ttlcount
z = Workbooks(fileName2).Sheets("Rejected" ).UsedRange.Rows.Count 'nb de lignes ds le Answer
For a = 2 To z 'Balaie toutes les lignes du Answer
For i = 2 To w ' Balaie toutes les lignes du Ttlcount
If (Workbooks(fileName2).Sheets("Rejected" ).Range("R" & a) = Workbooks(fileName).Sheets(1).Range("R" & i)) Then
Workbooks(fileName2).Sheets("Rejected" ).Range("Z" & a) = "OUI"
i = w
Else
Workbooks(fileName2).Sheets("Rejected" ).Range("Z" & a) = "NON"
End If
Next i
Next a
End If
Message édité par Zephyron le 31-05-2006 à 14:22:58