Récupérer l'adresse complète d'un fichier et d'une zone pour la renseigner
J'utilise actuellement un fichier qui a une liste de produits de références et j'analyse d'autre fichiers avec un Vlookup pour visualiser les références utilisées. Ça je sais faire.
Ce que je souhaite faire, c'est automatiser le renseignement des formules Vlookup avec un Inputbox par exemple ou par un autre moyen comme cité sur le code joint.
J’ai essayé de concaténer l'adresse du fichier avec l'adresse Sheets et Range mais j'ai des erreurs de partout. L’Ideal pour moi serait d'avoir quelque chose comme ça,
With Range("M" & i)
.Formula = "=VLOOKUP(" & ValeurRecherche & "," & PlageRecherche & " ,1,FALSE)"
.Value = .Value
End Withafin que les données soient toujours à jour.
Dans le code ci-dessous, cela ne fonctionne pas non plus.
Le code n'est pas complet, il me faudra ajouter les boucles mais ça je sais faire, je le ferai quand ma première formule fonctionnera.
Sub CopieValeursSources()
'Déclaration des Variables
Dim WB_Principal 'WB_Principal = fichier principal
Dim Chemin_FichierExcelSource 'As String
Dim FichierSource As Workbook
Dim Nom_FichierSource
Dim Nom_feuil As String
Dim Marche As String
Dim ValeurRecherche As String
Dim PlageRecherche As Range
Dim i
i = 15 'point de depart pour la lecture des references du fichier principal
Nom_feuil = ActiveWorkbook.ActiveSheet.Name
WB_Principal = ActiveWorkbook.Name 'Nom du fichier principal avec exention
'WB_Principal = CreateObject("Scripting.FileSystemObject").GetBaseName(ActiveWorkbook.Name) 'Nom du fichier principal sans exention
'On Error Resume Next
Windows(WB_Principal).Activate
'Selection du fichier "Source"
Chemin_FichierExcelSource = Application.GetOpenFilename("Fichiers Excels, *.xls; *.xlsx; *.xlsm", 1, "Selectionner le document Excel issu des études Technique...")
'Ouverture du fichier "Source"
Set FichierSource = Workbooks.Open(Chemin_FichierExcelSource, 0)
Windows(FichierSource.Name).Visible = True 'deviendra false quand cela fonctionnera
Nom_FichierSource = CreateObject("Scripting.FileSystemObject").GetBaseName(ActiveWorkbook.Name)
'Définition en dur des variables utilisées pour la fonction VLookup
Windows(WB_Principal).Activate
ValeurRecherche = Sheets(Nom_feuil).Range("C" & i).Value
Windows(FichierSource.Name).Activate
Set PlageRecherche = FichierSource.Sheets("Offre Technique").Range("F:F") 'zone pour la recherche, je ne suis pas sur que cela fonctionne à ce niveau là
'Traitement
Windows(WB_Principal).Activate
Sheets(Nom_feuil).Select
' With Range("M" & i)
' .Formula = "=VLOOKUP(" & ValeurRecherche & "," & PlageRecherche & " ,1,FALSE)"
' .Value = .Value
' End With
Range("M" & i).Value = Application.WorksheetFunction.VLookup(ValeurRecherche, PlageRecherche, 1, False)
'Fermeture du document Excel Source
'FichierSource.Close
End SubAuriez vous une solution à mon problème?
D'avance merci
Cordialement
Bonjour,
Dans le cas de l'utilisation que tu fais de VLookup() , une simple affectation de valeur suffit !
Range("M" & i).Value = Sheets(Nom_feuil).Range("C" & i).Valuecar demander à VLookup() de renvoyer la valeur de la première colonne de la plage revient à renvoyer la valeur cherchée (la colonne de recherche est toujours la plus à gauche de la plage)
Bonjour,
Je suis obligé d'utiliser Vlookup car je ne connais pas l'emplacement des references qui peuvent même bouger.
Aujourdhui mon tableau fonctionne très bien.
Mais il est compliqué pour ceux qui ne savent pas de changer les formules pour chaque dossiers principal. Sachant que d'autre colonne peucent etre ajoutées.
ceci est ma formule qui fonctionne:
=IF($C15=".";"";IFNA(VLOOKUP(INDIRECT("A"&ROW());'C:/Documents/HomeShare/Documents/CSGM/Clients/Dome/[Etude technique douille Detancheité CSGM2-PR-000548 (Dome).xlsm]Offre Technique'!$F$13:$K$55;1;0);""))Merci
Cordialement
Bruno