Vba : comparer 2 colonnes de 2 fichiers

Fermé
bonzai7584 - 24 nov. 2008 à 18:06
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
- 28 nov. 2008 à 15:44
Bonjour,

Je cherche à comparer les données d'une colonne (colonne D dont le nombre de ligne i variable) pour voir si elles font bien parties d'une autre source (dans ce script c'est sur la colonne O).
J'ai réussi à programmer quelques chose, cela fonctionne mais avec des colonnes sur le même onglet.

Quand je cherche à déplacer la source vers un autre fichier (la colonne O vers un autre fichier Fichier2.xls) je n'y arrive plus. La fonction find ne suit plus. Pouvez-vous svp m'aider ?

Je serai vraiment soulagée...


Sub vérif()
'
'Vérification des centres

Dim i As Integer
Dim Mavaleur As String

Sheets("Base").Select
n = ActiveSheet.UsedRange.Rows.Count

For i = 2 To n

Mavaleur = Range("D" & i)

Set c = Range("O3:O" & Range("O65000").End(xlDown).Row).Find(Mavaleur, LookIn:=xlValues, lookat:=xlWhole)

If Not c Is Nothing Then

Sheets("Base").Range("M" & i) = "centre OK"

Else

Sheets("Base").Range("M" & i) = "centre pas OK"

End If
Next

End Sub



Je voudrais que le set c puisse aller chercher sur classeur 2, mais
Set c = Windows("classeur2.xls).Sheets("liste").Range("A1:A" & Range("A65000").End(xlDown).Row).Find(Mavaleur, LookIn:=xlValues, lookat:=xlWhole) ne fonctionne pas...

Merci d'avance

3 réponses

Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
272
25 nov. 2008 à 12:05
voilà un code qui va t'aider


analyse et adapte
' j'ai déplacé la fonction dans une procedure
et la variable trouve dis si tu trouve ou pas.

tiens moi aucourant



Public Trouve As Boolean
Public Nom1 As String
Public Nom2 As String

Sub essai()

Dim i As Integer
Dim Mavaleur As String
Dim N As Integer

'j'ouvre les deux classeur

Nom1 = ThisWorkbook.Name 'Fichier1.xls

Workbooks.Open Filename:= _
"C:\DATA\Works_In_Progress\Informatique\Roger\Fichier2.xls"
Nom2 = ActiveWorkbook.Name ' fichier2.xls
Windows(Nom1).Activate

'Vérification des centres



Sheets("Base").Select
N = ActiveSheet.UsedRange.Rows.Count

For i = 2 To N

Mavaleur = Range("D" & i)
Trouve = False
If Mavaleur <> "" Then

Trouve_La_Valeur Mavaleur



If Trouve Then
' on a trouvé
Sheets("Base").Range("M" & i) = "centre OK"

Else
' on a rien trouvé
Sheets("Base").Range("M" & i) = "centre pas OK"

End If



End If


Next

'fermer le classeur pour éviter l'erreur s'il est déjà ouvert

Workbooks(Nom2).Close




End Sub




Sub Trouve_La_Valeur(Val_c)
Windows(Nom1).Activate
Sheets("base").Select
Range("C2").Select
Application.ScreenUpdating = False

With Worksheets("base").Range("O2:O" & N + 1)
Set Ce = .Find(Val_c, LookIn:=xlValues) ' trouve Le_Global_Code
If Not Ce Is Nothing Then

Trouve = True

End If
End With
If Not Trouve Then
' on cherche sur l'autre classeur
Windows(Nom2).Activate
Nlig = Range("A1").CurrentRegion.Rows.Count ' la plage de la feuille liste
With Worksheets("Liste").Range("A2:A" & Nlig + 1)
Set Ce = .Find(Val_c, LookIn:=xlValues) ' trouve La valeur fichier2
If Not Ce Is Nothing Then

Trouve = True
End If
End With
End If
Windows(Nom1).Activate


End Sub
0
Merci beaucoup ! Désolée, j'ai mis un peu de temps à répondre car je devais finir cette marco et d'autres en même temps.

Cela fonctionne bien sur une petite sélection. J'ai du alléger le code car ma macro beuguait avec 30 000 lignes à vérifier..J'ai fait un copy/paste sur un onglet intermédiaire pour éviter que le traitement soit obligé d'aller piocher dans un autre fichier.


Merci encore !
Bonzai
0
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
272
28 nov. 2008 à 15:44
ben n'oublie pas de mettre en résolu si cela te convient

puis bonne chance pour tes macros et tes petits arbres : )
A+
0