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
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
A voir également:
- Vba : comparer 2 colonnes de 2 fichiers
- Incompatibilité de type vba ✓ - Forum Programmation
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba dernière colonne non vide ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
3 réponses
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
288
25 nov. 2008 à 12:05
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
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
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
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
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
288
28 nov. 2008 à 15:44
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+
puis bonne chance pour tes macros et tes petits arbres : )
A+