Matcher champs
Fermé
djul_87
Messages postés
6
Date d'inscription
lundi 22 septembre 2014
Statut
Membre
Dernière intervention
22 septembre 2014
-
22 sept. 2014 à 14:37
via55 Messages postés 14474 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 19 septembre 2024 - 22 sept. 2014 à 21:01
via55 Messages postés 14474 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 19 septembre 2024 - 22 sept. 2014 à 21:01
5 réponses
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
22 sept. 2014 à 14:40
22 sept. 2014 à 14:40
Qu'est-ce que vous entendez par matcher ?
djul_87
Messages postés
6
Date d'inscription
lundi 22 septembre 2014
Statut
Membre
Dernière intervention
22 septembre 2014
22 sept. 2014 à 14:52
22 sept. 2014 à 14:52
si REFERENCE et COULEUR sur le classeur1 sont identiques à REFERENCE et COULEUR du classeur2, alors ID du classeur2 est égal à ID du classeur1.
Sachant que comme dans l'exemple, il n'y a pas le même nombre de ligne dans les 2 classeurs.
Sachant que comme dans l'exemple, il n'y a pas le même nombre de ligne dans les 2 classeurs.
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
22 sept. 2014 à 15:01
22 sept. 2014 à 15:01
Pas très compliquer j'aurai juste besoin des nom exacte des deux classeurs, stp.
djul_87
Messages postés
6
Date d'inscription
lundi 22 septembre 2014
Statut
Membre
Dernière intervention
22 septembre 2014
22 sept. 2014 à 15:12
22 sept. 2014 à 15:12
Grand merci pour ton aide.
Ce sont des exemples mais disons classeur1 / feuille1 et classeur2 / feuille1
Le champ ID à remplir étant dans classeur2 / feuille1
Ce sont des exemples mais disons classeur1 / feuille1 et classeur2 / feuille1
Le champ ID à remplir étant dans classeur2 / feuille1
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
22 sept. 2014 à 15:20
22 sept. 2014 à 15:20
Avec les deux classeur ouvert avec les noms de classeur et les noms de feuille strictement identique au code :
Soit :
1er classeur : classeur1.xlsm
1ère feuille : feuille1
2e classeur : classeur2.xlsm
2e feuille : feuille1
Vous copier celui dans un "Module1" de l'un des deux classeur et vous lancer la macro analyser.
Si vous ne savez pas comment faire je peux vous expliquer
Redites moi si vous avez des question !
Soit :
1er classeur : classeur1.xlsm
1ère feuille : feuille1
2e classeur : classeur2.xlsm
2e feuille : feuille1
Vous copier celui dans un "Module1" de l'un des deux classeur et vous lancer la macro analyser.
Si vous ne savez pas comment faire je peux vous expliquer
Sub Analyser() For L = 1 To Compter(Workbooks("classeur1.xlsm")) For LL = 1 To Compter(Workbooks("classeur2.xlsm")) If Workbooks("classeur1.xlsm").Sheets("feuille1").Cells(L, 2).Value = Workbooks("classeur2.xlsm").Sheets("feuille1").Cells(L, 1).Value And Workbooks("classeur1.xlsm").Sheets("feuille1").Cells(L, 3).Value = Workbooks("classeur2.xlsm").Sheets("feuille1").Cells(L, 2).Value Then Workbooks("classeur2.xlsm").Sheets("feuille1").Cells(L, 3).Value = Workbooks("classeur2.xlsm").Sheets("feuille1").Cells(L, 1).Value End If Next Next End Sub Function Compter(classeur As Workbook) As Integer Dim Compteur As Integer Compteur = 0 Dim L As Integer L = 1 Do While classeur.Sheets("feuille1").Cells(L, 1).Value <> "" L = L + 1 Loop Compter = L - 1 End Function
Redites moi si vous avez des question !
djul_87
Messages postés
6
Date d'inscription
lundi 22 septembre 2014
Statut
Membre
Dernière intervention
22 septembre 2014
22 sept. 2014 à 16:04
22 sept. 2014 à 16:04
Bon nous avons adapté le code à notre situation, enregistré le classeur pour la prise en charge des macros etc, lancé le code, et là rien ne se passe. Voici le code adapté :
Sub Analyser()
For L = 1 To Compter(Workbooks("test_macro.xlsm"))
For LL = 1 To Compter(Workbooks("test_macro.xlsm"))
If Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 4).Value = Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 7).Value And Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 6).Value = Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 11).Value Then
Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 1).Value = Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 1).Value
End If
Next
Next
End Sub
Function Compter(classeur As Workbook) As Integer
Dim Compteur As Integer
Compteur = 0
Dim L As Integer
L = 1
Do While classeur.Sheets("Feuil1").Cells(L, 1).Value <> ""
L = L + 1
Loop
Compter = L - 1
End Function
pouvez-vous confirmer que ("test_macro.xlsm").Sheets("Feuil1").Cells(L, 4).value désigne bien la colonne D à l'index de ligne L? si c'est bien ça alors les références de nos valeurs sont bonnes et que rien ne soit écrit est très curieux, n'est-ce pas?
En tout cas merci pour le coup de main/pouce
Sub Analyser()
For L = 1 To Compter(Workbooks("test_macro.xlsm"))
For LL = 1 To Compter(Workbooks("test_macro.xlsm"))
If Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 4).Value = Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 7).Value And Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 6).Value = Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 11).Value Then
Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 1).Value = Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 1).Value
End If
Next
Next
End Sub
Function Compter(classeur As Workbook) As Integer
Dim Compteur As Integer
Compteur = 0
Dim L As Integer
L = 1
Do While classeur.Sheets("Feuil1").Cells(L, 1).Value <> ""
L = L + 1
Loop
Compter = L - 1
End Function
pouvez-vous confirmer que ("test_macro.xlsm").Sheets("Feuil1").Cells(L, 4).value désigne bien la colonne D à l'index de ligne L? si c'est bien ça alors les références de nos valeurs sont bonnes et que rien ne soit écrit est très curieux, n'est-ce pas?
En tout cas merci pour le coup de main/pouce
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
22 sept. 2014 à 16:15
22 sept. 2014 à 16:15
L représente la Ligne en coure dans la boucle for du 1er classeur
LL représente la ligne en coure dans la boucle for du 2e classeur
Mon erreur est toute bête voici la correction :
Essayer comme ça mais sans votre classeur il est difficile pour moi d'être sûr que ça soit juste.
Si vous voulez vous pouvez me transmettre des copies anonymisé de votre classeur via cjoint.com
LL représente la ligne en coure dans la boucle for du 2e classeur
Mon erreur est toute bête voici la correction :
Sub Analyser() For L = 1 To Compter(Workbooks("test_macro.xlsm").Sheets("Feuil1")) For LL = 1 To Compter(Workbooks("test_macro.xlsm").Sheets("Feuil2")) If Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 4).Value = Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(LL, 7).Value And Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(L, 6).Value = Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(LL, 11).Value Then Workbooks("test_macro.xlsm").Sheets("Feuil2").Cells(L, 1).Value = Workbooks("test_macro.xlsm").Sheets("Feuil1").Cells(LL, 1).Value End If Next Next End Sub Function Compter(feuille As sheets) As Integer Dim Compteur As Integer Compteur = 0 Dim L As Integer L = 1 Do While feuille.Cells(L, 1).Value <> "" L = L + 1 Loop Compter = L - 1 End Function
Essayer comme ça mais sans votre classeur il est difficile pour moi d'être sûr que ça soit juste.
Si vous voulez vous pouvez me transmettre des copies anonymisé de votre classeur via cjoint.com
djul_87
Messages postés
6
Date d'inscription
lundi 22 septembre 2014
Statut
Membre
Dernière intervention
22 septembre 2014
22 sept. 2014 à 16:21
22 sept. 2014 à 16:21
erreur d'Exécution '13' : Incompatibilité de type
donc débogage
"For L = 1 To Compter(Workbooks("test_macro.xlsm").Sheets("Feuil1"))" apparaît en surbrillance
donc débogage
"For L = 1 To Compter(Workbooks("test_macro.xlsm").Sheets("Feuil1"))" apparaît en surbrillance
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
22 sept. 2014 à 16:52
22 sept. 2014 à 16:52
Faite une copie de vos classeur avec juste les entêtes de vos données et envoyer les moi via cjoint.com ça sera plus facile ;)
djul_87
Messages postés
6
Date d'inscription
lundi 22 septembre 2014
Statut
Membre
Dernière intervention
22 septembre 2014
22 sept. 2014 à 15:18
22 sept. 2014 à 15:18
Faire correspondre
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
via55
Messages postés
14474
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
19 septembre 2024
2 728
22 sept. 2014 à 21:01
22 sept. 2014 à 21:01
Bonsoir
Une autre possibilté sans macro, par formule matricielle :
https://www.cjoint.com/?0IwvdGKFDI9
Cdlmnt
Une autre possibilté sans macro, par formule matricielle :
https://www.cjoint.com/?0IwvdGKFDI9
Cdlmnt