Excel 2007 VBA: RechercheV
Résolu/Fermé
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
-
Modifié par Eaheru le 25/08/2010 à 09:59
Eaheru Messages postés 197 Date d'inscription mercredi 23 juin 2010 Statut Membre Dernière intervention 12 mars 2018 - 25 août 2010 à 16:07
Eaheru Messages postés 197 Date d'inscription mercredi 23 juin 2010 Statut Membre Dernière intervention 12 mars 2018 - 25 août 2010 à 16:07
A voir également:
- Excel 2007 VBA: RechercheV
- Liste déroulante excel - Guide
- Save as pdf office 2007 - Télécharger - Bureautique
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
6 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
Modifié par Polux31 le 25/08/2010 à 11:49
Modifié par Polux31 le 25/08/2010 à 11:49
Bonjour,
Un petit exemple à adapter:
;o)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Un petit exemple à adapter:
Private Const fich2 = "D:\CCM\temp\data\test2" Sub searchDonnees() Dim wk2 As Workbook Dim ws1 As Worksheet Dim ws2 As Worksheet Dim derlig1 As Long Dim derlig2 As Long Dim cel1 Dim cel2 Set wk2 = Workbooks.Open(fich2) Set ws2 = wk2.Worksheets(1) derlig2 = ws2.Range("N65536").End(xlUp).Row Set ws1 = ThisWorkbook.Worksheets(1) derlig1 = ws1.Range("BK65536").End(xlUp).Row For Each cel1 In ws1.Range("BK2:BK" & derlig1) For Each cel2 In ws2.Range("N2:N" & derlig2) If cel1.Value = cel2.Value Then ws1.Range("BN" & cel1.Row).Value = ws2.Range("L" & cel2.Row).Value End If Next cel2 Next cel1 Set wk2 = Nothing Set ws2 = Nothing Set ws1 = Nothing End Sub
;o)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
20
25 août 2010 à 10:37
25 août 2010 à 10:37
Pour simplifier, je vais copier la feuil1 de chaque fichier dans un troisième fichier.
Ainsi, la rechercheV ne se fera qu'entre la feuil1 et la Feuil2 du meme fichier.
quelqu'un a une idée sur la fonction de recherche ?
Ainsi, la rechercheV ne se fera qu'entre la feuil1 et la Feuil2 du meme fichier.
quelqu'un a une idée sur la fonction de recherche ?
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
20
25 août 2010 à 13:52
25 août 2010 à 13:52
Merci Polux,
Je teste ça et je t'informe du résultat.
Je teste ça et je t'informe du résultat.
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
20
25 août 2010 à 14:47
25 août 2010 à 14:47
Alors, voila le résultat :
J'ai inséré cette macro dans un module et je l'appelle après la création du nouveau fichier contenant les 2 onglets à traiter.
J'ai modifié le chemin + fichier pour l'expression "Private Const fich2"
Et après l'exécution de la macro de creation du fichier, plus rien ne se passe.
Je dois donc rater quelque chose quelque part, mais je ne vois pas quoi ... :/
J'ai inséré cette macro dans un module et je l'appelle après la création du nouveau fichier contenant les 2 onglets à traiter.
J'ai modifié le chemin + fichier pour l'expression "Private Const fich2"
Et après l'exécution de la macro de creation du fichier, plus rien ne se passe.
Je dois donc rater quelque chose quelque part, mais je ne vois pas quoi ... :/
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
25 août 2010 à 15:00
25 août 2010 à 15:00
Dans l'exemple que j'ai donné, la procédure est dans le fichier supposé être "test1".
Si la macro est dans un classeur tiers, il faut ajouter ceci dans la procédure :
et remplacer :
par
Dis moi si c'est ça.
;o)
Si la macro est dans un classeur tiers, il faut ajouter ceci dans la procédure :
Private Const fich1 = "C:\temp\data\test1.xls" ... ... Dim wk1 As Workbook ... Set wk1 = Workbooks.open(fich1) ....
et remplacer :
Set ws1 = ThisWorkbook.Worksheets(1)
par
Set ws1 = wk1.Worksheets(1)
Dis moi si c'est ça.
;o)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
20
25 août 2010 à 15:44
25 août 2010 à 15:44
Encore merci de ce retour rapide.
Je viens de tester, il se passe 1 ou 2s ou on a l'impression que ça travaille, mais au final rien n'est fait.
Je te donne le contexte :
j'ai un fichier tiers qui se nomme "rechercheV.xlsm" dans lequel je travaille sur cette macro.
le déroulé est comme suit :
- Ouvrir le fichier "test1" et le sauvegarder en fichier "test3"
- Ajouter un onglet (2) au fichier "test3"
- Ouvrir le fichier "test2" et copie les cellules de la "feuil1" dans les cellules de la feuil2 du fichier "test3"
- fermer les fichiers "test1" et "test2"
Dans le fichier "test3" (toujours ouvert normalement).
- sur l'onglet "feuil1", lire la valeur de la colonne "BK" (qui ne peut pas etre triée) pour la ligne 2
- Regarder dans la colonne "N" de l'onglet "feuil2" si cette valeur est présente
- Si la valeur est présente, lire la valeur de la colonne "L" de la ligne concernée (feuil2 toujours) et l'écrire dans la colonne "BN" de la ligne concernée (pas triée non plus), lue en début de boucle (dans l'onglet "feuil1")
- passer à la ligne suivante jusqu'au la dernière ligne.
je regarde de mon coté si je vois ce qui bloque. :)
Je viens de tester, il se passe 1 ou 2s ou on a l'impression que ça travaille, mais au final rien n'est fait.
Je te donne le contexte :
j'ai un fichier tiers qui se nomme "rechercheV.xlsm" dans lequel je travaille sur cette macro.
le déroulé est comme suit :
- Ouvrir le fichier "test1" et le sauvegarder en fichier "test3"
- Ajouter un onglet (2) au fichier "test3"
- Ouvrir le fichier "test2" et copie les cellules de la "feuil1" dans les cellules de la feuil2 du fichier "test3"
- fermer les fichiers "test1" et "test2"
Dans le fichier "test3" (toujours ouvert normalement).
- sur l'onglet "feuil1", lire la valeur de la colonne "BK" (qui ne peut pas etre triée) pour la ligne 2
- Regarder dans la colonne "N" de l'onglet "feuil2" si cette valeur est présente
- Si la valeur est présente, lire la valeur de la colonne "L" de la ligne concernée (feuil2 toujours) et l'écrire dans la colonne "BN" de la ligne concernée (pas triée non plus), lue en début de boucle (dans l'onglet "feuil1")
- passer à la ligne suivante jusqu'au la dernière ligne.
je regarde de mon coté si je vois ce qui bloque. :)
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
20
25 août 2010 à 16:01
25 août 2010 à 16:01
Alors j'ai tenté de repasser sur 2 fichiers et ca tourne pour le moment.
Le premier problème venait donc de mon changement de stratégie (2 onglets d'un nouveau fichier plutôt que 2 fichiers).
J'attends la fin pour voir comment ça se concrétise :)
Est il possible d'adapter cette macro pour un fonctionnement tel que préciser au dessus ?
Le premier problème venait donc de mon changement de stratégie (2 onglets d'un nouveau fichier plutôt que 2 fichiers).
J'attends la fin pour voir comment ça se concrétise :)
Est il possible d'adapter cette macro pour un fonctionnement tel que préciser au dessus ?
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
20
25 août 2010 à 16:07
25 août 2010 à 16:07
Le résultat semble impeccable. Je vérifie entre le fichier d'origine et le fichier résultant de la macro.
Si tout est ok, inutile de reprendre la macro.
Merci pour cette aide et pour l'écriture tres sobre de cette macro :)
Si tout est ok, inutile de reprendre la macro.
Merci pour cette aide et pour l'écriture tres sobre de cette macro :)