Utiliser common dialog dans vb/vba d'une manière simple sans activer le composant dans le projet

Soyez le premier à donner votre avis sur cette source.

Vue 42 140 fois - Téléchargée 3 817 fois

Description

Bonjour tout le monde,

Cette fois-ci, je vous livre un module qui permet de sélectionner un fichier à l'aide d'un Common Dialog mais sans avoir besoin d'activer le composant ou de placer l'objet dans votre projet. Cela permet d'utiliser les Common Dialog d'une façon plus souple autant dans VB que dans VBA. Je sais que ce n'est pas une grande nouveauté mais ça peut être utile à quelques un.

Dites mois ce que vous en pensez !

Source / Exemple :


'Utilisation de la fonction :
'mettre une commande de type : Call OuvrirAvecCD("xls", "c:\", "TOTO fait du ski")
'Puis ont peux récupérer le chemin du fichier sélectionné par l'utilisateur
'dans la variable "FichierSélectionné"
'c'est tout !

Public FichierSélectionné As String

Public Function OuvrirAvecCD(Extension As String, DOSSIER As String, TITRE As String)
    FichierSélectionné = ""
    Set CD = CreateObject("MSComDlg.CommonDialog")
    On Error Resume Next
Debut:
    With CD
        .MaxFileSize = 260
        .InitDir = DOSSIER
        .CancelError = True
        .DialogTitle = TITRE
        .Filter = "Fichiers " & Extension & "(*." & Extension & ")|*." & Extension & "|"
        .FilterIndex = 1
        Err.Clear
        .ShowOpen
        If Err.Number <> 0 Then
            If MsgBox("Vous n'avez pas sélectionné de fichier." & Chr(10) & "Voulez-vous annuler la sélection ?", vbYesNo, TITRE) = vbYes Then
                Exit Function
            Else
                GoTo Debut
            End If
        End If
    End With
    FichierSélectionné = CD.FileName
    Set CD = Nothing
End Function

Conclusion :


Notez moi !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Squall____
Messages postés
65
Date d'inscription
mercredi 7 janvier 2004
Statut
Membre
Dernière intervention
11 septembre 2012
-
Content que ça puisse aider !

Bonne programmation Samloba.
samloba
Messages postés
3
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
8 novembre 2010
-
j'ai trouvé

Filter = "Fichiers Access|*.mdb"
merci
samloba
Messages postés
3
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
8 novembre 2010
-
merci Squall____
ce code vient de me sauver la mise
access 2007+vb6 (pour compiler ma dll activeX)
seul probleme le filtre n'est pas appliqué, je vois tous les fichiers
et le choix devient difficile
Squall____
Messages postés
65
Date d'inscription
mercredi 7 janvier 2004
Statut
Membre
Dernière intervention
11 septembre 2012
-
Ok.
Je pense que ton erreur d'activeX doit venir du fait que la DLL comdlg32.dll n'est pas présente dans ton C:\WINDOWS\System32.

Si elle n'est pas installée c'est que ton Office 2007 n'as pas été installé complètement. Je te conseille donc d'aller dans ajout/suppression de programmes, de cliquer sur modifier l'installation de ton office et de choisir une installation complète d'office (tout exécuter à partir du disque dur). Après ça, essaye se bout de code :

Public FichierSélectionné As String

Public Function OuvrirAvecCD(Extension As String, DOSSIER As String, TITRE As String)
FichierSélectionné = ""
Set CD = CreateObject("MSComDlg.CommonDialog")
On Error Resume Next
Debut:
With CD
.MaxFileSize = 260
.InitDir = DOSSIER
.CancelError = True
.DialogTitle = TITRE
.Filter = "Fichiers " & Extension & "(*." & Extension & ")|*." & Extension & "|"
.FilterIndex = 1
Err.Clear
.ShowOpen
If Err.Number <> 0 Then
If MsgBox("Vous n'avez pas sélectionné de fichier." & Chr(10) & "Voulez-vous annuler la sélection ?", vbYesNo, TITRE) = vbYes Then
Exit Function
Else
GoTo Debut
End If
End If
End With
FichierSélectionné = CD.Filename
Set CD = Nothing
End Function

Public Sub test()

OuvrirAvecCD "xls", "\\TON_SERVEUR\TON_PARTAGE", "Merci de sélectionner un fichier xls"
MsgBox FichierSélectionné

End Sub

Si ça ne marche toujours pas, télécharge la DLL ici : http://www.dll-files.com/dllindex/dll-files.shtml?comdlg32
Et ensuite copie là dans ton C:\WINDOWS\System32 et réessaye.

Fait moi savoir si ça focntionne ou non.

Bonne chance.
Ericbzc
Messages postés
17
Date d'inscription
lundi 24 novembre 2008
Statut
Membre
Dernière intervention
13 décembre 2010
-
Xp pour windows
2007 pour excel

ps : j'ai déplacé des morceaux de codes au cours de mes tests, et il semblerait que chdir + getopenfile fasse bien le changement de chemin maintenant, y compris sur un chemin autre que C D E...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.