Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook > VBA Outlook
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/04/2008, 16h43   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 59
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 59
Points : 14
Points : 14
Par défaut [VBA/Outlook] Browser de fichier

Bonjour,

je suis en train de developper une petite appli pour creer des e-mails...j'ai realiser un formulaire...et dans ce formulaire je souhaiterais pouvoir browser mon disque pour collecter le nom du fichier que je vais mettre en attachement dans mon e-mail...

je travaille avec Oulook 2003 SP3

j'ai essaye plusieurs methodes mais aucune ne fonctionne car les objets utilise ne sont pas connus
- application.getOpenFilename
- Application.FileDialog(msoFileDialogFilePicker)

j'ai poutant declare en refrence:
- Microsoft Outlook 11.0 Object Library
- Microsoft Office 12.0 Object Library (meme probleme avec Office 11.0)

quelqu'un aurait il une idee de mon erreur?

par avance merci,

Daniel.
daniel_gre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 18h53   #2
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Salut,
Il n'y a pas de telle boite integrée à Outlook mais tu peux utiliser un COMMONDIALOG (Feuille Microsoft Forms 2.0) sur un userform.
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 19h33   #3
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 745
Points : 8 745
Salut,

Pour cela tu peux utiliser les APIs, l'avantage c'est que tu n'a pas pas besoin de références et cette méthode peut être distribuée sans soucis

Code à placer dans un module :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
 'Déclaration de l'API
Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
                   "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
 
 'Structure du fichier
Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type
 
 'Constantes
Private Const OFN_READONLY = &H1
Private Const OFN_OVERWRITEPROMPT = &H2
Private Const OFN_HIDEREADONLY = &H4
Private Const OFN_NOCHANGEDIR = &H8
Private Const OFN_SHOWHELP = &H10
Private Const OFN_ENABLEHOOK = &H20
Private Const OFN_ENABLETEMPLATE = &H40
Private Const OFN_ENABLETEMPLATEHANDLE = &H80
Private Const OFN_NOVALIDATE = &H100
Private Const OFN_ALLOWMULTISELECT = &H200
Private Const OFN_EXTENSIONDIFFERENT = &H400
Private Const OFN_PATHMUSTEXIST = &H800
Private Const OFN_FILEMUSTEXIST = &H1000
Private Const OFN_CREATEPROMPT = &H2000
Private Const OFN_SHAREAWARE = &H4000
Private Const OFN_NOREADONLYRETURN = &H8000
Private Const OFN_NOTESTFILECREATE = &H10000
 
Private Const OFN_SHAREFALLTHROUGH = 2
Private Const OFN_SHARENOWARN = 1
Private Const OFN_SHAREWARN = 0
 
 
Public Function OuvrirUnFichier(Titre As String, _
                                TypeRetour As Byte, _
                                Optional TitreFiltre As String, _
                                Optional TypeFichier As String, _
                                Optional RepParDefaut As String) As String
 'OuvrirUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir _
 'la boîte de dialogue de sélection d'un fichier.
 'Explication des paramètres
    'Handle = le handle de la fenêtre (Me.Hwnd)
    'Titre = Titre de la boîte de dialogue
    'TypeRetour (Définit la valeur, de type String, renvoyée par la fonction)
        '1 = Chemin complet + Nom du fichier
        '2 = Nom fichier seulement
    'TitreFiltre = Titre du filtre
        'Exemple: Fichier Access
        'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
    'TypeFichier = Extention du fichier (Sans le .)
        'Exemple: MDB
        'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
    'RepParDefaut = Répertoire d'ouverture par defaut
        'Exemple: C:\windows\system32
        'Si vous laissé l'argument vide, par defaut il se place dans le répertoire de votre application
 
Dim StructFile As OPENFILENAME
Dim sFiltre As String
 
 'Construction du filtre en fonction des arguments spécifiés
If Len(TitreFiltre) > 0 And Len(TypeFichier) > 0 Then
  sFiltre = TitreFiltre & " (" & TypeFichier & ")" & Chr$(0) & "*." & TypeFichier & Chr$(0)
End If
sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)
 
 
 'Configuration de la boîte de dialogue
  With StructFile
    .lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure
    '.hwndOwner = Handle 'Identification du handle de la fenêtre
    .lpstrFilter = sFiltre 'Application du filtre
    .lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254
    .nMaxFile = 254 'Taille maximale du fichier
    .lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254
    .nMaxFileTitle = 254  'Taille maximale du nom du fichier
    .lpstrTitle = Titre 'Titre de la boîte de dialogue
    .flags = OFN_HIDEREADONLY  'Option de la boite de dialogue
    .lpstrInitialDir = "C:\"    'Chemin
 
  End With
 
If (GetOpenFileName(StructFile)) Then 'Si un fichier est sélectionné
    Select Case TypeRetour
      Case 1: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFile, InStr(1, StructFile.lpstrFile, vbNullChar) - 1))
      Case 2: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFileTitle, InStr(1, StructFile.lpstrFileTitle, vbNullChar) - 1))
    End Select
  End If
 
End Function
Appel de la fonction :
Code :
MsgBox OuvrirUnFichier("BD Open", 1, "All", "*")
Merci à shwin pour ce code (issu de la FAQ Access)

Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2008, 00h39   #4
Membre actif
 
Laurent CUENET
Inscription : août 2007
Messages : 139
Détails du profil
Informations personnelles :
Nom : Laurent CUENET

Informations forums :
Inscription : août 2007
Messages : 139
Points : 161
Points : 161
Envoyer un message via MSN à Laurent CUENET Envoyer un message via Skype™ à Laurent CUENET
Bonsoir,

J'ai pas compris la question, ton appli est dans quel langage ?

A bientôt
Laurent CUENET est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2008, 10h28   #5
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
MErci DOLPHY35, pour cette source je la met de coté.

Pour Laurent je pense que c'est du VBA OUTLOOK
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2008, 10h58   #6
Membre actif
 
Laurent CUENET
Inscription : août 2007
Messages : 139
Détails du profil
Informations personnelles :
Nom : Laurent CUENET

Informations forums :
Inscription : août 2007
Messages : 139
Points : 161
Points : 161
Envoyer un message via MSN à Laurent CUENET Envoyer un message via Skype™ à Laurent CUENET
Oliv,

Merci j'avais vu mais une appli développée par exemple en vb.net, il me semble que pour browser un disque. il y a un contrôle tout prêt.

Alors pourquoi réinventé le ...

A bientôt
Laurent CUENET est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2008, 11h19   #7
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Tu as raison laurent, si tu crées un objet outlook à partir de word ou excel sans aller vers d'autres langages tu peux utiliser la boite de dialogue intégrèe dont parlait Daniel
Citation:
Application.FileDialog(msoFileDialogFilePicker)
Et puis c'était avant tout une boutade
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2009, 12h06   #8
Membre actif
 
Benoit Selllll
Conseil - Consultant en systèmes d'information
Inscription : juin 2006
Messages : 222
Détails du profil
Informations personnelles :
Nom : Benoit Selllll
Âge : 29
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2006
Messages : 222
Points : 198
Points : 198
Envoyer un message via MSN à ben_ghost
Bonjour,

Bon je rebondis sur ce sujet car j'ai essayer d'utliser cette méthode :

Application.FileDialog

mais bizarrement je n'arrive pas a créer l'object j'obtient cela comme message :
"propritété ou méthode non défini par cette object"

et en effet lorsque je fais ctrl+espace aprés avoir taper application, Filedialog ne s'affiche pas ...

Autrement cette biblihiothéque ne semble pas charger pourtant lorsque je vais dans les références je trouve bien la bonne biblihiothéque ...

Quelqu'un a déja eu ce probléme ?
__________________
J'suis loin d'être un expert, seulement un passionné.
L'humanité de l'homme ne reside que dans son intelligence. Certains l'on compris. D'autres ne le comprendront jamais... (Histrat)
ben_ghost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2009, 12h14   #9
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
SAlut,
Dans quel logiciel se trouve ton code, si c'est outlook c'est normal (relire les posts)
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2009, 12h44   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 363
Points : 29 284
Points : 29 284
Salut,

FileDialog est dans la librairie Office il me semble.

Pour l'utiliser, c'est assez simple.

Code :
1
2
3
4
5
6
7
8
9
Sub TestDLG()
Dim dlg As FileDialog
 
Set dlg = Application.FileDialog(msoFileDialogFilePicker)
dlg.Show
 
Debug.Print dlg.SelectedItems(1)
 
End Sub
Dans le cas où tu n'autorises que la sélection d'un seul éléments.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2009, 14h40   #11
Membre actif
 
Benoit Selllll
Conseil - Consultant en systèmes d'information
Inscription : juin 2006
Messages : 222
Détails du profil
Informations personnelles :
Nom : Benoit Selllll
Âge : 29
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2006
Messages : 222
Points : 198
Points : 198
Envoyer un message via MSN à ben_ghost
Hello,

Tout d'abord merci pour vos réponses.

Vu que j'ai tendance a être tétue j'ai fais quelque recherche, FileDialog n'est malheuresement pas supporter par outlook ... (pourquoi ???!!!! faut pas chercher je crois... c'est du microsoft MDRRRR)

J'ai donc tenter autre chose créer un object Application.excel pour faire appel a partir de cette objet a son FileDialog mais là encore cela pose probléme car cela dépend de la configuration du poste client et surtout de la version d'excel installez (j'ai fais le teste et les versions trop vielles non pas FileDialog)...

Donc j'ai fini par utiliser les fonctions de l'APIs et j'ai créer un module spéciale pour ma fonction de selection de répertoire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
Private Const BIF_RETURNONLYFSDIRS As Long = &H1
Private Const BIF_DONTGOBELOWDOMAIN As Long = &H2
Private Const BIF_RETURNFSANCESTORS As Long = &H8
Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000
Private Const BIF_BROWSEFORPRINTER As Long = &H2000
Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000
Private Const MAX_PATH As Long = 260
 
Type BrowseInfo
    hOwner As Long
    pidlRoot As Long
    pszDisplayName As String
    lpszINSTRUCTIONS As String
    ulFlags As Long
    lpfn As Long
    lParam As Long
    iImage As Long
End Type
 
Type SHFILEOPSTRUCT
    hwnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Boolean
    hNameMappings As Long
    lpszProgressTitle As String
End Type
 
Declare Function SHGetPathFromIDListA Lib "shell32.dll" ( _
    ByVal pidl As Long, _
    ByVal pszBuffer As String) As Long
 
Declare Function SHBrowseForFolderA Lib "shell32.dll" ( _
    lpBrowseInfo As BrowseInfo) As Long
 
 
Function BrowseFolder(Optional Caption As String = "") As String
 
Dim BrowseInfo As BrowseInfo
Dim FolderName As String
Dim ID As Long
Dim Res As Long
 
With BrowseInfo
   .hOwner = 0
   .pidlRoot = 0
   .pszDisplayName = String$(MAX_PATH, vbNullChar)
   .lpszINSTRUCTIONS = Caption
   .ulFlags = BIF_RETURNONLYFSDIRS
   .lpfn = 0
End With
 
FolderName = String$(MAX_PATH, vbNullChar)
ID = SHBrowseForFolderA(BrowseInfo)
If ID Then
   Res = SHGetPathFromIDListA(ID, FolderName)
   If Res Then
       BrowseFolder = Left$(FolderName, InStr(FolderName, vbNullChar) - 1)
   End If
End If
 
End Function
et on fais appel a la fonction avec ces lignes :

Code :
1
2
3
4
5
6
 
        Repertoire = BrowseFolder(Caption:="Selectionner un dossier")
        If Repertoire = vbNullString Then
            Debug.Print "Aucun dossier sélectionner"
            Exit Sub
        End If
Merci encore pour vos participations même si je me suis finalement débrouiller tout seul mais ce sujet m'a pas mal mis sur la piste
__________________
J'suis loin d'être un expert, seulement un passionné.
L'humanité de l'homme ne reside que dans son intelligence. Certains l'on compris. D'autres ne le comprendront jamais... (Histrat)
ben_ghost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2009, 15h13   #12
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 363
Points : 29 284
Points : 29 284
Salut,

Il est dans la bibliothèque Office !
Qui n'est pas automatiquement ajoutée au projet il est parfois nécessaire de l'ajouter au projet manuellement.

Microsoft Office 11.0 Object Library
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2009, 11h12   #13
Membre actif
 
Benoit Selllll
Conseil - Consultant en systèmes d'information
Inscription : juin 2006
Messages : 222
Détails du profil
Informations personnelles :
Nom : Benoit Selllll
Âge : 29
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2006
Messages : 222
Points : 198
Points : 198
Envoyer un message via MSN à ben_ghost
J'ai déjà essayer ça mais apparement il me charge Microsoft Office 9.0 Object Library ... donc bon l'APIs semble être le moyen de contourment idéal...

Par contre petite question savez ou je peux trouvez une doc sur les différentes focntion de l'API car j'aimerais faire aussi de la comparaison d'image via le vba mais je ne sais pas trop comment faire...
__________________
J'suis loin d'être un expert, seulement un passionné.
L'humanité de l'homme ne reside que dans son intelligence. Certains l'on compris. D'autres ne le comprendront jamais... (Histrat)
ben_ghost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2009, 11h28   #14
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 363
Points : 29 284
Points : 29 284
Salut,

Je pense qu'il faut au moins avoir 2003 pour utiliser un objet FileDialog.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2009, 16h06   #15
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Citation:
Envoyé par ben_ghost Voir le message
J'ai déjà essayer ça mais apparement il me charge Microsoft Office 9.0 Object Library ... donc bon l'APIs semble être le moyen de contourment idéal...
cela dépend de ta version 11= OFFICE 2003 , 9 ca doit etre office xp
Citation:
Par contre petite question savez ou je peux trouvez une doc sur les différentes focntion de l'API car j'aimerais faire aussi de la comparaison d'image via le vba mais je ne sais pas trop comment faire...
Pour travailler sur des images je te conseille de consulter la page d'arkham46
ci-dessous
http://arkham46.developpez.com/
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2009, 16h19   #16
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 363
Points : 29 284
Points : 29 284
Citation:
Envoyé par Oliv- Voir le message
cela dépend de ta version 11= OFFICE 2003 , 9 ca doit etre office xp

Pour travailler sur des images je te conseille de consulter la page d'arkham46
ci-dessous
Le premier post mentionnait 2003.
D'où le danger de poster à la suite d'une autre demande.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h47.


 
 
 
 
Partenaires

Hébergement Web