Lien instantané (ou par macro) entre 2 fichiers

Fermé
Cr4sH19 - 24 août 2015 à 17:59
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 - 26 août 2015 à 14:03
Bonjour,

Lorsque je rentre le nom d'une personne dans une cellule de "Fichier1", il recherche si cette personne existe dans la base de donnée "BDD".
- Si oui, Excel me remplit automatiquement des cellules dans Fichier1 (correspondant à des caractéristiques de la personne écrites dans la BDD).
- Si non, il m'affiche ces cellules en rouge et je clique alors sur un bouton qui m'ouvre la base de données (via une macro), pour ensuite rentrer cette nouvelle personne et ses caractéristiques.

Mon problème: la liaison entre les fichiers excel n'est pas instantanée, cad quand j'enregistre la BDD avec une nouvelle personne inscrite (et que je la ferme), il ne m'affiche pas dans File1 les caractéristiques de cette nouvelle personne.
=> je suis obligé de faire "connexions", "mise à jour des valeurs"

Existe-il un moyen de faire ce lien instantané ? par une macro (associé à un bouton "mise à jour" dans File1) ?

Merci beaucoup de votre aide !
Bonne soirée.
A voir également:

6 réponses

Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
24 août 2015 à 22:41
Bonjour,
Essayer avec le code qui suit à mettre dans un module de votre classeur [Fichier 1] ;
Ne pas oublier de mettre le chemin correct... !
La procédure :
Sub maj_liaison()
ActiveWorkbook.UpdateLink Name:="C:\mettre le chemin de votre base de donnée \BDD.xls", Type:=xlExcelLinks
End Sub


0
Salut Le Pingou,

Merci beaucoup de ta réponse !
J'ai le message d'erreur "la méthode UpdateLink de l'objet '_Workbook' a échoué".
Peux-tu m'aider stp ?

J'ai juste créé un nouveau module avec le code et un bouton dans ma feuille appelant la macro.

Bonne journée.
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
25 août 2015 à 14:58
Bonjour,
Avez-vous indiqué le répertoire et le chemin correctement ... ?
Eventuellement mettre le classeur sur https://www.cjoint.com/ et poster le lien.

0
Oui j'ai mis le bon répertoire, il semble que ce soit la fonction qui est incorrecte.
Faut-il déclarer "Name" ?

Je ne peux malheureusement pas joindre le fichier car confidentiel désolé, je sais que ce serait le plus simple...
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
25 août 2015 à 15:15
Bonjour,
Faut-il déclare "Name" ... je ne comprends pas !
Par contre en fin de chemin vous devez avoir le nom du classeur et son extension.
Sans bonjour, rien de plus.

0
Bonjour,
Oui en fin de chemin j'ai ".xlsm"
Ce que je voulais dire, c'est est-ce qu'il faut rajouter "dim Name as" sous "sub"
Merci encore,
Bonne journée.
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
25 août 2015 à 16:48
Bonjour,
Merci de l'information.
Pas besoin de déclaration car il s'agit de nom réservé par le système (idem pour Type).
Pas de classeur, alors je vous suggère d'utiliser l'enregistreur de macro et de réaliser les manipulations selon : => je suis obligé de faire "connexions", "mise à jour des valeurs"
Et ensuite vous pouvez me montrer le code enregistré... !

0
Bonjour,
Ah oui je ne pensais plus à l'enregistreur ! ça marche (voir en bas du message), il me semble qu'il y a juste un "tiret du 8" après le lien, par rapport au code que vous m'aviez donné.

Cependant, quand la macro s'exécute, il m'ouvre une fenêtre pour sélectionner le fichier "BDD" (afin de faire la liaison je pense).
Est-ce possible de ne pas la faire apparaître ?
Et également que la macro s'execute automatiquement s'il y a une modification d'une cellule Excel quelconque ?

Merci beaucoup !
Bonne soirée.

Sub MAJBDD()
ActiveWorkbook.UpdateLink Name:= _
"D:\....xlsm" _
, Type:=xlExcelLinks
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
Modifié par Le Pingou le 25/08/2015 à 17:33
Bonjour,
Est-ce possible de ne pas la faire apparaître ? Je pense que Oui, pour cela il faut voir la macro complète que vous utilisez.... !
En tout cas ce n'est la macro en fin de message qui ouvre une fenêtre.... !
Note : pour information les tirets dans le code c'est utilisé pour le retour à la ligne lorsque la ligne de code est trop longue. (Cela fait office de liaison pour la ligne de code sur plusieurs lignes)


Salutations.
Le Pingou
0
Bonsoir,
Merci encore pour votre aide.
La fenêtre n'apparaît plus, j'avais un soucis de lien car le fichier BDD est sur un disque réseau commun.

La macro que vous m'avez proposé fonctionne avec un bouton que j'ai créé sur ma feuille.
Ma dernière question est: comment faire pour s'affranchir du bouton ? C'est-à-dire que l'actualisation soit faite juste par le fait de cliquer sur une autre cellule de la feuille ?

Bonne soirée.
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
25 août 2015 à 21:59
Bonjour,
Je pense qu'en utilisant l'événement [Workbook_Activate] cela devrait marcher.
Mettre la procédure qui suit dans [ThisWorkbook] :
Private Sub Workbook_Activate()
ActiveWorkbook.UpdateLink Name:="D:\....xlsm", Type:=xlExcelLinks
End Sub
Pas oublier d'adapter le libellé de [Name :=]

0
Bonjour,
Génial ça fonctionne ! Merci énormément pour votre aide !
Bonne journée.
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
26 août 2015 à 14:03
Merci, content pour vous.
0