VBA ouverture et recuperation du chemin
Résolu
"Rone"
Messages postés
11
Statut
Membre
-
"Rone" Messages postés 11 Statut Membre -
"Rone" Messages postés 11 Statut Membre -
Bonjour,
j'aimerai savoir s'il etait possible de recuperer le chemin du dossier que je recherche, et de le mettre dans une case Excel.
De plus l'ouverture de fichiers ne marchent pas.
voici mon code
Je vous remercie pour toutes reponses pouvant m'apporter une aide precieuse.
j'aimerai savoir s'il etait possible de recuperer le chemin du dossier que je recherche, et de le mettre dans une case Excel.
De plus l'ouverture de fichiers ne marchent pas.
voici mon code
Private Sub CommandButton1_Click()
Dim OuvrirFichiers As Variant
'modification du chemin par defaut'
ChDir ("c:\")
'affichage de la boite de dialogue Ovrir
OuvrirFichiers = Application.GetOpenFilename(filefilter:="classeur Microsoft Excel(*.xls),*.xls,All Files (*.*),*.*,PageWeb(*.htm;*.html),*.htm;*.html", filterindex:=2, Title:="Ouverture des fichiers d'inspections", MultiSelect:=False)
'si l 'utilisateur a selectionné plusieurs fichiers
If UBound(OuvrirFichiers) > 1 Then
Dim rep As Long
Dim liste As String
Dim compteur As Byte
For compteur = 1 To UBound(OuvrirFichiers)
liste = liste & vbCr & OuvrirFichiers(compteur)
Next compteur
'affichage de l'ensemble de la liste des fichiers et proposition d'ouverture
rep = MsgBox("L'utilisateur a selectionné plusieurs fichiers. En voici la liste." & liste & vbCr & "voulez-vous les ouvrir ?", vbYesNo + vbQuestion, "ouvrir les fichiers ?")
'Ouverture des fichiers en cas de réponse positive
If rep = vbYes Then
For compteur = 1 To UBound(OuvrirFichiers)
Worbooks.Open Filename:=OuvrirFichiers(compteur)
Next compteur
End If
'si un seul fichier a été selectionné, il est ouvert
Else
Workbooks.Open Filename:=OuvrirFichiers(1)
End If
End Sub
Je vous remercie pour toutes reponses pouvant m'apporter une aide precieuse.
Configuration: Windows 2000 Internet Explorer 6.0
5 réponses
-
Bonjour,
1°) tu met MultiSelect:=False donc il n'y aurra jamais plusieur fichier et de ce fait OuvrirFichiers ne serra pas un tableau, tu doit forcer OuvrirFichiers par dim OuvrirFichiers() (pas tester)
2°) Si c'est un tableau la première occurence va commencer à zéro sauf si tu a mis Option Base =1
sinon, Workbooks.Open Filename:=OuvrirFichiers(0)
A+ -
Merci de ta reponse, c'est vrai qu'avec Multiselect=True, le systeme fonctionne.
Mais je veux selectionner qu'un seul document à la fois tout en gardant au cas où la possibilité de selectionner plusieurs documents.
J'ai une autre requete, comment fais-ton pour recuperer le lien / le chemin vers le document que je veux ouvrir ?
exemple de lien que je veux recuperer: Program\documents\ventes\janvier2008.pdf -
En ajoutant le code pour fermer la boite de recherche si l'on clique sur annuler, celui-ci me fait bugué mon programme.
je ne peux plus executer.
Cela est due au type de OuvrirFichiers, mais je l'ai declaré comme variant donc il peut etre de tout type.
Pouvez vous m'aider? merciPrivate Sub CommandButton1_Click() Dim OuvrirFichiers As Variant 'modification du chemin par defaut' ChDir ("c:\") 'affichage de la boite de dialogue Ouvrir OuvrirFichiers = Application.GetOpenFilename(filefilter:="classeur Microsoft Excel(*.xls),*.xls,All Files (*.*),*.*,PageWeb(*.htm;*.html),*.htm;*.html", filterindex:=2, Title:="Ouverture des fichiers d'inspections", MultiSelect:=True) If OuvrirFichiers = False Then MsgBox "aucun fichier n'a été sélectionné. Fin de la procédure", _ vbOKOnly + vbCritical, "fin de la procédure" Exit Sub End If 'si l 'utilisateur a selectionné plusieurs fichiers If UBound(OuvrirFichiers) > 1 Then Dim rep As Long Dim liste As String Dim compteur As Byte For compteur = 1 To UBound(OuvrirFichiers) liste = liste & vbCr & OuvrirFichiers(compteur) Next compteur 'affichage de l'ensemble de la liste des fichiers et proposition d'ouverture rep = MsgBox("L'utilisateur a selectionné plusieurs fichiers. En voici la liste." & liste & vbCr & "voulez-vous les ouvrir ?", vbYesNo + vbQuestion, "ouvrir les fichiers ?") 'Ouverture des fichiers en cas de réponse positive If rep = vbYes Then For compteur = 1 To UBound(OuvrirFichiers) Worbooks.Open Filename:=OuvrirFichiers(compteur) Next compteur End If 'si un seul fichier a été selectionné, il est ouvert Else Workbooks.Open Filename:=OuvrirFichiers(1) End If End Sub -
Re,
Tu tient aucun compte des remarques précédantes,
1°) tu insiste sur OuvrirFichiers(1) ???
2°) tu veux ouvrir un fichier pdf avec Excel ??? ... Program\documents\ventes\janvier2008.pdf
A quoi tu joue, je comprend plus rien. ?
A+++
Edit:
Pour pas que ça bug, comme tu dit, faut changerIf OuvrirFichiers = "" Then MsgBox "aucun fichier n'a été sélectionné. Fin de la procédure", _ vbOKOnly + vbCritical, "fin de la procédure" Exit Sub End If
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
désolé Lermite,
Mon exemple: "Program\documents\ventes\janvier2008.pdf" est mauvais.
Car je veux ensuite transformé ce lien, en lien hypertext vers un fichier pdf.
Donc il est vrai que j'aurais du mettre un exemple en .xls
J'ai modifié le programme, et celui-ci marche bien.
Les explications que tu m'as donné au depart (que tu n'avais pas testé) ne marchait pas. J'ai reussi a faire fonctionné le programme, mais l'ajout de 3 lignes pour fermer la fenetre si aucun choix n'étais émis faisait disfonctionné le programme.If OuvrirFichiers = False Then MsgBox "aucun fichier n'a été sélectionné. Fin de la procédure", _ vbOKOnly + vbCritical, "fin de la procédure" Exit Sub End If
ce que tu me conseilles :If OuvrirFichiers = "" Then
cela ne marche pas si Multiselect est a True, mais marche si il est a False.
J'ai modifié mon programme pour le simplifier, et j'ai abandonné le fait de pouvoir selectionné plusieurs dossier a ouvrir.
voici le programme maintenant.
Private Sub CommandButton1_Click() Dim OuvrirFichiers As Variant Dim aux As Variant 'modification du chemin par defaut' ChDir ("c:\") 'affichage de la boite de dialogue Ovrir OuvrirFichiers = Application.GetOpenFilename(filefilter:="classeur Microsoft Excel(*.xls),*.xls,All Files (*.*),*.*,PageWeb(*.htm;*.html),*.htm;*.html", filterindex:=2, Title:="Ouverture des fichiers d'inspections", MultiSelect:=False) If OuvrirFichiers = "False" Then Exit Sub End If Workbooks.Open Filename:=OuvrirFichiers MsgBox "chemin " & ActiveWorkbook.Path End Sub
merci encore