VBA ouverture et recuperation du chemin

Résolu
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.
Configuration: Windows 2000
Internet Explorer 6.0

5 réponses

  1. Contributeur
    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+
    0
    1. 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
      0
      1. 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
        0
        1. Contributeur
          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

          0
          1. 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
            0