j’aimerai bien ouvrir un document word par exemple en cliquant sur une cellule. Jusque la, ca va avec les liens hypertextes ca peut se faire ou sinon j’ai un début de code également :
Sub ouvrir_fichier()
Set mon_fichier = CreateObject(« Word.Application »)
With mon_fichier
.Visible = True
.Documents.Open Filename:=« C:\Users\toch\Desktop\Mes Documents\document1.docx »
.Activate
End With
Set mon_fichier = Nothing
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range(« D4 »)) Is Nothing Then Call ouvrir_fichier
End Sub
Mon principal problème que j’ai une liste déroulante, j’aimerai que quand je sélectionne la personne B par exemple puis que je clique sur la cellule B4 : le doc 1 s’ouvre.
Et quand je sélectionne la personne C par exemple puis que je clique sur la cellule B4 : le doc 2 s’ouvre.
Il faudrait que le doc s’adapte à la personne sachant que je clique toujours sur la même cellule.
Onglet « Feuil2 » colonne A la liste des personnes colonne B le nom du document à ouvrir pour chacun d’eux
Onglet « Feuil1 » cellule A2 la liste déroulante cellule B2 par formule la récupération du nom du document correspondant à ouvrir dans l’onglet « Feuil2 »
En cellule D4 la sélection de celle-ci qui déclenche l’ouverture du document
Dans ton code d’ouverture en tout début une variable fichier qui récupère le nom du document à ouvrir en cellule B2
Puis la ligne de code d’ouverture dans laquelle cette variable est associée
Ce qui donne ce code :
Sub ouvrir_fichier()
Set mon_fichier = CreateObject(« Word.Application »)
fichier = Range(« B2 »)
With mon_fichier
.Visible = True
.Documents.Open Filename:="C:\Users\toch\Desktop\Mes Documents\ " & fichier
.Activate
End With
Set mon_fichier = Nothing
End Sub
Le doc à ouvrir évolue en fonction de son nom en cellule B2 qui est actualisé au grés du choix de la liste déroulante cellule A2
Il est possible en plus du nom du fichier d’intégrer son chemin
Pour cela onglet « Feuil2 » colonne B mettre l’intégralité du chemin avec le nom du fichier
Puis modifier la ligne de code d’ouverture ainsi :
.Documents.Open Filename:= fichier
C’est ou le nom du fichier ou l’intégralité chemin fichier colonne B onglet « Feuil2 » pas de panachage
A rajouter éventuellement la condition de la présence du nom du fichier à ouvrir Onglet « Feuil1 » cellule B2 pour l’exécution du traitement d’ouverture ainsi :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range(« B2 ») <> « » Then
If Not Application.Intersect(Target, Range(« D4 »)) Is Nothing Then Call ouvrir_fichier
End If
End Sub
Merci pour le retour, c’est claire et bien expliqué. Serait il possible que vous m’aidiez a transposer cela avec plusieurs fichiers par personne, je m’explique :
personne 1 va avoir 5 fichiers par exemple et chacun sera associé à une cellule dans la feuille afin d’activer le doc. A5 = doc 1, B8 = doc 2, F14 = doc 3 …
Ensuite la personne 2 aura aussi 5 fichiers et aura les mêmes cellules d’activation mais pas les memes documents? Ex : A5 = doc 4, B8 = doc 5, F14 = doc 6 …
Et ainsi de suite.
En fait, la liste comporte uniquement les personnes. Les cellules sont les endroits je veux cliquer pour ouvrir le document (comme la cellule D4 nommé ouverture que vous avez codé). Par exemple, si je clique sur A5, je veux que ça ouvre le doc1 et si je clique sur B8, il faut que ca ouvre le doc 2 …
Ces cellules qui vont ouvrir les docs ne changeront pas d’une personne à l’autre, ce qui doit changer, c’est le doc selon le choix que j’ai fait de la personne. Si je clic sur A5 pour la personne 1, ce ne doit pas être le meme doc qui s’ouvre que pour la personne 2.
En onglet « Feuil2 » colonne A les noms des personnes de la colonne B à D les fichiers à ouvrir respectivement pour les cellules sélectionnées : D4/A5/D8
Plus de formule en cellule B2 pour la récupération du document à ouvrir en fonction du choix de la personne cellule A2 et de la sélection de l’une d’entre elles parmi D4/A5/D8
C’est un traitement VBA
Re bonjour
Serait il possible de permettre l’ouverture d’autres types de fichier et pas uniquement des Word ? Par exemple, autoriser également les PDF.
Je ne trouve pas quoi mettre à la place de Word.Application.
Sub ouvrir_fichier()
Set mon_fichier = CreateObject(« Word.Application »)
fichier = Range(« B2 »)
With mon_fichier
.Visible = True
.Documents.Open Filename:=« C:\Users\quent\Desktop » & fichier
.Activate
End With
Set mon_fichier = Nothing
End Sub
Super, ça marche.
Pouvez vous juste autoriser les png, pdf et mov en tout comme j’ai essayé de faire maladroitement svp ?
car j’ai plusieurs types de fichier différents, merci.
Sub ouvrir_fichier()
Set mon_fichier = CreateObject(« Word.Application »)
fichier = Range(« B2 »)
If fichier <> « » Then
If Split(fichier, « . »)(1) = « mov »
Or
Split(fichier, « . »)(1) = « png »
Or
Split(fichier, « . »)(1) = « pdf »
Then
ThisWorkbook.FollowHyperlink « C:\Users\quent\Desktop » & fichier
Else
With mon_fichier
.Visible = True
.Documents.Open Filename:=« C:\Users\quent\Desktop » & fichier
.Activate
End With
End If
End If
Set mon_fichier = Nothing
End Sub
Tu trouveras ci-joint une nouvelle version qui inclus un nouveau traitement pour l’ouverture de n’importe quel type de fichier
traitement : ouvrir_fichier2