IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Problème de boucle infinie sur sous-dossiers Outlook [WD19]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut Problème de boucle infinie sur sous-dossiers Outlook
    Bonsoir, je suis actuellement en stage et j'utilise Windev 19 pour ce que je dois faire.
    L'entreprise m'a chargé de développer une application de boîte de messagerie qui récupère les dossiers, mails etc à partir d'Outlook.
    Donc j'ai fais deux procédures(une pour lister les dossiers et une pour lister les mails).
    J'utilise des objets Outlook pour faire cela --> https://msdn.microsoft.com/fr-fr/lib.../ff863890.aspx

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Procedure PF_ListeDossier(LOCAL myFolder, LOCAL ls_dossierRecherche est une chaîne)
     
    ls_DossierEnCours est un chaîne
    ls_DossierParent est un chaîne
     
    MonParentFolder est un objet OLE dynamique
    myFolders est un objet OLE dynamique
    //myFolders est un objet OLE dynamique
    mySubFolders est un objet OLE dynamique
    ln_OlFolderInbox est un entier = 6 //Pointe vers la boite de réception
     
    ls_DossierEnCours = myFolder>>Name //Renvoie le nom du dossier
    MonParentFolder = myFolder>>Parent //Renvoie le parent 
     
    //Cherche le parent du dossier
    TANTQUE MonParentFolder>>Name <> "Boîte de réception" //Tant que le nom du dossier parent n'est pas boite de réception
    Trace("Parent",MonParentFolder>>Name) //Trace le nom du dossier parent 
    SI MonParentFolder>>Name ~= "adresse@mail.fr" ALORS SORTIR //On sort de la boucle si le nom du dossier parent est adresse@mail.fr
    Trace("Sous-dossier",ls_DossierEnCours) //Trace le nom du dossier
    ls_DossierParent = MonParentFolder>>Name + "\" + ls_DossierParent //Dossier parent = NomParent\
    FIN
     
    myFolders = myFolder>>Folders //Renvoie tous les dossiers d'un dossier spécifié
    mySubFolders = myFolders>>GetFirst //Renvoie le premier dossier
     
    //Cherche les dossiers du parent
    TANTQUE PAS mySubFolders = Null //Tant qu'il y a des dossiers
    ls_DossierEnCours = ls_DossierParent + "\" + mySubFolders>>Name //Dossier en cours = NomParent\NomDossier
    Trace("Sous-dossier",ls_DossierEnCours) //Trace le nom du sous-dossier 
    SI Position(ls_dossierRecherche, ls_DossierEnCours) > 0 ALORS //Si on est positionné sur le dossier recherché
    Trace("trouvé",ls_DossierEnCours) //Trace le nom du sous-dossier qui a été trouvé
    PF_ListeDossier(mySubFolders, ls_dossierRecherche) //Liste les dossiers recherchés
    SORTIR
    FIN
    mySubFolders = myFolders>>GetNext //Renvoie le dossier suivant
    FIN
     
    RENVOYER mySubFolders //Renvoie le dossier recherché
    Donc lorsque je clic sur un dossier, il va récupérer les mails avec l'expéditeur, le sujet etc.
    Mon problème est que lorsque je clic sur un sous-dossier du sous-dossier de "Boîte de réception", il y a une boucle infini. Je sais pas trop comment faire pour régler ça... Si quelqu'un veut bien m'aider, merci

    Ps : Je suis pas sur de ce que j'ai mis en commentaire par contre.

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Tu ne dis pas sur quoi est ta boucle infinie... Vraisemblablement ne trouve t'il pas de "boîte de réception". As-tu essayé le mode pas à pas ?

    Tu as un très bon exemple livré avec Windev (WD Pilotage de Outlook).
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Lorsque je clic sur un sous-sous dossier, le trace se lance dans une boucle infini entre "Parent" et "sous-dossier"

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Combien de sous dossiers as-tu ?
    As-tu déroulé ton code pas à pas ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Après recherche, j'ai trouvé une solution temporaire :

    Lorsque je clic sur un dossier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    myNameSpace est un objet OLE dynamique
    ObjOutlook est un objet OLE dynamique
    myFolder est un objet OLE dynamique
    myFolderMail est un objet Automation dynamique
     
    ObjOutlook = allouer un objet OLE "OutLook.Application"
    myNameSpace = ObjOutlook>>GetNamespace("MAPI")
    myFolder = myNameSpace>>PickFolder
     
    EmailChangeDossier(gnIdSession,Remplace(ArbreSelect(MoiMême),TAB,"\") )
    myFolderMail = PF_ListeDossier(myFolder)
    PF_ListeMails(myFolderMail)
    J'utilise donc "PickFolder" qui va m'afficher une fenêtre où je pourrais choisir un dossier à sélectionner et là pas de problème de boucle infini.

    Ma procédure pour lister mes dossiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    myFolder est un objet Automation dynamique
    i est un entier
    Count est un entier
    myFolderPath est une chaîne
     
    POUR i = mySubFolder>>Folders>>Count A 1 PAS -1
    	myFolder = mySubFolder>>Folders(i)
    	myFolderPath = myFolder>>FolderPath
    	Count = myFolder>>Items>>Count
    	Trace("Dossiers",myFolderPath + ":" + Count )
    FIN                                       
     
    POUR i = mySubFolder>>Folders>>Count A 1 PAS -1
    	PF_ListeDossier(mySubFolder>>Folders(i))
    FIN
     
    RENVOYER mySubFolder
    Ma procédure pour lister mes mails :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    PROCEDURE PF_ListeMails(LOCAL mySubFolders)
     
    ln_ligneMail est un entier
    le_NbDest est entier
    ls_AdrDest est une chaîne
    i est un entier
    j est un entier
    lesPJ est un entier
    DateHeure est une DateHeure
    DateReception est une Date
     
    MailItem est un objet OLE dynamique
    PJ est un objet Automation dynamique
     
    PR_SMTP_ADDRESS est une chaîne = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
     
    //Ouvre la fenêtre de chargement
    OuvreSoeur(FS_Patience)
     
    Multitâche(-1)
     
    // Affiche la liste des messages OutLook
    TableSupprimeTout(TB_Mails)
     
    //On cherche les éléments du dossier où on est positionné
    POUR i = 1 _A_ mySubFolders>>Items>>Count
    	MailItem = mySubFolders>>Items(i) //MailItem = à tous les éléments du dossier qu'on a cherché
     
    	ln_ligneMail = TableAjouteLigne(TB_Mails)
     
    	DateHeure = MailItem>>ReceivedTime
    	DateReception = DateHeure..Date
     
    	//On affecte les champs avec l'objet MailItem
     
    	TB_Mails.CT_Expéditeur	[ln_ligneMail] 	= PF_GetSenderSmtpAddress(MailItem) //Extrait l'adresse mail de l'expéditeur 
    	TB_Mails.CT_Sujet		[ln_ligneMail] 	= MailItem>>subject //Sujet du mail
    	TB_Mails.CT_Date		[ln_ligneMail] 	= DateReception //Date de réception
    	TB_Mails.CT_ID			[ln_ligneMail] 	= MailItem>>EntryId //ID du mail
    	TB_Mails.CT_Texte		[ln_ligneMail]  = MailItem>>HTMLBody
     
    //	Selon MailItem>>BodyFormat
    //		CAS 2
    //			TB_Mails.CT_Texte[ln_ligneMail] = MailItem>>HTMLBody
    //		CAS 1
    //			TB_Mails.CT_Texte[ln_ligneMail] = MailItem>>Body
    //		CAS 3
    //			TB_Mails.CT_Texte[ln_ligneMail] = MailItem>>RTFBody		
    //	FIN
     
    	// Récupération des pièces jointes de l'Email
    	POUR lesPJ = 1 _A_ MailItem>>Attachments>>Count
     
    		// Affichage du nom de chaque pièce jointe
    		TB_Mails.CT_PJ[ln_ligneMail] = MailItem>>Attachments>>Item(lesPJ)>>FileName + "; "
     
    	FIN
     
     	//Extrait l'adresse mail du destinataire
     	le_NbDest = MailItem>>recipients>>Count
     
    	POUR j= 1 A le_NbDest
    		ls_AdrDest = PF_ExtraitAdresseEmail(MailItem>>recipients(j)>>Address)
    		SI Position(ls_AdrDest, "@") < 1 ALORS                   
    		ls_AdrDest = MailItem>>recipients(j)>>PropertyAccessor>>GetProperty(PR_SMTP_ADDRESS)
    		FIN                               
     
    		//Récupère les types de destinataiies avec leur adresse mail 
    		SELON MailItem>>recipients(j)>>Type
    			CAS 1                     
    				TB_Mails.CT_Destinataire[ln_ligneMail]	+= ls_AdrDest + ";"
    			CAS 2 
    				TB_Mails.CT_Cc[ln_ligneMail]	+= ls_AdrDest + ";"
    			CAS 3                    
    				TB_Mails.CT_Cci[ln_ligneMail]	+= ls_AdrDest + ";"
    		FIN                     
    	FIN
    FIN
     
    //Sélection de la 1ère ligne de la table et affichage du contenu du message dans la zone du bas
    SI TB_Mails..Occurrence <> 0 ALORS
    	TableSelectPlus(TB_Mails,1)	
    	ExécuteTraitement(TB_Mails,trtSélection)
    FIN
     
    Ferme(FS_Patience)
    Mais je voudrais ne pas passer par Pickfolder car c'est pas agréable à voir. Comment pourrais-je faire?

  6. #6
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    hello,
    tu peux faire comme ceci par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    objApp est un objet Automation dynamique //outlook.application
    objNS est un objet Automation dynamique //namespace
    olStartFolder est un objet Automation dynamique
    objApp=ObjetActif("OutLook.Application")
    SI objApp = Null ALORS
    	// On lance OutLook
    	objApp = allouer un objet Automation "Outlook.Application"
    FIN
    objNS=objApp>>GetNamespace("MAPI")
    // Equivalent de PickFolder
    // répertoire de départ = boîte de réception du compte bibi@free.fr (Inbox en anglais, Boîte de réception en français)
    olStartFolder = objNS>>Folders("bibi@free.fr")>>Folders("Inbox")
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    D'accord, merci ! cependant, ça me renvoie que les mails de ma boîte de réception pour n'importe quel dossier :/

  8. #8
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Normal que cela te renvoie uniquement cela. INBOX = boîte de réception.

    A toi d'adapter le code de l'excellent JP.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Je l'ai bien compris, mais je n'arrive pas à afficher les mails par dossier.

    Je continue de rechercher

  10. #10
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    hello,
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    olStartFolder = objNS>>Folders("bibi@free.fr")>>Folders("Inbox")>>Folders("sousdossierN1")
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    J'ai bien compris, mais si je dois faire une boucle, je ne sais pas trop comment m'y prendre.

    Peut être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    POUR i = 1 _A_ olStartFolder>>Items>>Count
    	//Traitement
    FIN
    Edit :

    J'ai testé ça mais sans résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    myNameSpace est un objet Automation dynamique
    ObjOutlook est un objet Automation dynamique
    myFolder est un objet Automation dynamique
     
    ObjOutlook = ObjetActif("Outlook.Application")
     
    SI ObjOutlook = Null ALORS
    	ObjOutlook = allouer un objet Automation "OutLook.Application"
    FIN
     
    myNameSpace = ObjOutlook>>GetNamespace("MAPI")
    //myFolder = myNameSpace>>GetDefaultFolder(CST_OlFolderInbox)
     
     
    POUR i = 1 _A_ myNameSpace>>Folders>>Count
    	myFolder = myNameSpace>>Folders(i)
    FIN
     
    EmailChangeDossier(gnIdSession,Remplace(ArbreSelect(MoiMême),TAB,"\") )
    PF_ListeMails(PF_ListeDossier(myFolder))
    Je suis un peu perdu

  12. #12
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    hello,
    on peut aussi utiliser la méthode AdvancedSearch pour faire une recherche de dossier (même plus si utilisation de filtre, par exemple recherche des messages envoyés par une personne)
    voici un exemple d'utilisation dans windev :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // Recherche de dossier  OUTLOOK
    // J.P Janvier 2016
    objApp est un objet Automation dynamique //outlook.application
    objApp=ObjetActif("OutLook.Application")
    SI objApp = Null ALORS
    	// On lance OutLook
    	objApp = allouer un objet Automation "Outlook.Application"
    FIN
    // on branche la procédure FinRecherche sur l'événement AdvancedSearchComplete
    AutomationEvénement(FinRecherche,objApp,"AdvancedSearchComplete")
    FinDeRecherche = Faux
    objSearch est un objet Automation dynamique
    // recherche simple de  dossier, pas de filtre,pas de recherche dans les sous-dossiers
    objSearch = objApp>>AdvancedSearch("'\\bibi@free.fr\Inbox\sousdossierN1'")
    // on attend que la recherche se termine
    TANTQUE PAS FinDeRecherche 
    	Multitâche(-10)	
    FIN
    // on balaie tous les résultats et on affiche le sujet des courriers trouvés
    POUR i = 1 _A_  objSearch>>Results>>Count 	
    	Trace( "sujet  " + i + " : " + objSearch>>Results>>Item(i)>>Subject )	
    FIN
    La variable FinDeRecherche est une variable booléenne globale déclarée par exemple dans le code du projet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FinDeRecherche est un booléen
    La procédure FinRecherche appelée par l'événement AdvancedSearchComplete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PROCEDURE FinRecherche()
    Trace("Fin de Recherche")
    FinDeRecherche = Vrai
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Merci, mais ça ne m'aide pas plus finalement

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Ayant fait une mise au point avec mon patron, je ne dois pas mélanger les objets outlook et les fonctions email de Windev.
    Du coup, je dois remplacer EmailListeDossier mais je ne sais pas trop comment. Quelqu'un pourrait-l m'aider?

    Fin d'initialisation du menu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    //Déclarations des variables
    //--------------------------
    ListeDossiers 	est un objet Automation dynamique
    Dossier 		est une chaîne
     
     
    //Liste les dossiers
    //-------------------
     
    //Ajoute un dossier à l'arborescence
    //-----------------------------------
    POUR TOUTE CHAÎNE Dossier DE ListeDossiers SEPAREE PAR RC
    	ArbreAjoute(AR_Dossier,Remplace(Dossier, "\", TAB))
    FIN
     
    // Affiche à l'ouverture de l'application la liste des mails de la boîte de réception
    // ----------------------------------------------------------------------------------
    PF_ListeMails(DossierBoiteReception)
    ma procédure qui liste les dossiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    PROCEDURE PF_ListeDossier(LOCAL mySubFolders) 
     
    //Déclarations des variables
    //--------------------------
    i est un entier   
     
    //Recherche la liste des dossiers
    // ------------------------------
    POUR i = 1 _A_ mySubFolders>>Folders>>Count
    	PF_ListeDossier(mySubFolders>>Folders(i))
    FIN
     
    RENVOYER mySubFolders

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    La solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    //Déclarations des variables
    //--------------------------
    NbDossier		est un entier
    MonDossier		est un objet Automation dynamique
    ln_Compteur 	est un entier
    ln_PosCar 		est un entier
    ls_Temp 		est une chaîne
     
    //Récupère la boîte de réception
    //------------------------------
    ln_PosCar 		= Position(NomBR, "\", 0, DepuisFin) 	 		//Se positionne sur le dernier "\" du chemin
    NomBR 	 		= Milieu(NomBR, ln_PosCar + 1)			//Récupère le nom du dossier boîte de réception après le "\"
     
    //Ajoute la boîte de réception
    //---------------------------
    ArbreAjoute(AR_Dossier, NomBR)
     
    //Liste les dossiers de la boîte de réception
    //-------------------------------------------
    NbDossier 		 = DossierBoiteReception>>Folders>>Count	 	//Récupère le nombre de dossier de la boîte de réception
     
    POUR ln_Compteur = 1 _A_ NbDossier
    	MonDossier 	 = DossierBoiteReception>>Folders(ln_Compteur)//Récupère le numéro du dossier
    	ls_Temp 	 = MonDossier>>Folderpath 				//Récupère le chemin du dossier
    	ln_PosCar 	 = Position(ls_Temp, "\", 0, DepuisFin)			   //Se positionne sur le dernier "\" du chemin du dossiers
     
    	//Ajoute les dossiers de la boîte de réception
    	//--------------------------------------------
      	ArbreAjoute(AR_Dossier, NomBR + TAB +Milieu(ls_Temp, ln_PosCar + 1),aDéfaut,aDéfaut,ls_Temp)
     
    //Liste les sous-dossiers
      	//-----------------------
      	NbSousDossier		= MonDossier>>Folders>>Count 				//Récupère le nombre de sous-dossier pour chaque dossier
      	//trace(NbSousDossier)
     
      	POUR i = 1 _A_ NbSousDossier
     		MonSousDossier	= MonDossier>>Folders(i)					//Récupère le numéro du sous-dossier
     		ls_CheminSub	= MonSousDossier>>FolderPath				//Récupère le chemin du sous-dossier
     		ln_PosCar2 	 	= Position(ls_CheminSub, "\", 0, DepuisFin)	//Se positionne sur le dernier "\" du chemin du sous-dossier
     
      		//trace(ls_CheminSub)
     
    		//Ajoute les sous-dossiers s'il en existe
    		//---------------------------------------
      		ArbreAjoute(AR_Dossier,NomBR + TAB + Milieu(ls_Temp, ln_PosCar + 1) + TAB +Milieu(ls_CheminSub, ln_PosCar2 + 1) ,aDéfaut,aDéfaut,ls_CheminSub,aAccepteDoublon)
      	FIN
    FIN
     
    	ArbreDéroule(AR_Dossier,NomBR)
     
    //Affiche à l'ouverture de l'application la liste des mails de la boîte de réception
    //----------------------------------------------------------------------------------
    PF_ListeMails(DossierBoiteReception)

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    En fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    PROCEDURE PF_ListeDossier(mySubFolders)
     
    //Déclarations des variables
    //--------------------------
    i est un entier
    SousDossier est un objet Automation dynamique
    ls_temp est une chaîne 
     
    //Recherche la liste des dossiers
    // ------------------------------
     
    POUR i = 1 _A_ mySubFolders>>Folders>>Count
     
    	SousDossier = mySubFolders>>Folders(i)
    	ls_temp		= SousDossier>>FolderPath
     
    		ArbreAjoute(AR_Dossier,Remplace(ls_temp,"\",TAB),aDéfaut,aDéfaut,ls_temp)
     
    	//Récursivité des dossiers
    	//------------------------
    	PF_ListeDossier(SousDossier)
    FIN
     
    RENVOYER mySubFolders
    Initialisation du menu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	//Appel de la récursivité pour les sous-dossiers
    	//----------------------------------------------
    	PF_ListeDossier(DossierBoiteReception)
     
    //Affiche à l'ouverture de l'application la liste des mails de la boîte de réception
    //----------------------------------------------------------------------------------
    PF_ListeMails(DossierBoiteReception)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] file_put_contents problème d'enregistrement sur sous-dossier
    Par k3vin dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/07/2012, 16h32
  2. [Débutant]Problème de boucle infini
    Par Keldou dans le forum Octave
    Réponses: 1
    Dernier message: 21/04/2007, 17h20
  3. [MySQL] Problème de boucle while sur base de données
    Par Darhyl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/05/2006, 15h11
  4. Problème de boucle infinie...
    Par anne-so dans le forum Langage
    Réponses: 1
    Dernier message: 25/04/2006, 14h10
  5. [Eval] Problème de boucle for sur des tableaux
    Par battle_benny dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/01/2006, 23h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo