Chemin d'un fichier sélectionné VBE 6

Résolu
cavrom Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour à tous,

Etant débutante sous VB, je patine un peu.
J'ai créé un code permettant, par le biais d'un "commandbutton", d'ouvrir mes documents. Je souhaite sélectionner un fichier, et que son chemin soit ensuite inscrit dans la "textbox" créée à cet effet.
Pour le moment, j'ai seulement réussi à afficher le chemin du classeur dans lequel je travail.

Voici mon code :

Private Sub CommandButton1_Click()
    On Error Resume Next
    With Application.GetOpenFilename
        .AllowMultiSelect = False
        .Show
        UserForm1.TextBox1.Text = .SelectedItems(1)
    End With
    
    'display the path in the text box
    Dim Path As String


    TextBox1.Value = Workbooks(ThisWorkbook.Name).FullName



End Sub


Si j'ai oublié des informations qui pourrait vous permettre de m'aider, n'hésitez pas à me le signaler.

Merci d'avance,

CAVROM.

11 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    Est-ce que VBE représente pour toi, Visual Basic Editor du VBA.

    Cdt

    Lupin
    0
    1. Utilisateur anonyme
       
      re :

      Si tu es en VBA, tu peux essayer cette sybtaxe :

      Private Sub CommandButton1_Click()
      
          Dim oDialog As Office.FileDialog
      
          'Ouvre une boîte de dialogue MS Office FileDialogOpen
          Set oDialog = Application.FileDialog(msoFileDialogOpen)
      
          
          oDialog.InitialFileName = ""
          'Sélection sur tous les fichiers
          oDialog.Filters.Clear
          oDialog.Filters.Add "Tous les fichiers", "*.*"
          'Titre de la boîte de dialogue
          oDialog.Title = "Sélectionnez le fichier "
          'Pas de sélection multiple
          oDialog.AllowMultiSelect = False
           'Affiche la boîte
          oDialog.Show
      
          On Error Resume Next
          Me.TextBox1.Text = oDialog.SelectedItems(1)
      
      End Sub
      '
      


      Cdt

      Lupin
      0
  2. cavrom Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   3
     
    Pour moi VBE représente Visual Basic ouvert par Excel, et ma version est Excel 2000 et VB 6.0. donc la dénomination est VBA tout de même?

    Bon j'ai essayé votre code, pourtant un message d'erreur s'affiche :

    Erreur de compilation : Type défini par l'utilisateur non défini.

    Cela se produit à la ligne:
    Dim oDialog As Office.FileDialog

    Quel est le problème?

    Merci pour ce début de réponse ;)
    0
  3. Utilisateur anonyme
     
    Bonjour,

    VBE est l'abréviation de [Visual Basic Editor] et le language lui-même
    se nomme VBA [ Visual Basic Application ], ce language est dirons-nous
    de même génération que VB6, mais VBA n'est qu'un sous-ensemble de
    VB6.

    Ceci dit, pour ce qui est de de l'erreur de compilation, vérifier ce qui suit :

    Ouvrir VBE, et aller au menu :

    // Menu / Outils / Références...

    Assure-toi d'avoir au minimum ces 5 composants de cocher :

    Microsoft Excell 11.0 Object Library
    Microsoft Office 11.0 Object Library
    Microsoft Visual Basic for Applications Extensibility
    Visual Basic For Applications
    Ole Automation

    N.B. Je suis actuellement sur la version 2003 d'excel, toutefois
    tu devrais retrouver ces librairies sous 2000, de mémoire je pense
    que la version est 9.0.

    Cdt

    Lupin
    0
  4. cavrom Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   3
     
    Bon j'ai bien tout coché, mais le code ne marche toujours pas. Merci tout de même
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    Bonjour,

    Je vérifie tout cela à la maison, avec mon bouquin de John Wallenback
    qui porte sur VBA Excel 2000, car pour moi ça fonctionne.

    Cdt

    Lupin
    0
  7. cavrom Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   3
     
    C'est très gentil de votre part, je me suis moi aussi replongée dans un livre sur VBA Excel 2000, mais de Jean-François Sehan.
    Pour le moment, pas plus d'informations.
    0
  8. Utilisateur anonyme
     
    re:

    Dans la foulée, j'avais oublié que j'ai toujours le CDROM fournit
    avec le livre dans mon pack-sac.

    Alors voici le code fournit par celui-ci :

    Private Declare Function FindExecutableA Lib "shell32.dll" _
        (ByVal lpFile As String, ByVal lpDirectory As String, _
        ByVal lpResult As String) As Long
    
    Function GetExecutable(strFile As String) As String
        Dim strPath As String
        Dim intLen As Integer
        strPath = String(255, 0)
        intLen = FindExecutableA(strFile, "\", strPath)
        If intLen > 32 Then
            GetExecutable = Left(strPath, intLen)
         Else
            GetExecutable = ""
         End If
    End Function
    
    Sub GetFileName()
        Dim fname As String
        fname = Application.GetOpenFilename
        MsgBox "The executable file is " & GetExecutable(fname), vbInformation, fname
    End Sub
    '
    


    Disons que personnellement quand je peux éviter d'utiliser
    les API de windows, je le fait. Peut-être trouverais-je une autre
    méthodes dans le bouquin, mais du moins celle-ci devarit
    fonctionner.

    C'est le contenu de la procédure [ Sub GetFileName() ] qui
    devra remplacer le contenu de votre procédure
    [ Private Sub CommandButton1_Click() ].

    Cdt

    Lupin
    0
  9. cavrom Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   3
     
    Bonjour, et merci pour cette réponse.

    Je n'ai pas bien saisie, vous me dites qu'il faut que je remplace le code du CommandButton par la procédure [ Sub GetFileName() ] ?
    Car lorsque je remplace tout bonnement, cela ne marche pas.
    Que dois je faire du début du code?
    0
  10. Utilisateur anonyme
     
    Bonjour,

    Voici un exemple tangible que tu pourras décortiquer :-)

    http://membre.oricom.ca/lupin/xfr/classeur.zip

    Ouvrir le classeur et aller au menu :

    // Menu / Outils / Macro / Macro...

    Sélectionner Principal

    Cliquer sur le bouton Execute

    Cdt

    Lupin
    0
  11. cavrom Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   3
     
    Bonjour Lupin,

    J'ai réussi à dégoter un code qui fonctionne. Je te le transmets, au cas où ça t'interesse :
    Private Sub CommandButton1_Click()
    Dim NAO As String
    NAO = Application.GetOpenFilename
    For i = Len(NAO) To 1 Step -1
    If Mid(NAO, i, 1) = "\" Then LenDossier = i: GoTo suite
    Next
    suite:
    TextBox1.Value = Mid(NAO, 1, LenDossier - 1)
    TextBox2.Value = Mid(NAO, LenDossier + 1, (Len(NAO) + 1) - LenDossier)
    End Sub


    En tout cas merci de ton aide, de ta compréhension et de ta patience.

    Cavrom.
    0
  12. Utilisateur anonyme
     
    Bonjour,

    J'ai certes glisser dans cette suite d'évènement, car lorsque je code ainsi :

    Private Sub CommandButton1_Click()
        
        Dim fname As String
        
        fname = Application.GetOpenFilename
        If (fname <> "Faux") Then
            Me.TextBox1.Text = fname
        Else
            Me.TextBox1.Text = "Annuler par l'utilisateur"
        End If
    
    End Sub
    '
    


    Ça fonctionne bien chez moi !!!

    Tant mieux si tu as trouvé une solution :-)

    Bonne continuité.

    Cdt

    Lupin
    0