Lier base de donnee et cellule excel par macro

  • Initiateur de la discussion Initiateur de la discussion adrien1992
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

adrien1992

XLDnaute Nouveau
Bonjour, et merci pour ce superbe site qui m'as beaucoup aidé jusqu'ici.
Loin de moi l'idée de surcharger le forum de question répétitive, j'ai depuis deux jours scruté le net a la recherche d'informations, j'ai donc essayé deux trois pistes que j'ai suivi mais sans succés, VISUAL BASIQUE me sort une erreur systematiquement ! Je me suis donc lancé et j'ouvre une nouvelle discussion en vous remerciant par avance pour votre aide.
Je dispose d'un fichier excel qui précise pour chaque référence un numero de programme et un code article, je dispose d'une base (un fichier) de données qui contient les fichiers (PDF et Excel) ou sont présent les plans et toutes informations liées au code article. Le but étant de gerer a partir de ce fichier excel tout les documents présent dans la base, c'est a dire les ouvrir a partir de l'excel en double-cliquant sur la cellule qui contient le code article ou le numero de programme ce qui ouvrira le fichier de la base qui lui est associé (du meme nom que la valeur de la cellule).
j'ai éssayé une methode vu sur ce forum mais elle n'ai pas approprié et surtout ne fonctionne pas, toujours une erreurs de VB !
Mon dossier contenant tout les fichier s'appelle "BASE FICHIER" il est situé a ce chemin "C:\Users\FP43177\Desktop\NUM DFC\BASE FICHIER"
Mon fichier excel se nomme "BASE DFC" et est situé a cette adresse "C:\Users\FP43177\Desktop\NUM DFC"
Merci de votre aide et ci joint le fichier excel
 

Pièces jointes

Re : Lier base de donnee et cellule excel par macro

Bonsoir adrien1992 et bienvenue à toi 🙂

Ton message a déjà été lu un certain nombre de fois, sans réponse jusque là ... Peut-être en partie parce que tout n'est pas clair!?
Ce qui aurait été pas mal, c'était de laisser les essais réalisés dans le fichier (il y a peut-être une partie du code "récupérable" à moindre effort 😉)
D'autre part, il faudrait que tu précises si chaque fichier à rechercher est en version pdf et en version XL? Si c'est parfois du pdf et parfois de l'Excel, y a-t-il quelque chose qui permette de savoir lequel des 2 rechercher?
Pourquoi un double clic sur le code article ou le numero de programme? On se complique la tâche!?
... Ou alors les codes articles correspondent à un type de fichier et les numeros de programme au second type??

Tant qu'à faire, tu aurais pu zipper un assortiment de tout petits fichiers pdf et xls, correspondant à quelques codes ou n° existants, ça nous éviterait de les créer nous-mêmes, si on veut pouvoir tester!
 
Re : Lier base de donnee et cellule excel par macro

Oui c'est vrai que c'est clair uniquement pour moi, c'est difficile d'expliquer tout d'un coup.
Oui je pourrai mettre a disposition des fichiers dès demain matin je pense. Les fichiers a rechercher sont aléatoirement du pdf et Excel mais c'est vrai que c'est ce compliquer la vie ! Donc je convertirai le tout en pdf. Cela fait déjà une question de résolu lol
Tout simplement parceque jai vu une fonction "double clic" pour activer la macro ( cependant le code était a mettre dans blad1 et non dans un module. J'ai cru que cela serai plus simple et plus intuitif.
Merci a toi modeste et merci de ta patience ( pas toujours facile d'avoir a faire a des petit joueurs d'excel)
 
Re : Lier base de donnee et cellule excel par macro

Re-bonsoir,

À mon sens, ce serait plus facile encore si tous les fichiers étaient des fichiers Excel ... Mais d'autres seront peut-être d'un avis différent!? [Edit:] oui, moi, en fait: ça marche sans souci avec des fichiers pdf!

Pour le double clic, je n'ai rien contre; je demandais simplement pourquoi le rendre possible sur deux colonnes?

adrien1992 à dit:
pas toujours facile d'avoir a faire a des petit joueurs d'excel
T'inquiète pas pour ça: l'essentiel n'est pas ce que tu sais déjà, mais ce que tu es disposé à consentir comme investissement pour avancer 🙂 Je peux t'assurer, par ailleurs que je ne suis pas un grand "pro", moi non plus
 
Dernière édition:
Re : Lier base de donnee et cellule excel par macro

Code rentré dans blad1 et non dans un module

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Siret As String
Dim CheminDOc As String*
CheminDOc = *"c:\mesPDF"
Siret = Target
If Siret <> "" Then
Shell "C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe " & CheminDOc & "\" & Siret
*Else*
MsgBox " La cellule est vide, veuillez double cliquer sur une autre cellule"
End If
End Sub

J'ai bien sur remplacer les chemin d'accès par les miens mais l'erreur 53 apparaît a la ligne d'appelle d'acrobat, mais le chemin est bon car lorsque je laisse uniquement shell "mon chemin d'acrobate" il s'ouvre bien. Le problème vient donc de la suite de la fonction mais ou..

Car il y a deux fichiers par ligne (le programme pdf et le plan pdf associé au code article)

PS: sur les cellules vide lorsque je double clic j'obtiens bien le message souhaitez et aucune erreur est signalé sa limite donc la résolution a une seul ligne
 
Re : Lier base de donnee et cellule excel par macro

Re²,

Je n'attendais ton retour que demain ... en attendant, je viens de tester rapidement avec ce petit bout de code (à placer effectivement dans le module de la "blad1", puisqu'il s'agit d'une macro événementielle, liée au double clic sur la "blad1"). Ça fonctionne sans souci avec les .pdf
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column <> 3 Or Target.Row < 3 Then Exit Sub
    If Target = "" Then Exit Sub
    nomFichier = "C:\Users\FP43177\Desktop\NUM DFC\BASE FICHIER\" & Target & ".pdf"
    fichier = Dir(nomFichier)
    If Not fichier = "" Then
        ActiveWorkbook.FollowHyperlink (nomFichier)
        Cancel = True
    Else
        MsgBox "Fichier " & Target & ".pdf introuvable"
    End If
