VBA faisant appel à autres fichiers

Fermé
CamilleDR Messages postés 29 Date d'inscription lundi 24 octobre 2016 Statut Membre Dernière intervention 12 juin 2017 - 3 nov. 2016 à 12:11
CamilleDR Messages postés 29 Date d'inscription lundi 24 octobre 2016 Statut Membre Dernière intervention 12 juin 2017 - 7 nov. 2016 à 10:19
Bonjour,
J'ai un fichier dans lequel je rentre des données via un formulaire VBA (nom de l'ingrédient et quantité utilisée).
Grâce au nom de l'ingrédient, le formulaire va chercher des données complémentaires dans une base de données située sur un autre fichier excel.
La validation du formulaire va aussi chercher 2 images qui s'insèrent dans la mise en page du fichier.
Sur mon ordinateur, tout fonctionne.
Comment faire pour que cela fonctionne de la même manière lorsque je transfère l'ensemble des fichiers liés sur un autre ordinateur, ou dans un autre dossier de mon ordinateur ?
Je suppose qu'il faudrait dimensionner les fichiers liés dans VBA, afin de n'avoir à changer le lien qu'à un endroit, mais je ne sais pas comment faire...
Je peux envoyer les fichiers concernés en MP si quelqu'un peut me dépanner.
Merci d'avance,
Camille
A voir également:

4 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
3 nov. 2016 à 12:27
Bonjour,

Le plus simple est de placer les fichiers dans un sous-répertoire de celui qui contient la macro.
Avec Thisworkbook.Path tu obtiens le répertoire du fichier macro et donc l'emplacement relatif du sous-répertoire.
0
CamilleDR Messages postés 29 Date d'inscription lundi 24 octobre 2016 Statut Membre Dernière intervention 12 juin 2017
3 nov. 2016 à 12:35
Merci Patrice,

Niveau code ça donne quoi ?
Je place ça ou ?

Camille
0
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 20
3 nov. 2016 à 18:02
Bonjour,

Exemple :

Dans un module :


Public Type Contexte
RepImages As String
RepFichiers As String
End Type



Global XContexte As Contexte


Dans le code du formulaire :


Private Sub UserForm_Initialize()

Dim CheminClasseur As String ' Chemin du classeur ayant le VBA
Dim CheminFichiers As String ' Chemin du fichier ayant les ingrédiants
Dim CheminImages As String ' Chemin des images

CheminClasseur = ThisWorkbook.Path

CheminFichier = CheminClasseur & "\Fichiers\"
CheminImages = CheminClasseur & "\Images\"

XContexte.RepFichiers = CheminFichiers
XContexte.RepImages = CheminImages

End Sub


soit un répertoire :

C:\Document\Projet

créer 2 sous répertoires

C:\Document\Projet\Fichiers
C:\Document\Projet\Images

dans tout le code peu importe ou tu seras :

Chemin1 = XContexte.RepFichiers & "MonFichierIngrédiant.xls"

Chemin2 = XContexte.RepImages & "MonImage.jpg"

K
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
3 nov. 2016 à 18:17
Bonjour,

Je ne vois pas l'intérêt de la variable publique personnalisée Contexte, sinon de compliquer les choses pour les débutants en VBA : dans toutes les procédures du projet on peut trouver l'emplacement du classeur puis définir comme tu l'a fait les sous-répertoires simplement avec :
CheminClasseur = ThisWorkbook.Path
CheminFichier = CheminClasseur & "\Fichiers\"
CheminImages = CheminClasseur & "\Images\"
0
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 20 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
4 nov. 2016 à 12:49
Apprendre n'a jamais fait de tort à personne.

Je n'ai que proposé une suggestion. Pour toi, il n'y a pas d'intérêt, je peux comprendre.
Ça ne veut pas dire qu'il n'y en en pas pour les autres...

La perception de chacun est différente, ce qui est bon pour toi ne l'est pas forcément pour un autre et vice-versa. Chacun est en droit de choisir sa vision.

K
0
CamilleDR Messages postés 29 Date d'inscription lundi 24 octobre 2016 Statut Membre Dernière intervention 12 juin 2017
7 nov. 2016 à 08:52
Je n'ai pas réussi à inclure les codes que vous proposez... Ca dépasse mon niveau de compréhension !
Si j'envoie le fichier quelqu'un pourrait m'aider ?
Camille
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
7 nov. 2016 à 09:21
Bonjour,

Déposes ton fichier (sans infos confidentielles) sur https://www.cjoint.com/ puis mets le lien obtenu dans ton prochain post.
Tutoriel Cjoint :https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers#q=cjoint&cur=2&url=%2F
0
CamilleDR Messages postés 29 Date d'inscription lundi 24 octobre 2016 Statut Membre Dernière intervention 12 juin 2017
7 nov. 2016 à 10:19
Lien vers le fichier de calcul des valeurs nutritionnelles :
http://www.cjoint.com/c/FKhjbAmB8K1

Lien vers la base de données :
http://www.cjoint.com/c/FKhjdRUIPA1

Liens vers les 2 photos utilisées, une en entête et une en bouton "menu" :
http://www.cjoint.com/c/FKhjqxkdIZ1
http://www.cjoint.com/c/FKhjpFdKvf1

En bidouillant j'ai réussi à faire en sorte que les liens vers la base de données fonctionnent sur un autre PC, le bouton "menu" aussi, mais celui vers le bandeau qui me sert d'entête ne fonctionne pas...

Merci pour votre aide !
Camille
0