VBA ouverture et recuperation du chemin

[Résolu/Fermé]
Signaler
Messages postés
11
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
6 octobre 2008
-
Messages postés
11
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
6 octobre 2008
-
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

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.

5 réponses

Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 181
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+
Messages postés
11
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
6 octobre 2008

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
Messages postés
11
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
6 octobre 2008

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? merci


Private 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
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 181
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 changer
    If 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

Messages postés
11
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
6 octobre 2008

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