begin process at 2012 02 12 16:50:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Modules

 > UTILISER COMMON DIALOG DANS VB/VBA D'UNE MANIÈRE SIMPLE SANS ACTIVER LE COMPOSANT DANS LE PROJET

UTILISER COMMON DIALOG DANS VB/VBA D'UNE MANIÈRE SIMPLE SANS ACTIVER LE COMPOSANT DANS LE PROJET


 Information sur la source

Note :
9,17 / 10 - par 6 personnes
9,17 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Modules Classé sous :commondialog, vba, getfileopen, showopen, fichier Niveau :Débutant Date de création :26/07/2005 Date de mise à jour :03/08/2005 10:39:17 Vu / téléchargé :37 059 / 3 710

Auteur : Squall____

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (42)
Ajouter un commentaire et/ou une note


 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

  • '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
'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 !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 août 2005 10:39:17 :
J'ai enlevé la déclaration de l'objet CD car cela posait des problèmes... J'ai aussi modifié le texte qui est écrit dans le filtre du CommonDialog.

 Sources du même auteur

Source avec Zip MODULE POUR CRÉER ET SUPPRIMER DES ONGLETS DANS UN FICHIER E...
Source avec Zip EFFECTUER DES IMPORTATIONS D'UNE BASE DE DONNÉE ACCESS VERS ...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) CRYPTAGE ET DECRYPTAGE par jerichez
Source avec Zip Source avec une capture Source .NET (Dotnet) EXEMPLE MODBUS POUR MODULES ADAM, BECKHOFF, WAGO par mnmsjaune
Source avec Zip Source .NET (Dotnet) CRÉER SON PROPRE DESIGNER COMME CELUI DE VISUAL STUDIO par ShareVB
Source avec Zip Source .NET (Dotnet) CONVERSION UTM VERS LAT/LONG par BarresLTD
Source avec Zip CPROPGROUP : COLLECTION FAITE MAISON par Flocreate

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) COMPARER_2FICHIERS_TEXTE par Le Pivert
Source avec Zip Source avec une capture LISTER FICHIERS D'UN DOSSIER par fedexx40
Source avec Zip Source avec une capture Source .NET (Dotnet) RENOMMER FICHIERS AVEC VIEWER par Le Pivert
Source avec Zip CONNEXION BASES DE DONNÉES par l0r3nz1
Source avec Zip Source avec une capture COMMONDIALOG AVEC PREVIEW IMAGE [USERCONTROL] par mortalino

Commentaires et avis

Commentaire de liquide le 26/07/2005 13:05:01

Dim CD As CommonDialog <---> si ca ce n'est pas l'activer, je ne comprend plus rien a Vb. Plus souple je ne sais pas , car en placant un commdialog dans la form, et en integrant un procédure qui en fait appel :
with commondialog
....
....
end with

la souplesse reste la meme, l'avantage de ton code c'est que le composant est activé au moment ou tu en as besoin. d'un autre coté, il ne faudrait pas que tu en ai besoin souvent, car charger decharger prend aussi du temps.

Commentaire de Urgo le 26/07/2005 13:49:28

EBArtSoft avait déjà montré cette astuce si mes souvenirs sont bons :)

Commentaire de Squall____ le 26/07/2005 15:04:56

Liquide, je sais que je l'active en le déclarant mais c'est plus pratique de l'activer en ligne de commande que de façon graphique pour des gens comme moi qui font beaucoup de VBA ou de VBS (je sais pas si tu as déjà essayer de mettre un commondialog dans excel 97 mais tu veras, ça vaut le coup d'oeil !).

Par contre, ce que tu dis sur le charger / décharger qui prend du temps, oui tu as raison. Le PC lui s'en rend compte mais nous, pauvres petits humains, je ne pense pas que ça nous gêne vraiment (^_^) !

Urgo, désolé si la source existait déjà, je l'ai cherché sur le site et je l'ai pas trouvé alors je pensais que ce code n'avais pas été montré. En même temps, c'est pas trop grave ! Une chance de plus pour ceuw qui cherchent cette fonction de la trouver :) !

Commentaire de BruNews le 27/07/2005 00:00:51 administrateur CS

Faudrait avoir "MSComDlg.CommonDialog" d'inscrit en base de registres pour s'en servir dans VBA.
Si c'est la souplesse que tu cherches, pourquoi ne pas utiliser l'API GetOpenFileName(), au moins on est certain que c'est sur la machine cible.

Commentaire de Squall____ le 27/07/2005 00:08:14

L'API GetOpenFileName ? Je ne connaissais pas ! C'est pour ça que je l'ai pas utilisé! Pourrais tu m'en dire plus sur cet API ?

Par contre, je t'assure que mon code fonctionne très très bien dans VBA. Je l'utilise actuellement avec Excel 97 sans problèmes.

Commentaire de BruNews le 27/07/2005 00:11:26 administrateur CS

ça fonctionne parce que tu as VB installé ou au moins l'ocx qui fournit mais les autres gens ne l'ont pas et donc ne peut pas fonctionner depuis VBA.
Regarde MSDN, faut faire une structure, la remplir correctement et ensuite la passer à l'API.

Commentaire de Squall____ le 27/07/2005 09:45:37

Je suis pas persuadé de ce que tu dis car j'utilise ce module au boulot avec Excel 97 et à part ça, ma config logiciel n'as rien d'exeptionnel, bien au contraire. Je n'ais pas VB installé, je suis sur NT4 avec la suite Office 97 dessus. C'est tout !

J'ai d'ailleur conçu cette source depuis ce PC...

C'est pour ça que je trouve ta remarque bizarre...

Commentaire de BruNews le 27/07/2005 09:58:56 administrateur CS

Alors testons, dans Excel j'obtiens:

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

et il me sélectionne "Dim CD As CommonDialog".
Que mettre comme référence ?

Commentaire de Squall____ le 27/07/2005 12:49:54

Je pense savoir quel est le problème...

Pour corriger, je pense qu'il te suffit de supprimer la ligne "Dim CD As CommonDialog" (ou de la mettre en commentaire comme tu veux).

Alors ? C'est mieux comme ça ?

Si ça marche mieux, je ferais un update de mon module.

Commentaire de BruNews le 27/07/2005 13:40:02 administrateur CS

Si je mets en comment, comment faire avec ce qui est dans "With CD" ???

Commentaire de Squall____ le 27/07/2005 13:58:32

C'est pas important ça, Quand tu fait le "Set CD = CreateObject("MSComDlg.CommonDialog")" ton objet est créé. Donc, le "With CD" venant après comprend ce qu'est l'objet CD.

No souci je te dis.

Tu as essayé ?

Commentaire de BruNews le 27/07/2005 14:20:33 administrateur CS

Test dans Excel 2003:

Public Function OuvrirAvecCD(Extension As String, DOSSIER As String, TITRE As String)
    FichierSélectionné = ""
    Dim CD
    Set CD = CreateObject("MSComDlg.CommonDialog")
    On Error Resume Next
Debut:
    With CD
        .MaxFileSize = 260
        .InitDir = DOSSIER
        .CancelError = True
        .DialogTitle = TITRE
        .Filter = "Fichiers Excels(*." & 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

Sub test()
  Dim s As String
  s = OuvrirAvecCD("*.txt", "D:\", "TITRE")
  MsgBox s
End Sub

Résultat comme prévu:
"Le composant ActiveX ne peut pas créer l'objet" en message d'erreur.
et me select la ligne: Set CD = CreateObject("MSComDlg.CommonDialog")

C'est clair, je t'avais dit que ceci n'est pas sur les machines.

Commentaire de Squall____ le 27/07/2005 14:40:41

Ok. Tu dois avoir raison. Mais j'ai relevé des erreurs dans ton utilisation de ma fonction.

Utilise plutot ça :

public FichierSélectionné As String

Public Function OuvrirAvecCD(Extension As String, DOSSIER As String, TITRE As String)
    FichierSélectionné = ""
    'Dim CD
    Set CD = CreateObject("MSComDlg.CommonDialog")
    On Error Resume Next
Debut:
    With CD
        .MaxFileSize = 260
        .InitDir = DOSSIER
        .CancelError = True
        .DialogTitle = TITRE
        .Filter = "Fichiers Excels(*." & 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

Sub test()
  'Dim s As String
  's = OuvrirAvecCD("*.txt", "D:\", "TITRE")
  Call OuvrirAvecCD("txt", "D:\", "TITRE")
  'MsgBox s
  MsgBox FichierSélectionné
End Sub

Si il te fait toujours la même erreur, alors là, je ne sais pas quoi faire...

Commentaire de BruNews le 27/07/2005 14:45:11 administrateur CS

Enlever la déclaration de CD ne change rien, pas cela qui installera un ocx.
Refais avec GetOpenFileName() et fonctionnera partout.

Commentaire de Squall____ le 27/07/2005 15:09:54

OK !

Donc, avis à tous, si mon module ne fonctionne pas chez vous, tournez vous vers une autre source qui utilise l'API GetOpenFileName.

Je promet de faire une autre source un peu plus tard du même type qui utilisera l'API GetOpenFileName quand je la maitriserais.

Merci pour ton aide BruNews, je vais me documenter sur l'API.

Commentaire de BruNews le 27/07/2005 15:29:23 administrateur CS

Regarde ici, me semble déjà fait:
http://www.vbfrance.com/code.aspx?id=7221

Commentaire de hicham_a_t23 le 01/08/2005 14:48:11

Bonjour Squal_, merci pour ton code, moi j'ai enlevé la declaration " dim cd as commondialog" et ca a marché.
c bien ce que tu as fais. ca permet d'aider bcp de personne.

Commentaire de Squall____ le 01/08/2005 15:16:10

Merci Hicham_A_t23 je vais faire la modification de ma source pour enlever la déclaration. Comme ça, tout le monde pourras en profiter !

Commentaire de cotmar le 03/04/2006 18:09:04

Bonjour,
J'ai juste une petite critique (constructive). Si tu veux enlever le GOTO, tu peux faire comme suit...
Cordialement.
Marco.


Public Function FctOuvrirAvecCD(Extension As String, DOSSIER As String, TITRE As String) As String
'    FichierSélectionné = ""
Dim CD As Object
Dim BoolFin As Boolean

    On Error Resume Next
    
    BoolFin = False

    Set CD = CreateObject("MSComDlg.CommonDialog")
'Debut:
    While BoolFin = False
        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
                    BoolFin = True
'                    Exit Function
                Else
                    BoolFin = False
'                    GoTo Debut
                End If
            Else
                BoolFin = True
            End If
        End With
    Wend
    
    FctOuvrirAvecCD = CD.FileName
    Set CD = Nothing
End Function

Commentaire de homer202 le 28/02/2007 10:44:37

Bonjour,
Je cherche un moyen de récupérer "l'historique" des fichiers ouvert par la common dialog. J'entend par historique la list box qui correspond au nom du fichier.

j'espere avoir été clair.
D'avance merci.

Commentaire de Squall____ le 28/02/2007 11:40:27

J'ai pas tout compris mais je pense que tu devrais jeter un oeil dans la base de registres.
C'est là que les historiques d'ouvertures de fichiers sont stockés en général...

Commentaire de homer202 le 28/02/2007 12:20:12

Exact les derniers fichiers ouvert sont stockés la :
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpensaveMRU\doc
Dans OpensaveMRU on trouve les différentes extensions ici pour moi c'est des fichiers .doc

Merci c'était ce dont j'avais besoin.

Commentaire de neamar le 07/06/2007 21:15:52

Exactement ce qu'il me fallait ! Merci !

Commentaire de Squall____ le 08/06/2007 13:23:51

Merci pour ton commentaire !
ça fait plaisir de voir que ma source est utile.

Commentaire de MALIKcpp le 16/07/2007 15:49:06

J'était en train de faire un logiciel pour un call center qui devais être capable d'injecter des fichiers u truc pas très complexe qui devais leur servir et j'avais un problème avec le common dialog au niveau des filtres ton programme m'a drôlement servi merci ! Et je me demandais si je ne pourais pas publié ce logiciel qui t'appartient en parti ^^ je te metterait les copyrights bien sur ^^

Commentaire de Squall____ le 16/07/2007 16:32:47

Bien sur que tu peux publier ton logiciel. Pas de problèmes. On est là pour s'entraider non ???

Et merci pour ton commentaire.

Commentaire de Alvaten le 25/09/2007 10:31:18 9/10

Merci,

C'est pas tout à fait ce que je cherchais mais j'ai pu l'adapter très facilement.

Commentaire de mabejaoui le 10/10/2008 16:48:56

Bonjour,
j'ai un probleme avec l'utilisation de la commande CreateObject("MSComDlg.CommonDialog").

Le msg d'erreur suivant s'affiche :
Un composant ActiveX ne peut pas creer un objet.

Merci d'avance.

Commentaire de BruNews le 10/10/2008 19:35:41 administrateur CS

Regarde le comment du: 27/07/2005 15:29:23

Commentaire de kalika666 le 22/12/2008 13:43:02

Bonjour,

Tout d'abord merci pour ce code !

Je suis un peu surpris par contre, car après avoir appelé la fonction, si j'affiche la variable FichierSélectionné dans une msgbox, il ne me renvoie que le nom du fichier et non le chemin complet... Il y a-t'il quelque chose à changer pour obtenir par exemple "c:\program files\monfichier.xls" ?

L'objectif étant d'intégrer cette variable dans quelque chose du genre "Open FichierSélection for input as #1"

Merci d'avance !

Commentaire de Squall____ le 23/12/2008 14:09:35

Tout d'abord, désolé de t'avoir fait attendre.

C'est vraiment bizarre ce que tu me dis... Je vient de réessayer et j'ai bien le nom complet du fichier dans ma variable "FichierSélectionné"...

J'ai utilisé cette petite sub pour tester :

Private Sub test()
    
    Call OuvrirAvecCD("xls", "c:\", "TOTO fait du ski")
    MsgBox FichierSélectionné
    
End Sub

Si ça ne focntionne toujours pas chez toi, peux tu me donner plus d'informations sur ta configuration ? Quel Windows ? Quel editeur VB (VB6, VBA Excel) ?

Commentaire de cotmar le 23/12/2008 14:44:02

Bonjour,

Ça marche très bien ce code, par contre n'oubliez pas de mettre le "option explicit" pour obliger à déclarer les variables, sinon, vous finirez par avoir des soucis un jour à l'autre.

Option Explicit

'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)
Dim CD
    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

----------------------------------------------------------------------------

Ensuite j'ai créé un bouton sur ma feuille Excel pour tester et j'y ai affecté la procédure correspondant à l'évènement "click" suivante :

----------------------------------------------------------------------------


Option Explicit

Private Sub CommandButton1_Click()
    OuvrirAvecCD "*.xls", "c:\", "Choisissez un fichier"
End Sub


Petite remarque en passant, vérifiez que les référence soient bien cochées dans VBA, sinon effectivement ça ne marchera pas.
Vous devez avoir dans le menu : "Option -> Référence la référence suivante qui va être cochée : "Microsoft Form object library" (normalement il met un numéro de version chez moi c'est "Microsoft Form 2.0 object library" mais c'est peut-être différent chez vous).

Bonne fêtes, joyeux Noël, bonne année à tous.

Marco.

Commentaire de kalika666 le 23/12/2008 14:45:44

Au contraire, merci de ta rapidité !

Je suis sur Word, avec VBA word, ce qui doit sans doute poser problème car j'ai bien appelé la fonction comme tu le précises...

Si d'aventure d'autres personnes passaient par là avec le même type de problème, j'ai résolu le mien grâce à :

emplacementfichier = Excel.Application.GetOpenFilename("Fichier Excel (*.xls), *.xls")

Ce qui n'est pas vraiment ce que ta macro fait mais bon...

Commentaire de Ericbzc le 23/03/2010 06:50:59

Bonjour à tous,

Le topic date un peu... mais qui sait, pê pourrez vous m'aider.
Mon but : faire sélectionner un fichier par l'utilisateur (à partir d'une macro excel) et mémoriser son emplacement et son nom.

D'après mes recherches, 2 solutions : getopenfilename et common dialog.
* Getopenfilename ne permet pas de spécifier un répertoire donné par défaut (genre initdir)... la solution proposée sur certains forums  Chdir ne fonctionne que si le fichier est sur un lecteur de la machine (C, D, Z..) ! Or moi je souhaite utiliser un chemin réseau \\serveur\ data
*Commondialog (et plus précisément la ligne set CD = *** du code ci-dessus) génère le fameux message d'erreur "un composant activeX ne peut pas créer d'objet"
je pense à un pb de bibliothèque (outils > références) ??

Des idées ?
Merci d'avance.
Cdt, EB

Commentaire de Squall____ le 23/03/2010 07:37:53

je te ferais un retour lorsque je serais arrivé au boulot. t'inquiètes pas, on va t'aider, j'ai largement progressé depuis 2005 ! :)

Commentaire de Ericbzc le 23/03/2010 08:31:06

lol. :o)
Merci beaucoup en tout cas. je te donne un peu plus de détail sur ce que je veux faire.

Je suis dans un fichier xls qui génère un reporting sur des ventes. La 1ère étape consiste à aller chercher les données du mois en cours qui se situent sur \\Serveur\data\source.xls

Je voudrais donc que, en cliquant sur un bouton "mettre à jour les données", une boite de dialogue s'ouvre demandant de sélectionner le fichier source.
et j'aimerai que par défaut le répertoire qui s'affiche dans la boite de dialogue soit \\serveur\data.

D'après mes essais, getopenfilename ouvre par défaut "mes documents". je n'ai pas trouvé le moyen d'ouvrir \\serveur\data

et commondialog génère un message d'erreur "composant activeX..."




Commentaire de Squall____ le 23/03/2010 08:41:32

quelle version d'excel tu utilises et sous quel windows tu es ? c'est juste par curiosité...

Commentaire de Ericbzc le 23/03/2010 10:03:24

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

Commentaire de Squall____ le 23/03/2010 10:11:09

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.

Commentaire de samloba le 07/11/2010 13:20:15

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

Commentaire de samloba le 07/11/2010 13:42:53

j'ai trouvé

Filter = "Fichiers Access|*.mdb"
merci

Commentaire de Squall____ le 08/11/2010 10:29:36

Content que ça puisse aider !

Bonne programmation Samloba.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

CommonDialog ShowOpen [ par Morpho ] Bonjour à tousJ'utilise un commondialog ( cdgFichier ) avec le .flags cdlOFNFileMustExist qui control l'existance du fichier et pose la question de sa Gérer CommonDialog en VBA [ par ZOBYMASTER ] Bonjour les grands maîtres g un gros probleme avec VBA: j'ai placé un contrôle commondialog sur une userform, jusque là pas de probleme; quand je lanc sécurisation source VBA/excel + code d'utilisation [ par Pat_TOTO ] Bonjour,J'ai une petite appli en excel (1 fichier Bdd, 1 fichier de formules, 1 fichier appli purement en excel, le tout en VBA) que je souhaite sécur VBA et lecture fichier xml [ par gu_barthe ] Bonjour,J'ai un pb auquel mes recherche n'ont rien donné de concret.J'ai créé un fichier xml (qui sert de configuration a mon application vba pour aut ACCESS / VBA / MULTIMEDIA grrrr [ par Cramfr ] Bonjours les codes-Sourcessien, Voici mon problème: Tout d'abord je voulais enregistrer dans un champs ole d'une table des fichiers vierges pour l'e VBA (Excel) et décompression zip [ par Danimoth ] Bonjour,Je dois récupérer des valeurs dans un fichier texte contenu dans un fichier zip. (Ce zip est un programme automate). Comme il y a des centaine ouvrir un fichier bat par vba [ par didopen ] bonjour,je n'arrive pas a faire excuter un fichier .bat par une macro vbaj'ai creer un fichier sous c:/toto/formlorsque je clique manuellement dessus Inclure un code exterieur dans une macro vba [ par larsene67 ] Bonjour, J'espere ne pas être trop redondant avec ma question, mais je n'ai pas réussi à y trouver de réponses juque là...Voila, j'ai actuellement plu importation fichier texte [ par downhillman ] Salut à tous,je débute dans le logiciel VBA et je voudrais savoir comment faire pour importer un fichier texte d'un logiciel déjà existant sur mon log VBA récupérer une valeur dans un fichier Excel à partir de Word [ par GuyRev ] Bonjour,Je souhaite, en VBA, récuperer une ou plusieurs valeurs dans un fichier Excel, ouvert ou non, à partir de Word .MerciGuyRev


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales