Chemin d'un fichier sélectionné VBE 6

Résolu/Fermé
cavrom Messages postés 45 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 26 juillet 2011 - 20 avril 2011 à 15:47
 Utilisateur anonyme - 26 avril 2011 à 19:26
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.


A voir également:

11 réponses

Bonjour,

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

Cdt

Lupin
0
Utilisateur anonyme
20 avril 2011 à 20:25
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
cavrom Messages postés 45 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 26 juillet 2011 3
21 avril 2011 à 08:49
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
Utilisateur anonyme
21 avril 2011 à 13:53
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
cavrom Messages postés 45 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 26 juillet 2011 3
21 avril 2011 à 14:27
Bon j'ai bien tout coché, mais le code ne marche toujours pas. Merci tout de même
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
cavrom Messages postés 45 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 26 juillet 2011 3
21 avril 2011 à 16:41
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
Utilisateur anonyme
21 avril 2011 à 20:18
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
cavrom Messages postés 45 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 26 juillet 2011 3
22 avril 2011 à 15:56
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
Utilisateur anonyme
24 avril 2011 à 00:41
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
cavrom Messages postés 45 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 26 juillet 2011 3
26 avril 2011 à 15:38
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
Utilisateur anonyme
26 avril 2011 à 19:26
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