Comdlg32 introuvable dans les contrôles supplémentaires [Résolu]

Gizzzmo 10 Messages postés mercredi 29 novembre 2000Date d'inscription 21 novembre 2009 Dernière intervention - 30 oct. 2009 à 11:46 - Dernière réponse : Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention
- 30 oct. 2009 à 15:02
Bonjour,

Je souhaiterai utiliser un contrôle commondialog pour sélectionner un fichier depuis une macro VBA sous microsoft project mais je ne trouve pas ce contrôle dans l'interface "Contrôles supplémentaires".

Il y a seulement CommonDialog Class mais qui pointe sur wiaaut.dll et qui ne fonctionne manifestement pas pour faire ce que je veux.

Comment ajouter le bon contrôle commondialog ? Puis-je passer par un autre contrôle ?

Merci.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 30 oct. 2009 à 12:44
3
Merci
Salut
Sous quel OS/Windows travailles-tu ?
Quelle version de Project ?
Dans ce genre de question, cela peut avoir une grosse importance !

Commence par vérifier que le fichier ComDlg32.OCX existe dans le répertoire System32 de Windows.
Si tu ne disposes pas de logiciels de programmation comme VB6 et/ou que tu n'as jamais installé de programme qui se serve de (et installe) ce composant, il est possible que ce composant ne soit pas sur ta machine.
Dans la liste des contrôles supplémentaires, le composant s'appelle "Microsoft Common Dialog Control"

Si tu dois rechercher cet OCX sur le net, ne télécharge ce composant QUE depuis un site de confiance; il arrive que certains filou tentent de faire installer des logiciels pirates sous le nom de composants connus.
Une fois que tu auras ce fichier, il te faudra l'enregistrer dans la base de registres (sous DOS en ligne de commande) :
RegSvr32 C:\le chemin\ComDlg32.ocx


Si tu veux faire quelque chose de plus propre (sans OCX), mieux vaut utiliser la classe ComDlg32.DLL qui elle, doit exister sur ta machine.
Un exemple de cette utilisation <dans ce lien> au chapitre 3.1

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 30 oct. 2009 à 12:46
0
Merci
Bien sûr, en cherchant "vba comdlg" sur le site, tu trouveras aussi des exemples
Commenter la réponse de cs_Jack
Gizzzmo 10 Messages postés mercredi 29 novembre 2000Date d'inscription 21 novembre 2009 Dernière intervention - 30 oct. 2009 à 13:39
0
Merci
Merci, ça fonctionne. Ce qu'il me manquait, c'était la petite ligne de déclaration...
Commenter la réponse de Gizzzmo
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 30 oct. 2009 à 13:43
0
Merci
pas besoin de ça en VBA....
y'a une fonction intégrée :

GetOpenFileName

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Gizzzmo 10 Messages postés mercredi 29 novembre 2000Date d'inscription 21 novembre 2009 Dernière intervention - 30 oct. 2009 à 13:45
0
Merci
Oui mais par défaut, cette fonction n'est pas reconnue. Il faut la déclarer pour cela apparemment (ce qui est fait dans l'exemple).
Commenter la réponse de Gizzzmo
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 30 oct. 2009 à 13:50
0
Merci
" Il faut la déclarer pour cela apparemment"

euh... non

plutot que de te baser sur ces apparences, un reflex simple : F2

dans l'editeur VBA presse F2
tapes GetOpenFileName
et hop :

Function GetOpenFilename([FileFilter], [FilterIndex], [Title], [ButtonText], [MultiSelect])
Membre de Excel.Application


aucune déclaration préalable requise, donc ^^





Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Gizzzmo 10 Messages postés mercredi 29 novembre 2000Date d'inscription 21 novembre 2009 Dernière intervention - 30 oct. 2009 à 13:53
0
Merci
Oui sauf que je cherche à l'utiliser depuis Microsoft Project. Enfin bon en tous cas sans mettre cette ligne de déclaration ça ne marche pas...

Au final ça marche, je vais pas aller chercher pendant 2 heures pourquoi :D
Commenter la réponse de Gizzzmo
Gizzzmo 10 Messages postés mercredi 29 novembre 2000Date d'inscription 21 novembre 2009 Dernière intervention - 30 oct. 2009 à 14:30
0
Merci
Par contre, une petite question complémentaire. J'ai une première form qui s'affiche et dans cette form, la possibilité de faire un browse et d'afficher la fenêtre "getopenfilename". Par contre la fenêtre "getopenfilename" n'est pas modale et je n'arrive pas à trouver comment la rendre modale.

Du coup si je clique sur "Annuler" dans ma form, je la cache mais ça remonte une erreur car la fenêtre "getopenfilename" est encore ouverte.

Merci.
Commenter la réponse de Gizzzmo
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 30 oct. 2009 à 15:02
0
Merci
j'ai pas ce souci, la boite de dialogue est bien modale...

Private Sub CommandButton1_Click()
Dim zRet As Variant
    zRet = Application.GetOpenFilename
    If VarType(zRet) = vbString Then
        MsgBox "Fichier ouvert : " & zRet
    Else
        MsgBox "Ouverture annulée"
    End If
End Sub



Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield

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.