Besoin d'aide pour un programme vba [But ouvrir des fichiers pdf variable]

Signaler
Messages postés
8
Date d'inscription
vendredi 10 décembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010
-
Messages postés
8
Date d'inscription
vendredi 10 décembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010
-
Bonjour à tous.

Voici, mon pb !

Je voudrais savoir comment ouvrir un fichier pdf suivant un code vba sur Excel. Sachant que mon nom de fichier est variable suivant le contenu de ma cellule.
Je m'explique, sur Excel j'ai une colonne avec une quantité de référence:

Ex : Refxxxx1AA
Refxxxx2AA
Refxxxx3AA
Refxxxx4AA (...)

Une mise en plan en format pdf stocké dans un lecteur C:/ dans des dossiers différents, associé à la ref et porte du coup le même nom:

Ex: pr Refxxxx1AA = C:/xxxx1AA/Refxxxx1AA.pdf
la Refxxxx2AA = C:/xxxx2AA/Refxxxx2AA.pdf (...)

Le but est obetnir au final une fois qu'on est sur la cellule ex : Refxxxx1AA, qui s'affiche une boîte de dialogue qui demande à l'utilisateur s'il veut ouvrir la mise en plan pdf associé. Oui ou non, si oui ouvre le pdf non ne l'ouvre pas.

J'ai regarder sur le net, et je Galr grave, si quelqu'un me trouve un programme c un Dieu !

Merci !

14 réponses

Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
120
Bonjour, Je te propose ceci, à mettre dans Feuil1

'Ouvrir fichiers dans leur programme par défaut
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Dim fichier As String
'ouvrir tous les fichier sauf xls
Sub ouvriravec()
On Error Resume Next
fichier = Application.GetOpenFilename("All Files (*.*), *.*")
If fichier = "" Then
Exit Sub
Else
fichier = "C:\monfichier.pdf"'chemin du pdf
Dim Ret As Variant
Ret = ShellExecute(hwnd, "open", fichier, "", vbNullString, 1) 
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A1").Value = "monfichier.pdf" Then
ouvriravec
End If
End Sub


je pars du principe que le nom de ton fichier pdf est en A1, à toi d'adapter suivant tes besoins
@+ Le Pivert
Messages postés
8
Date d'inscription
vendredi 10 décembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010

Merci, jvé tester ça, si sa marche respect !
Bne soirée en tout ka et bn week!
Messages postés
8
Date d'inscription
vendredi 10 décembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010

Alors pour le moment il m'ouvre le lecteur C mais c'est à moi manuellment d'ouvrir le pdf sa se fait pas automatiquement quand jsui sur la cellule comme je le voudrais koi! J'ai l'impression qui ne prend pas la valeur en A1. Et comme jsui un novice en VBA, c GalR lol! Merci kan même bne soirée.
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
120
Quand tu cliques dans la feuille1, si le chemin du fichier est correct, la boite de dialogue s'ouvre, il suffit alors de la fermer et ton fichier s'ouvre automatiquement.
Messages postés
69
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
20 juin 2011

Bonjour,

J'ai fait dans le passé le même type de logiciel Excel / VBA.
Je voulais ouvrir des plans 2D en PDF de pièces techniques. Dans une cellule Excel, j'avais la ref. produit.
Tout simplement, pour ouvrir un fichier pdf, il faut utiliser le code ci-dessous.

Sub affiche_pdf()

chemin = "C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe "
nom_fichier = "C:\monrepertoire\monfichier.pdf"
Shell (chemin & nom)

End Sub

Attention, mettre dans "chemin" le chemin d'accès d'acrobat reader.
Messages postés
8
Date d'inscription
vendredi 10 décembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010

Bonjour,

- subaqua : j'ai testé ta solution il m'ouvre adobe et c tout pas mon fichier et le problème c que j'ai une multitude de ref et jveu qu'un programme dc fo je fasse une variable c obligé qui fasse automatiquement le rapprochement entre la valeur dans ma cellule et le nom du plan en pdf que je veux ouvrir.

- le Pivert: j'ai retester j'arrive à l'ouvrir nikl mais toujour en manuel et le souci c comme jle disais g une multitude de fichier.

Un peu plus d'explication: Pour le moment dans mon fichier excel j'ai trouvé un code qui me permet quand on va cliquer sur un bouton dans ton excel une boite de dialogue s'affiche et demande à l'utilisateur d'entrer la ref désirée. Une fois valider le excel va rechercher directement la ligne ou se trouve cette ref (tout sa dans le même fichier) et c a partir de ce moment que je voudrais qu'une boite de dialogue s'affiche en disant voulez vous ouvrir la mise en plan en pdf oui? non? D'ou le programme sur lequel je rame complètement pour être honnête j'ai aucune idée de la structure etc...

Dur ! Dur ! Merci de votre aide sérieux .
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
120
Maintenant je comprends mieux le problème. J'ai fait un code que j'ai placé dans la feuille1, mais toi tu devras l'insérer à la suite de ton code existant.
Place les chemins de tes fichiers pdf dans la feuille2 si cela est possible ou une autre,dans ce cas, il faudra rectifier le code. Voici le code dans la feuille1 pour l'exemple:

'Ouvrir fichiers dans leur programme par défaut
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub ouvriravec()
Dim Var As Object
On Error Resume Next
Set Var = Application.InputBox(Prompt:="Sélectionner le fichier que vous voulez ouvrir avec la souris: (Ex. A1) ", _
Title:="Sélection de fichier ", Default:="$A$1", Type:=8)
If Var = "" Then
MsgBox (" Vous devez sélectionner une ligne.") 'Si on sélectionne plusieurs lignes ou aucune ligne
Exit Sub
Else
Dim Ret As Variant
Ret = ShellExecute(hwnd, "open", Var, "", vbNullString, 1) 'Var= chemin du fichier
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Sheets("Feuil2").Select
 ouvriravec
End Sub


on peut l'améliorer en sélectionnant la cellule dans la feuille2.Essaie comme ceci, ensuite on verra. Ce n'est pas la peine de partir dans une mauvaise direction.
Le Pivert
Messages postés
69
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
20 juin 2011

Je suis étonné qu'il n'ouvre pas le fichier car j'ai testé le code juste avant de te l'avoir envoyé et ça marchait.
Juste un petit truc erroné, j'avais changé la var. nom en nom_fichier pour être plus explicite et j'avais oublié de changer la var. dans shell

Sub affiche_pdf()

chemin = "C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe "
nom_fichier = "C:\monrepertoire\monfichier.pdf"
Shell (chemin & nom_fichier)

End Sub

Si tu avais simplement copié mon code, c'est normal qu'il ne t'ouvrait pas le fichier.
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
120
J'ai peaufiné le code avec sélection auto de la cellule. Il suffit de cliquez sur la cellule en Feuille1 ce qui t'ouvre une boite de dialogue où tu n'as plus qu'a cliquer sur OK pour ouvrir le pdf, la cellule est sélectionnée automatiquement.
mettre ce code dans la feuill1

'Ouvrir fichiers dans leur programme par défaut
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Dim nom As String
Dim nom_pdf As String
Dim Var As Object
Sub ouvriravec()
On Error Resume Next
Set Var = Application.InputBox(Prompt:="Cliquez sur OK, si vous voulez ouvrir le pdf", _
Title:="Ouverture du pdf", Default:=nom_pdf, Type:=8)
If Var = "" Then
 MsgBox (" Vous devez sélectionner une ligne.") 'Si on sélectionne plusieurs lignes ou aucune ligne
Exit Sub
Else
Dim Ret As Variant
Ret = ShellExecute(hwnd, "open", Var, "", vbNullString, 1) 'Var= chemin du fichier
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  nom = Target.Address
    If Target.Address = nom Then
        nom = Target.Value
       Sheets("Feuil2").Select
        Feuil2.Range(Target.Address).Select
         nom_pdf = Target.Address
        End If
 ouvriravec
  Sheets("Feuil1").Select
End Sub


Mettre le chemin des fichiers pdf dans la feuille2. Si les fichiers sont dans le même dossier on peut alléger les saisies
Le Pivert
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
120
Il faut mettre dans la feuille2 les chemins des pdf dans les cellules équivalentes à la feuille1
Messages postés
8
Date d'inscription
vendredi 10 décembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010

Tout d'abord je tenais vraiment à vous remercier les gars pour votre aide, j'explique mon problème j'ai une réponse quelques heures après c'est génial. Le pivert j'ai testé ton code sa marche du feu de Dieu c'est nikel. Merci et subaqua ce petit code va me servir pour plus tard si j'ai un pdf à ouvrir donc c'est trop bon, merci vraiment à vous deux. Bon fin de week les gars, encore merci.
Messages postés
8
Date d'inscription
vendredi 10 décembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010

Le pivert, excusez moi, mais si je veux que votre pragramme s'applique que pour la colonne des A et pas dans les autres quand je vais dedans, comment je dois faire? J'arrête de vous embêter après promi . Merci bonne soirée.
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
120
J'avais déjà fait un projet comme cela, j'avais mis un checkBox sur la feuil1 pour désactiver la macro.Quand tu veux entrer des données sur ta feuille tu actives ton checkBox et tu le désactives pour ouvrir tes pdf.Je t'ai mis aussi un message d'annulation d'ouverture de pdf.

'Ouvrir fichiers dans leur programme par défaut
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Dim nom As String
Dim nom_pdf As String
Dim Var As Object
Sub ouvriravec()
On Error Resume Next
If MsgBox("Ce PDF n'est pas ouvert. Voulez-vous l'ouvrir?", vbYesNo, "OUVERTURE PDF") = vbYes Then
Set Var = Application.InputBox(Prompt:="Cliquez sur OK, si vous voulez ouvrir le pdf", _
Title:="Ouverture du pdf", Default:=nom_pdf, Type:=8)
If Var = "" Then
 MsgBox (" Vous devez sélectionner une ligne.") 'Si on sélectionne plusieurs lignes ou aucune ligne
Exit Sub
Else
Dim Ret As Variant
Ret = ShellExecute(hwnd, "open", Var, "", vbNullString, 1) 'Var= chemin du fichier
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If CheckBox1.Value = True Then Exit Sub
 On Error Resume Next
  nom = Target.Address
    If Target.Address = nom Then
        nom = Target.Value
       Sheets("Feuil2").Select
        Feuil2.Range(Target.Address).Select
         nom_pdf = Target.Address
        End If
 ouvriravec
  Sheets("Feuil1").Select
 End Sub
 


Bon dimanche et bonne programmation

@+ Le Pivert
Messages postés
8
Date d'inscription
vendredi 10 décembre 2010
Statut
Membre
Dernière intervention
12 décembre 2010

C'est parfait merci bien, et bon dimanche à vous aussi.