Vba : comparer 2 colonnes de 2 fichiers

bonzai7584 -  
Bidouilleu_R Messages postés 1209 Statut Membre -
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
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  2. bonzai7584
     
    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
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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