Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook
Outlook Forum d'entraide sur Microsoft Office 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 17/10/2011, 14h05   #1
Membre habitué
 
Inscription : février 2007
Messages : 133
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 133
Points : 147
Points : 147
Par défaut [OL-2007] Script à exécution aléatoire

Bonjour,

J'ai un script qui maintenant tourne bien -grâce aux conseils donnés dans ce forum- et cependant il arrive parfois qu'il y ait une erreur:

Citation:
Compile error: Next without for
alors que ce même code s'est déjà exécuté correctement.

Voici le code en question :

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
 
Sub Export_mails(Item As Outlook.MailItem)
  Dim myOlApp As New Outlook.Application
    Dim myNamespace As Outlook.NameSpace
    Dim myInbox As Outlook.Folder
    Dim myItems As Outlook.Items
    Dim myItem As Object
    Set myNamespace = myOlApp.GetNamespace("MAPI")
    'Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
    Set myInbox = Application.GetNamespace("MAPI").Folders("Mailbox - MesMails").Folders("Folders").Folders("RepertoirFiltre")
    Set myItems = myInbox.Items
    Dim strName As String
    Dim sSubject As String
    Dim fso As New FileSystemObject
 
    For Each myItem In myInbox.Items
 
        strName = myItem.Subject
        'Ici on supprime les caractères non autorisé dans les noms de fichiers
       strName = Left(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(myItem.Subject, "\", ""), "/", ""), ":", ""), "*", ""), "?", ""), "<", ""), ">", ""), "|", ""), ".", ""), """", ""), vbTab, ""), Chr(7), ""), 160)
 
        If Not fso.FileExists("C:\Temp\pipo\" & strName & ".txt") Then
                myItem.SaveAs "C:\Temp\pipo\" & strName & ".txt", olTXT
        Set myItem = myItems.GetNext
    Next myItem
End Sub
On peu voir que la boucle for est bien terminée par un "Next myItem" qui l'a ouvert.

Et pourtant
dlewin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 13h53   #2
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 597
Points : 1 597
Envoyer un message via MSN à carden752
Bonjour,

Citation:
Code :
1
2
3
4
5
 
Set myItems = myInbox.Items
    For Each myItem In myInbox.Items
        Set myItem = myItems.GetNext
    Next myItem
Tu fais donc appel deux fois au passage à l'élément suivant une fois dans la boucle et une fois en faisant évoluer la boucle.
Or si myitems.GetNext est après la fin=> Renvoi Nothing et Next sur Nothing n'existe pas d'où l'erreur.

Code :
1
2
3
4
5
 
Set myItems = myInbox.Items
    For Each myItem In myInbox.Items
        ' Set myItem = myItems.GetNext 
    Next myItem
La ligne commentée est donc à supprimer
Code :
Set myItem = myItems.GetNext
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 14h20   #3
Membre habitué
 
Inscription : février 2007
Messages : 133
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 133
Points : 147
Points : 147
ah ok je vois. Enfin sauf une chose : comme j'ai intégré ce script dans une règle qui affiche une alerte, je sais que cela arrive bien avant la fin puisque je vois plusieurs messages liés à l'execution de plusieurs fois cette règle.

En tout cas, Merci bien.
dlewin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 09h44   #4
Membre habitué
 
Inscription : février 2007
Messages : 133
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 133
Points : 147
Points : 147
en fait, ça le fait toujours ((
Du coup j'ai commenté l'autre next, et c'est pas mieux, il se plaint de l'absence de "if".

Par contre, en commentnat le if, le then associé et le GetNext (lignes 22,23,24), l'execution se fait bien.
dlewin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 09h56   #5
Membre habitué
 
Inscription : février 2007
Messages : 133
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 133
Points : 147
Points : 147
Par défaut RTFM

bon on ne se moque pas:
la plupart des infos que j'avais lu, ne mentionnait pas touteun bloc "if" complet. En fait, avec ma remarque précèdente je me suis aperçu que cela venait de ces lignes et en grattant un peu en fermant correctement le bloc if, avec un <end if> cela va mieux.

Il faut quand même préciser que le message d'erreur est vraiment piegeux car il fait chercher du côté de la boucle for.
dlewin 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 11h35.


 
 
 
 
Partenaires

Hébergement Web