End Sub
 
Re : Lier base de donnee et cellule excel par macro

et bin ecoute merci beaucoup les base sont fondées et ca marche mis a part quelque soucis.. lors de l'ouvert j'ai ce message d'erreur

Erreur d'execution '-2747221018(800401e6)'
Aucune application n'est associé a ce fichier

De plus le double cli fonctionne uniquement sur la colonne programme et non sur toute la feuille
Cordialement
 
Dernière édition:
Re : Lier base de donnee et cellule excel par macro

Bonjour Adrien, le forum,

Je viens de re-tester, avec des fichiers .pdf (et avec un fichier XL, en changeant l'extension dans le code) ... les deux s'ouvrent sans problème, ni message, sur ma machine!?

Par ailleurs, tu dis que ça fonctionne? Le message d'erreur n'est pas "bloquant" alors? Et ce message d'erreur provient d'Excel, d'Acrobat Reader, ...?
 
Re : Lier base de donnee et cellule excel par macro

Le plobleme venez de l'ordinateur donc excel me mettais une erreur mais maintenent ca marche !
Par contre le double clic fonctionne uniquement sur la colonne C et non sur toute la feuille.. Trés embettant pour ce que je voulais faire
 
Re : Lier base de donnee et cellule excel par macro

mais maintenent ca marche !
Ouf, je respire 😛


Code:
If Target.Column <> 3 Or Target.Row < 3 Then Exit Sub
C'est ici qu'on spécifie que rien ne doit se passer, si le double clic est effectué en dehors de la colonne 3 ou au-dessus de la ligne 3.
Tu es évidemment libre de modifier cette instruction, mais il va falloir préciser à Excel, si le double-clic se fait en colonne B, par exemple, dans quelle autre colonne il doit aller récupérer le nom du fichier!
Et puis quand tu voudras modifier le contenu d'une cellule, tu devras t'empêcher de le faire par double-clic et passer par la touche F2 ou modifier dans la barre de formule! (voire désactiver provisoirement les macros) ... Pas certain que ce soit une riche idée, mais, comme disait l'autre: "C'est vous qui voyez" 😀
 
Re : Lier base de donnee et cellule excel par macro

c'est tout parfait ! merci beaucoup
petite autres question, j'aimerai qu'il m'ouvre le fichier PDF contenant la valeur de la cellule et non le nom exact car les fichier plan se nomme 21v_CODEARTICLE_***.pdf j'aimerai lui dire d'ignorer ce qu'il y a avant et aprés (de toute facon je mettrait dans la base uniquement des fichier PDF.
Deuxieme petite chose j'aimerai qu'il fasse les recherche de fichier sur deux fichier c'est a dire rajouter un fichier BASE
Merci
 
Re : Lier base de donnee et cellule excel par macro

Re,

... Et moi qui croyais que la chose était entendue 🙄

Pour ta première question, pourquoi ne pas utiliser:
nomFichier = "C:\Users\FP43177\Desktop\NUM DFC\BASE FICHIER\21v_CODEARTICLE_" & Target & ".pdf"

Pour la seconde, il faut que tu précises: le fichier à rechercher serait uniquement dans un seul des 2 emplacements?
 
Re : Lier base de donnee et cellule excel par macro

Car aprés le code article il y a encore une valeur variable et dont je ne veux pas tenir compte dans ma recherche.
Oui mon fichier se trouve uniquement dans un des deux fichier, j'avais penser a un tout bete copier coller pour qu'il fasse plusiseurs recherche en parrallele mais je ne sais pas si ca va marcher..
Merci
 
Re : Lier base de donnee et cellule excel par macro

Re-bonjour,

Dis donc, on dirait ma fille qui m'envoie un sms 🙄 Mets-toi à notre place deux minutes, quand tu rédiges: ce qui est (très) clair dans ta tête risque de l'être nettement moins pour nous tous. Et quand tu parles de chercher dans un autre fichier, je présume que c'est de dossier que tu parles??
D'autre part, j'imagine que tu t'es précipité pour consulter l'aide, depuis le premier bout de code envoyé 😉. Tu y auras donc lu que la fonction Dir retourne une chaîne vide, si le fichier spécifié n'est pas trouvé. C'est donc à ce niveau-là qu'il faut intervenir pour tester le second emplacement.
Une proposition (parmi d'autres, sans aucun doute):
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column <> 3 Or Target.Row < 3 Then Exit Sub
    If Target = "" Then Exit Sub
    nomFichier = "C:\Users\FP43177\Desktop\NUM DFC\BASE FICHIER\" & Target & ".pdf"
    fichier = Dir(nomFichier)
    If fichier = "" Then
        nomFichier = "L_Autre_Emplacement_A_Explorer\Base\" & Target & ".pdf"
        fichier = Dsir(nomFichier)
    End If
    If fichier <> "" Then
        ActiveWorkbook.FollowHyperlink (nomFichier)
        Cancel = True
    Else
        MsgBox "Fichier " & Target & ".pdf introuvable"
    End If
End Sub

Pour la recherche sur une partie du nom (si j'ai compris), fais attention au fait que si tu demandes de rechercher quelque chose comme "*11*.pdf" le système trouvera -dans un ordre parfois surprenant- les fichiers 3811, 11 et 112 ...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour