Difficile, à moins de rechercher le fichier sur le(s) disque(s)
Ou si le fichier excel bouge avec le fichier word, en utilisant des chemin relatif (c'est ce que tu fais ici, il va ouvrir le fichier chemin.docm dans le répertoire courant.
Peut-être en utilisant un genre de fichier .ini ou une clef de registre. A chaque déplacement effectué, le nouveau répertoire est mémorisé et cette donnée est consultée à chaque chargement
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !
Merci pour vos réponses, j'ai finalement opté pour la solution avec chemin relatif car plus simple.
Je récupère tout d'abord dans une cellule le chemin et nom fichier grâce au programme suivant (en sachant qu'un seul fichier de type ".docm" apparaîtra dans le dossier). Je peux ainsi l'actualiser directement en cliquant sur le bouton lorsque le fichier est renommé.
Sub CommandButton1_Click()
Dim Chemin As String, Fichier As String
Chemin = ThisWorkbook.Path & "\"
Fichier = Dir(Chemin & "*.docm")
Do While Len(Fichier) > 0
Range("D25").Value = Chemin & Fichier
Fichier = Dir()
Loop
End Sub
Ensuite, j'indique donc à Excel que le fichier Word qu'il doit m'ouvrir se trouve à l'emplacement de la cellule précédemment actualisée.7
Sub Test1()
Dim Feuille as Worksheet
Dim objWord as Object
Dim Chemin as String
Set Feuille = ThisWorkbook.Sheets("Test")
Set objWord = CreateObject("Word.Application")
Chemin = Range("D25").Value
Je bloque sur un autre point maintenant. J'aimerais actualiser le chemin d'accès des tableaux dynamiques liés entre le fichier Excel et Word lorsque ceux-ci sont déplacés ailleurs. Je sais qu'on peut le faire sous Word via Informations --> Modifier les sources des fichiers liés.
Mais existe t-il un moyen de l'indiquer directement via VBA ? Mes recherches n'ont pas étés concluantes...
Lance l'enregistrement d'une macro et fais ta manipulation (arrête l'enregistrement à la fin de la manipulation) et regarde le code généré, ça t'aidera peut-être
J'avais déjà essayé cette solution mais sans résultat. La macro n'enregistre aucun code...
As-tu une autre astuce ?
De plus, je bloque également sur autre chose. Je souhaite ouvrir un document Word si aucun n'est ouvert, et pouvoir modifier le document avec l'actualisation de signet si celui-ci est ouvert.
On Error Resume Next 'Permet d'éviter l'erreur 429
Set objWord = GetObject(Chemin)
If objWord Is Nothing Then
Set objWord = CreateObject("Word.Application")
objWord.Documents.Open (Chemin)
objWord.Visible = True
Set wrd = objWord.Application
ElseIf Not objWord Is Nothing Then
Set wrd = objWord.Application
End If
En utilisant cela, j'arrive bien à actualiser le document Word lorsqu'il est ouvert. Cependant, quand le document est fermé, je n'arrive pas à l'ouvrir.
Je ne comprends pas le problème du programme ?
Merci encore par avance.
Réponse à ce post :
J'avais oublié de mettre une virgule à cette endroit :
Set objWord = GetObject(, "Word.Application")
Maintenant, si quelqu'un à une solution pour le 1er souci, je suis preneur
- Edité par Doc Brown111 9 février 2021 à 14:31:10
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !