PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → DRAG AND DROP D'UNE PIECE JOINTE SELECTIONNEE DANS OUTLOOK
DRAG AND DROP D'UNE PIECE JOINTE SELECTIONNEE DANS OUTLOOK
Débuté par priv!w+o15576M5rnL5vt0nyv5n6v10+s4, 15 nov. 2024 17:10 - 3 réponses
Posté le 15 novembre 2024 - 17:10
Après beaucoup de recherches, je n'arrives ps a faire ce que je veux

Je souhaiterais glisser une pièce jointe d'un mail qui peux en contenir plusieurs dans un élément d'une fenêtre pour pouvoir enregistrer cette pièce jointe dans une arborescence.

J'arrive a faire un drag and drop avec le mail entier et également d'une pièce jointe si le mail n'en a qu'une seule.

Je ne sais pas comment savoir quelle pièce jointe est sélectionnée
Si vous savez faire cela je suis preneuse.

Ci dessous mon code
Seule la derniere partie pose pb (//glissé d'une pièce jointe d'un email outlook)

SI DnDDonnéeDisponible(CF_HDROP) = Vrai ALORS
*****
SINON
SI gbOutlookInstallé=Faux ALORS
Info("Outlook n'est pas installé !")
RETOUR
FIN
SI DnDDonnéeDisponible(CF_TEXT) = Vrai ALORS
//glissé d'un email outlook
i est un entier
MailItem est un objet automation dynamique
POUR i = 1 _À_ gL_Outlook>>ActiveExplorer>>Selection>>Count
MailItem = gL_Outlook>>ActiveExplorer>>Selection(i)
sNomTemp est une chaîne=fRépertoireTemp()+SAI_NomDocument+".msg"
MailItem>>SaveAs(sNomTemp)
Document_glissé(sNomTemp)
fSupprime(sNomTemp)
FIN
SINON
//glissé d'une pièce jointe d'un email outlook
i est un entier
MailItem est un objet automation dynamique
gL_Outlook>>ActiveExplorer>>Selection>>Count
MailItem = gL_Outlook>>ActiveExplorer>>Selection(1)
MailItem>>AttachmentSelection

sNomTemp est une chaîne=ComplèteRep(fRépertoireTemp())+MailItem>>Attachments>>Item(1)>>FileName
MailItem>>Attachments>>Item(1)>>SaveAsFile(sNomTemp)
//Document_glissé(sNomTemp)
fSupprime(sNomTemp)

FIN
FIN
Posté le 18 novembre 2024 - 14:08
Personne ne sait faire ça?



Julie a écrit :
Après beaucoup de recherches, je n'arrives ps a faire ce que je veux

Je souhaiterais glisser une pièce jointe d'un mail qui peux en contenir plusieurs dans un élément d'une fenêtre pour pouvoir enregistrer cette pièce jointe dans une arborescence.

J'arrive a faire un drag and drop avec le mail entier et également d'une pièce jointe si le mail n'en a qu'une seule.

Je ne sais pas comment savoir quelle pièce jointe est sélectionnée
Si vous savez faire cela je suis preneuse.

Ci dessous mon code
Seule la derniere partie pose pb (//glissé d'une pièce jointe d'un email outlook)

SI DnDDonnéeDisponible(CF_HDROP) = Vrai ALORS
*****
SINON
SI gbOutlookInstallé=Faux ALORS
Info("Outlook n'est pas installé !")
RETOUR
FIN
SI DnDDonnéeDisponible(CF_TEXT) = Vrai ALORS
//glissé d'un email outlook
i est un entier
MailItem est un objet automation dynamique
POUR i = 1 _À_ gL_Outlook>>ActiveExplorer>>Selection>>Count
MailItem = gL_Outlook>>ActiveExplorer>>Selection(i)
sNomTemp est une chaîne=fRépertoireTemp()+SAI_NomDocument+".msg"
MailItem>>SaveAs(sNomTemp)
Document_glissé(sNomTemp)
fSupprime(sNomTemp)
FIN
SINON
//glissé d'une pièce jointe d'un email outlook
i est un entier
MailItem est un objet automation dynamique
gL_Outlook>>ActiveExplorer>>Selection>>Count
MailItem = gL_Outlook>>ActiveExplorer>>Selection(1)
MailItem>>AttachmentSelection

sNomTemp est une chaîne=ComplèteRep(fRépertoireTemp())+MailItem>>Attachments>>Item(1)>>FileName
MailItem>>Attachments>>Item(1)>>SaveAsFile(sNomTemp)
//Document_glissé(sNomTemp)
fSupprime(sNomTemp)

FIN
FIN
Membre enregistré
197 messages
Posté le 18 novembre 2024 - 16:36
Bonjour


voici notre procédure appelée lors du lacher en drag and drop dans une table qui fait le comportement souhaité dans le cas de pièces jointes droppés depuis Outlook :


Procedure Cherche_PJ(p est une Procedure)

nbPj est un entier
obj est un objet automation dynamique
MonOutlook est un objet OLE "Outlook.Application"
sChaineCara est une chaîne = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_ 1234567890."

QUAND EXCEPTIONEXCEPTION DANS

nbPj=MonOutlook>>ActiveExplorer>>AttachmentSelection>>Count
FAIRE
nbPj = 0
FIN
SI nbPj> 0 ALORS
obj = MonOutlook>>ActiveExplorer
SINON
QUAND EXCEPTIONEXCEPTION DANS
nbPj=MonOutlook>>ActiveInspector>>AttachmentSelection>>Count
FAIRE
RENVOYER nbPj
FIN
SI nbPj=0 ALORS RENVOYER nbPj
obj = MonOutlook>>ActiveInspector
FIN

QUAND EXCEPTIONEXCEPTION DANS
POUR i=1 À nbPj
soit monfile = obj>>AttachmentSelection>>Item(i)>>FileName
monfile = Format_Nom_Fichier(monfile)

sNewsujet est une chaîne = ""
POUR z=1 _À_ Taille(monfile)
SI PAS Contient(sChaineCara,monfile[[z]]) ALORS
sNewsujet+=""
SINON
sNewsujet+=monfile[[z]]
FIN
FIN

monfile = fRépertoireTemp()+[fSep]+ sNewsujet
obj>>AttachmentSelection>>Item(i)>>SaveAsFile(monfile)
p(monfile)
FIN

FAIRE
Erreur(ExceptionInfo(errComplet))
FIN


PROCEDURE INTERNE Format_Nom_Fichier(MonNom)
MonNom = Remplace(MonNom,":","")
MonNom = Remplace(MonNom,"<","")
MonNom = Remplace(MonNom,">","")
MonNom = Remplace(MonNom,"""","")
MonNom = Remplace(MonNom,"/","")
MonNom = Remplace(MonNom,"\","")
MonNom = Remplace(MonNom,"|","")
MonNom = Remplace(MonNom,"?","")
MonNom = Remplace(MonNom,"*","")
MonNom = Remplace(MonNom,TAB,"")
RENVOYER MonNom
FIN

RENVOYER nbPj
Posté le 20 novembre 2024 - 09:01
Bonjour merci pour votre aide, mais ça ne fonctionne pas mieux pour moi.
Peut être qu'en fonction des versions outlook, il y a des différences...
nbPj est toujours égal a 0

Merci quand même