VBA Recherche V d'une feuiile à une autre

Fermé
tristan19 - 9 août 2010 à 14:41
 tristan19 - 10 août 2010 à 10:31
Bonjour,
Voilà j'ai besoin d'effectuer des recherche V en VBA d'un fichier vers un autre qui n'ont pas toujours le même nom. En effet, cette recherche doit être faite chaque mois sur différentes sociétés. J'ai trouver une macro qui depuis le fichier de base permet d'ouvrir le fichier qui va recevoir la donnée cependant après je ne sais pas trop comment faire pour que ma macro face une rechercheV entre ces deux fichier étant donné qu'ils n'auront pas toujours le même nom ni même emplacement :((((

Dim a As Variant, Nom As String

Application.ScreenUpdating = False
Nom = ActiveWorkbook.Name
ChDrive "C:" ' Choix du lecteur
ChDir "C:\" 'Choix du répertoire
a = Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
, "Sélection de vos fichiers excel", , True)

Select Case TypeName(a)
Case Is = "Boolean"
Exit Sub
Case Else
For b = LBound(a) To UBound(a)
Workbooks.Open a(b)
Next
End Select
Application.ScreenUpdating = True
Workbooks(Nom).Activate



A voir également:

4 réponses

Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
9 août 2010 à 14:53
voila un bout de code qui va ouvrir 2 fichier par la fenetre d'ouverture manuelle et stocker les 2 classeurs dans 2 variable
dim classeur1, classeur2 as workbook

'ouverture du 1er fichier
Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
, "Sélection de vos fichiers excel", , True) 

set classeur1=ActiveWorkbook

'ouverture du 2eme fichier
Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
, "Sélection de vos fichiers excel", , True) 

set classeur2=ActiveWorkbook



ensuite tu faut utiliser ces 2 variables pour alimenter les cellules
si tu dois alimenter dans le 1er classeur avec des références au 2eme

classeur1.sheets("nom de la feuille").cells(lig,colresultat).value = vlookup(classeur2.range(taplage), _
   classeur1.sheets("nom de la feuille").cells(lig,colrecherche), _
   indexcol, false)


lig = n° de la ligne en cours
colresultat = N° colone ou tu veux avoir le résultat de la recherche
colrecherche = N° de colonne de la valeur à chercher
indexcol = n° de la colonne du classeur 2 a rappatrier

cette fonction est a mettre dans une boucle qui va tourner sur toutes les ligne du classeur1 et va stocker directement le résultat de la rechercheV sans faire apparaitre la formule RechercheV

si tu veux faire appairaitre la formule c'est un peut différent.
0
Merci pour cette réponse cependant j'ai un message me disant pour Lookup Sub ou fonction non définie ??
0
Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
9 août 2010 à 15:18
vlookup pas lookup (ca veut dire rechercheV en anglais)
0
Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
9 août 2010 à 15:21
ah j'ai rien dit...

Application.WorksheetFunction.Vlookup(....)

c'est pas une fonction vba directe, faut préciser Application.WorksheetFunction avant
0
AIE bon cela ne marche pas je vais regarder why il me mets variable objet ou variable bloc with non definie donc j'ai changer classeur 1 et 2 et mit à la place VARIANT now j'arrive à passer les étapes mais il bugges sur

classeur1.Sheets("bilan").Cells(9, E).Value = Application.WorksheetFunction.VLookup(classeur2.Range("D:E"), _
classeur1.Sheets("bilan").Cells(9, E), _
E, False)

Et il ne m'ouvre pas les feuilles

cdt
0
Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
9 août 2010 à 15:43
ah oui, j'avais pas testé un truc...

déja n'utilise pas variant pour classeur1 et classeur2

ensuite, la fonction

Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
, "Sélection de vos fichiers excel", , True)

renvoie un tableau de chaine, pas un classeur, j'avais mal lu
pour renvoyer une chaine simple il faut mettre

Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
, "Sélection de vos fichiers excel", , false)


ensuite encore, cette fonctionne n'ouvre pas le fichier... donc le code ressemble a ca

dim classeur1, classeur2 as workbook

dim filename as variant

filename = Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
, "Sélection de vos fichiers excel", , false)

set classeur1 = workbooks.open(filename)

filename = Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
, "Sélection de vos fichiers excel", , false)

set classeur2 = workbooks.open(filename)
0
Cool merci cela focntionne bon dans la suite je suis un boulet le vllookup ne fonctionne pas je mets
je pense mettre mal les données mais je ne sais pas ou
Tu m'avias mis

'ensuite tu faut utiliser ces 2 variables pour alimenter les cellules _
si tu dois alimenter dans le 1er classeur avec des références au 2eme'

Donc premiere ligne je me positionne sur la cellule mais après ?? comprend pas la formule parrapport a la classiqu excel

classeur1.Sheets("bilan").Cells(9, 5).Value = Application.WorksheetFunction.VLookup(classeur2.Range("D9"), _
classeur1.Sheets("bilan").Cells(D9 :E726), _
2, False)


Merci par avance de ton aide
0