Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Re: Filtrer sur le contenu d'une PJ ATTXXX.txt

11 réponses
Avatar
Oliv'
*Oliv' <SUPPRIMERCECIcatteau@ricour-assurances.fr> que je salut a écrit *:

Fabrice tu peux sans doute utiliser la fonction de règle de message
"executer un script"

Le script doit comporter un argument MailItem (ou MeetingItem) et se trouver
soit dans thisoutlooksession soit dans un module



Sub RunAScriptRuleRoutine(MyMail As MailItem)
Dim strID As String
Dim olNS As Outlook.NameSpace
Dim msg As Outlook.MailItem

strID = MyMail.EntryID
Set olNS = Application.GetNamespace("MAPI")
Set msg = olNS.GetItemFromID(strID)
' do stuff with msg, e.g.
MsgBox msg.Body

Set msg = Nothing
Set olNS = Nothing
End Sub

See http://www.outlookcode.com/d/code/zaphtml.htm#ol2002 for another
example.
http://support.microsoft.com/?kbid=306108

> A+ Oliv

10 réponses

1 2
Avatar
Fabrice N.
Alors ça c'est trop génial !

Je viens de tester, c'est exactement ce qu'il me faut...
Là, j'ai plus d'excuse pour ne pas vite finir cette macro...
Si l'application intéresse quelqu'un d'autre, faite signe, je publierai le
code...

Avec ça, les possibilité de règles sont illimitées... ;o)

Vraiment, un grand merci Oliv', je sais pas si c'est très bon pour soigner
ma flème, mais en tout cas, ça me rend bien service.

A+

PS : je savais bien que t'étais curieux et que tu ne laisserais pas une
question en suspend... ;o)

"Oliv'" a écrit dans le message
de news: uH7ujoz$

*Oliv' que je salut a écrit *:

Fabrice tu peux sans doute utiliser la fonction de règle de message
"executer un script"

Le script doit comporter un argument MailItem (ou MeetingItem) et se
trouver soit dans thisoutlooksession soit dans un module



Sub RunAScriptRuleRoutine(MyMail As MailItem)
Dim strID As String
Dim olNS As Outlook.NameSpace
Dim msg As Outlook.MailItem

strID = MyMail.EntryID
Set olNS = Application.GetNamespace("MAPI")
Set msg = olNS.GetItemFromID(strID)
' do stuff with msg, e.g.
MsgBox msg.Body

Set msg = Nothing
Set olNS = Nothing
End Sub

See http://www.outlookcode.com/d/code/zaphtml.htm#ol2002 for another
example.
http://support.microsoft.com/?kbid06108

A+ Oliv






Avatar
Fabrice N.
ça y est, j'ai pu pondre un petit bout de truc.
A voir plus bas...

J'ai attribué ce script à une règle qui l'exécute que pour les mails
contenant un mot que seule le serveur fax ajoute dans l'objet ( son nom ),
pour qu'il ne soit pas lancé pour tous les mails qui arrivent.

Par contre, j'ai 2 soucis :
Le premier, c'est qu'à chaque démarrage d'Outlook, à la première application
de la règle, j'ai le message d'activation des macros.
ça me fait chier, mais je ne veux pas baisser le niveau de sécurité au
minimum. Et je n'ai pas de certificat numérique à part ceux de mon serveur
qu'il faut redéclarer tous les an...

L'autre soucis un peu plus chiant, c'est qu'en suite, le script met du temps
à s'éxécuter.
C'est à dire que lorsque je reçois un mail vérifiant les critères, il faut
attendre entre 30 s et 1 min avant qu'il soit déplacé.
La règle semble marché normalement car lorsque les mails ne vérifient pas le
critère, les règles suivantes sont exécutées tout de suite.
D'autre part, si j'exécute la règle manuellement, le script déplace bien le
message instantanéement...

Une idée sur la cause de ce phénomène ?

Voici le code :
############################################################
Sub TrierLesFax(MonMail As MailItem)

Dim objPJ As Attachment, ObjetFichier As Object
Dim LigFic As String, FileID As Integer
Dim NumSDA As String
Dim DossierDest As Outlook.MAPIFolder

Dim Rep As String, Nb_PJ As Integer

' Définition du dossier de destination "Boîte aux lettres -
MoiSous-DossiersSous-Sous-Dossier"
On Error Resume Next
Set DossierDest = Application.GetNamespace("MAPI").Folders.Item("Boîte
aux lettres - Moi")
Set DossierDest = DossierDest.Folders.Item("Sous-Dossiers")
Set DossierDest = DossierDest.Folders.Item("Sous-Sous-Dossier")

If Err <> 0 Then
MsgBox "Dossier de destination introuvable"
Exit Sub
End If

On Error GoTo 0

' Vérification du nb de PJ et sortie du script si il n'y en a pas
Nb_PJ = MonMail.Attachments.Count
If Nb_PJ = 0 Then Exit Sub

' Définition du répertoire temporaire et création si il n'existe pas
Rep = "c:temp"
If Rep <> "" Then
If Dir(Rep, vbDirectory) = "" Then
MkDir Rep
End If
End If

For Each objPJ In MonMail.Attachments

If Left(objPJ.FileName, 3) = "ATT" Then
objPJ.SaveAsFile Rep & objPJ.FileName

' Lecture du fichier à la recherche de la variable
X-LF-RoutingString
FileID = FreeFile
Open Rep & objPJ.FileName For Input As FileID
Do While Not EOF(FileID)
Line Input #FileID, LigFic
If Left(LigFic, 18) = "X-LF-RoutingString" Then
NumSDA = Right(LigFic, Len(LigFic) - 20)
End If
Loop
Close #1

' Suppression du fichier temporaire
Set ObjetFichier = CreateObject("Scripting.FileSystemObject")
ObjetFichier.deletefile Rep & objPJ.FileName, True
Set ObjetFichier = Nothing

End If

Next

If NumSDA = "111111111" Then MonMail.Move DossierDest

End Sub
############################################################

A+


"Oliv'" a écrit dans le message
de news: uH7ujoz$

*Oliv' que je salut a écrit *:

Fabrice tu peux sans doute utiliser la fonction de règle de message
"executer un script"

Le script doit comporter un argument MailItem (ou MeetingItem) et se
trouver soit dans thisoutlooksession soit dans un module



Sub RunAScriptRuleRoutine(MyMail As MailItem)
Dim strID As String
Dim olNS As Outlook.NameSpace
Dim msg As Outlook.MailItem

strID = MyMail.EntryID
Set olNS = Application.GetNamespace("MAPI")
Set msg = olNS.GetItemFromID(strID)
' do stuff with msg, e.g.
MsgBox msg.Body

Set msg = Nothing
Set olNS = Nothing
End Sub

See http://www.outlookcode.com/d/code/zaphtml.htm#ol2002 for another
example.
http://support.microsoft.com/?kbid06108

A+ Oliv






Avatar
Oliv'
*Fabrice N." <"f.nebbia" dans le domaine "technicn.com <"f.nebbia" dans le
domaine "technicn.com"> que je salut a écrit *:
ça y est, j'ai pu pondre un petit bout de truc.
A voir plus bas...

J'ai attribué ce script à une règle qui l'exécute que pour les mails
contenant un mot que seule le serveur fax ajoute dans l'objet ( son
nom ), pour qu'il ne soit pas lancé pour tous les mails qui arrivent.


Parfait

Par contre, j'ai 2 soucis :
Le premier, c'est qu'à chaque démarrage d'Outlook, à la première
application de la règle, j'ai le message d'activation des macros.
ça me fait chier, mais je ne veux pas baisser le niveau de sécurité au
minimum. Et je n'ai pas de certificat numérique à part ceux de mon
serveur qu'il faut redéclarer tous les an...


il faut en créer un avec SELFCERT ("certificat numérique pour les projets
VBA" dans démarrrer / MO/ outils microsoft office)
et l'ajouter à ton projet. (VBE /outils /signature électronique)
Pour les autres utilisateurs il faut afficher le détail du certificat et
l'installer puis à la réouverture on peu cocher la case qui mémorise la
confiance


L'autre soucis un peu plus chiant, c'est qu'en suite, le script met
du temps à s'éxécuter.
C'est à dire que lorsque je reçois un mail vérifiant les critères, il
faut attendre entre 30 s et 1 min avant qu'il soit déplacé.
La règle semble marché normalement car lorsque les mails ne vérifient
pas le critère, les règles suivantes sont exécutées tout de suite.
D'autre part, si j'exécute la règle manuellement, le script déplace
bien le message instantanéement...

Une idée sur la cause de ce phénomène ?


j'ai pas testé mais ca à l'air bien , ajoute un msgbox à la fin pour voir
son fonctionnement.

Oliv'

Voici le code :
############################################################
Sub TrierLesFax(MonMail As MailItem)

Dim objPJ As Attachment, ObjetFichier As Object
Dim LigFic As String, FileID As Integer
Dim NumSDA As String
Dim DossierDest As Outlook.MAPIFolder

Dim Rep As String, Nb_PJ As Integer

' Définition du dossier de destination "Boîte aux lettres -
MoiSous-DossiersSous-Sous-Dossier"
On Error Resume Next
Set DossierDest > Application.GetNamespace("MAPI").Folders.Item("Boîte aux lettres -
Moi") Set DossierDest = DossierDest.Folders.Item("Sous-Dossiers")
Set DossierDest = DossierDest.Folders.Item("Sous-Sous-Dossier")

If Err <> 0 Then
MsgBox "Dossier de destination introuvable"
Exit Sub
End If

On Error GoTo 0

' Vérification du nb de PJ et sortie du script si il n'y en a pas
Nb_PJ = MonMail.Attachments.Count
If Nb_PJ = 0 Then Exit Sub

' Définition du répertoire temporaire et création si il n'existe
pas Rep = "c:temp"
If Rep <> "" Then
If Dir(Rep, vbDirectory) = "" Then
MkDir Rep
End If
End If

For Each objPJ In MonMail.Attachments

If Left(objPJ.FileName, 3) = "ATT" Then
objPJ.SaveAsFile Rep & objPJ.FileName

' Lecture du fichier à la recherche de la variable
X-LF-RoutingString
FileID = FreeFile
Open Rep & objPJ.FileName For Input As FileID
Do While Not EOF(FileID)
Line Input #FileID, LigFic
If Left(LigFic, 18) = "X-LF-RoutingString" Then
NumSDA = Right(LigFic, Len(LigFic) - 20)
End If
Loop
Close #1

' Suppression du fichier temporaire
Set ObjetFichier > CreateObject("Scripting.FileSystemObject")
ObjetFichier.deletefile Rep & objPJ.FileName, True Set
ObjetFichier = Nothing
End If

Next

If NumSDA = "111111111" Then MonMail.Move DossierDest

End Sub
############################################################

A+


"Oliv'" a écrit dans le
message de news: uH7ujoz$

*Oliv' que je salut a
écrit *: Fabrice tu peux sans doute utiliser la fonction de règle de
message
"executer un script"

Le script doit comporter un argument MailItem (ou MeetingItem) et se
trouver soit dans thisoutlooksession soit dans un module



Sub RunAScriptRuleRoutine(MyMail As MailItem)
Dim strID As String
Dim olNS As Outlook.NameSpace
Dim msg As Outlook.MailItem

strID = MyMail.EntryID
Set olNS = Application.GetNamespace("MAPI")
Set msg = olNS.GetItemFromID(strID)
' do stuff with msg, e.g.
MsgBox msg.Body

Set msg = Nothing
Set olNS = Nothing
End Sub

See http://www.outlookcode.com/d/code/zaphtml.htm#ol2002 for another
example.
http://support.microsoft.com/?kbid06108

A+ Oliv






Avatar
Fabrice N.
Salut !

Parfait


Je sais, on me le dit souvent... ;o)


il faut en créer un avec SELFCERT ("certificat numérique pour les projets
VBA" dans démarrrer / MO/ outils microsoft office)
et l'ajouter à ton projet. (VBE /outils /signature électronique)
Pour les autres utilisateurs il faut afficher le détail du certificat et
l'installer puis à la réouverture on peu cocher la case qui mémorise la
confiance


Bonne idée...

j'ai pas testé mais ca à l'air bien , ajoute un msgbox à la fin pour voir
son fonctionnement.


c'est ce que j'ai fait, et c'est ce qui m'a permis de me rendre compte que
le script mettait du temps à s'exécuter...
Je n'ai toujours pas compris pourquoi puisque lorsque je lance la règle
manuellement, l'exécution est instantanée...
dur dur ... !!!!

Avatar
Oliv'
*Fabrice N." <"f.nebbia" dans le domaine "technicn.com <"f.nebbia" dans le
domaine "technicn.com"> que je salut a écrit *:

c'est ce que j'ai fait, et c'est ce qui m'a permis de me rendre
compte que le script mettait du temps à s'exécuter...
Je n'ai toujours pas compris pourquoi puisque lorsque je lance la
règle manuellement, l'exécution est instantanée...
dur dur ... !!!!



Le fait de redéfinir ta variable DossierDest à plusieurs reprises est peut
être la cause.
Chez moi le code ci-dessous (un peu modifié)est instantané, également en
mode mis en cache.


Sub TrierLesFax(MonMail As MailItem)

Dim objPJ As Attachment, ObjetFichier As Object
Dim LigFic As String, FileID As Integer
Dim NumSDA As String
Dim DossierDest As Outlook.MAPIFolder

Dim Rep As String, Nb_PJ As Integer

' Définition du dossier de destination "Boîte aux
lettres -MoiSous-DossiersSous-Sous-Dossier"
On Error Resume Next
Dim myolApp As Outlook.Application
Dim myNamespace As Outlook.NameSpace
Set myolApp = CreateObject("Outlook.Application")
Set myNamespace = myolApp.GetNamespace("MAPI")
Set myolApp.ActiveExplorer.CurrentFolder = _
myNamespace.GetDefaultFolder(olFolderInbox)


Set DossierDest =
myolApp.ActiveExplorer.CurrentFolder.Folders.Item("Sous-Dossiers")
'Set DossierDest = DossierDest.Folders.Item("Sous-Sous-Dossier")

If Err <> 0 Then
MsgBox "Dossier de destination introuvable"
Exit Sub
End If

On Error GoTo 0

' Vérification du nb de PJ et sortie du script si il n'y en a pas
Nb_PJ = MonMail.Attachments.Count
' If Nb_PJ = 0 Then Exit Sub
'
' ' Définition du répertoire temporaire et création si il n'existe pas
' Rep = "c:temp"
' If Rep <> "" Then
' If Dir(Rep, vbDirectory) = "" Then
' MkDir Rep
' End If
' End If
'
' For Each objPJ In MonMail.Attachments
'
' If Left(objPJ.FileName, 3) = "ATT" Then
' objPJ.SaveAsFile Rep & objPJ.FileName
'
' ' Lecture du fichier à la recherche de la variable x -LF -
RoutingString
' FileID = FreeFile
' Open Rep & objPJ.FileName For Input As FileID
' Do While Not EOF(FileID)
' Line Input #FileID, LigFic
' If Left(LigFic, 18) = "X-LF-RoutingString" Then
' NumSDA = Right(LigFic, Len(LigFic) - 20)
' End If
' Loop
' Close #1
'
' ' Suppression du fichier temporaire
' Set ObjetFichier = CreateObject("Scripting.FileSystemObject")
' ObjetFichier.DeleteFile Rep & objPJ.FileName, True
' Set ObjetFichier = Nothing
'
' End If
'
' Next
NumSDA = "111111111"
If NumSDA = "111111111" Then MonMail.Move DossierDest

End Sub

Avatar
Fabrice N.
Salut Oliv'

J'ai testé avec ta macro, j'ai le même résultat.
Plus de 30 s avant exécution du code. En plus, il ne me trouve pas le
dossier "Sous-Dossiers"
...

Je sais pas si c'est lié, mais depuis mon passage à Outlook 2003, j'ai
toujours remarqué un petit délai dans la reception de mes mails.
Quand j'envoie un mail, il faut que je change de dossier pour qu'il
disparaissent de la boîte d'envoi.
Pour la réception, c'est pareil, si je ne me déplace pas dans les dossiers,
je ne vois pas les nouveau messages...
Par contre, même une fois les messages arrivé, ma macros met un certain
temps à se lancer...
Et c'est pas une des instructions de la macro qui bloque car j'ai mis un
msgbox au tout début et il met un moment à apparaître aussi...
C'est à rien y comprendre...


"Oliv'" a écrit dans le message
de news:

*Fabrice N." <"f.nebbia" dans le domaine "technicn.com <"f.nebbia" dans le
domaine "technicn.com"> que je salut a écrit *:

c'est ce que j'ai fait, et c'est ce qui m'a permis de me rendre
compte que le script mettait du temps à s'exécuter...
Je n'ai toujours pas compris pourquoi puisque lorsque je lance la
règle manuellement, l'exécution est instantanée...
dur dur ... !!!!



Le fait de redéfinir ta variable DossierDest à plusieurs reprises est
peut être la cause.
Chez moi le code ci-dessous (un peu modifié)est instantané, également en
mode mis en cache.


Sub TrierLesFax(MonMail As MailItem)

Dim objPJ As Attachment, ObjetFichier As Object
Dim LigFic As String, FileID As Integer
Dim NumSDA As String
Dim DossierDest As Outlook.MAPIFolder

Dim Rep As String, Nb_PJ As Integer

' Définition du dossier de destination "Boîte aux
lettres -MoiSous-DossiersSous-Sous-Dossier"
On Error Resume Next
Dim myolApp As Outlook.Application
Dim myNamespace As Outlook.NameSpace
Set myolApp = CreateObject("Outlook.Application")
Set myNamespace = myolApp.GetNamespace("MAPI")
Set myolApp.ActiveExplorer.CurrentFolder = _
myNamespace.GetDefaultFolder(olFolderInbox)


Set DossierDest =
myolApp.ActiveExplorer.CurrentFolder.Folders.Item("Sous-Dossiers")
'Set DossierDest = DossierDest.Folders.Item("Sous-Sous-Dossier")

If Err <> 0 Then
MsgBox "Dossier de destination introuvable"
Exit Sub
End If

On Error GoTo 0

' Vérification du nb de PJ et sortie du script si il n'y en a pas
Nb_PJ = MonMail.Attachments.Count
' If Nb_PJ = 0 Then Exit Sub
'
' ' Définition du répertoire temporaire et création si il n'existe pas
' Rep = "c:temp"
' If Rep <> "" Then
' If Dir(Rep, vbDirectory) = "" Then
' MkDir Rep
' End If
' End If
'
' For Each objPJ In MonMail.Attachments
'
' If Left(objPJ.FileName, 3) = "ATT" Then
' objPJ.SaveAsFile Rep & objPJ.FileName
'
' ' Lecture du fichier à la recherche de la variable x -LF -
RoutingString
' FileID = FreeFile
' Open Rep & objPJ.FileName For Input As FileID
' Do While Not EOF(FileID)
' Line Input #FileID, LigFic
' If Left(LigFic, 18) = "X-LF-RoutingString" Then
' NumSDA = Right(LigFic, Len(LigFic) - 20)
' End If
' Loop
' Close #1
'
' ' Suppression du fichier temporaire
' Set ObjetFichier = CreateObject("Scripting.FileSystemObject")
' ObjetFichier.DeleteFile Rep & objPJ.FileName, True
' Set ObjetFichier = Nothing
'
' End If
'
' Next
NumSDA = "111111111"
If NumSDA = "111111111" Then MonMail.Move DossierDest

End Sub





Avatar
Oliv'
*Fabrice N." <"f.nebbia" dans le domaine "technicn.com <"f.nebbia" dans le
domaine "technicn.com"> que je salut a écrit *:
Salut Oliv'

J'ai testé avec ta macro, j'ai le même résultat.
Plus de 30 s avant exécution du code. En plus, il ne me trouve pas le
dossier "Sous-Dossiers"
...

Je sais pas si c'est lié, mais depuis mon passage à Outlook 2003, j'ai
toujours remarqué un petit délai dans la reception de mes mails.
Quand j'envoie un mail, il faut que je change de dossier pour qu'il
disparaissent de la boîte d'envoi.
Pour la réception, c'est pareil, si je ne me déplace pas dans les
dossiers, je ne vois pas les nouveau messages...
Par contre, même une fois les messages arrivé, ma macros met un
certain temps à se lancer...
Et c'est pas une des instructions de la macro qui bloque car j'ai mis
un msgbox au tout début et il met un moment à apparaître aussi...
C'est à rien y comprendre...




tu es en pst ou exchange ?
Essaye en créant un profil test


"Oliv'" a écrit dans le
message de news:

*Fabrice N." <"f.nebbia" dans le domaine "technicn.com <"f.nebbia"
dans le domaine "technicn.com"> que je salut a écrit *:

c'est ce que j'ai fait, et c'est ce qui m'a permis de me rendre
compte que le script mettait du temps à s'exécuter...
Je n'ai toujours pas compris pourquoi puisque lorsque je lance la
règle manuellement, l'exécution est instantanée...
dur dur ... !!!!



Le fait de redéfinir ta variable DossierDest à plusieurs reprises
est peut être la cause.
Chez moi le code ci-dessous (un peu modifié)est instantané,
également en mode mis en cache.


Sub TrierLesFax(MonMail As MailItem)

Dim objPJ As Attachment, ObjetFichier As Object
Dim LigFic As String, FileID As Integer
Dim NumSDA As String
Dim DossierDest As Outlook.MAPIFolder

Dim Rep As String, Nb_PJ As Integer

' Définition du dossier de destination "Boîte aux
lettres -MoiSous-DossiersSous-Sous-Dossier"
On Error Resume Next
Dim myolApp As Outlook.Application
Dim myNamespace As Outlook.NameSpace
Set myolApp = CreateObject("Outlook.Application")
Set myNamespace = myolApp.GetNamespace("MAPI")
Set myolApp.ActiveExplorer.CurrentFolder = _
myNamespace.GetDefaultFolder(olFolderInbox)


Set DossierDest >> myolApp.ActiveExplorer.CurrentFolder.Folders.Item("Sous-Dossiers")
'Set DossierDest = DossierDest.Folders.Item("Sous-Sous-Dossier")

If Err <> 0 Then
MsgBox "Dossier de destination introuvable"
Exit Sub
End If

On Error GoTo 0

' Vérification du nb de PJ et sortie du script si il n'y en a pas
Nb_PJ = MonMail.Attachments.Count
' If Nb_PJ = 0 Then Exit Sub
'
' ' Définition du répertoire temporaire et création si il
n'existe pas ' Rep = "c:temp"
' If Rep <> "" Then
' If Dir(Rep, vbDirectory) = "" Then
' MkDir Rep
' End If
' End If
'
' For Each objPJ In MonMail.Attachments
'
' If Left(objPJ.FileName, 3) = "ATT" Then
' objPJ.SaveAsFile Rep & objPJ.FileName
'
' ' Lecture du fichier à la recherche de la variable x
-LF - RoutingString
' FileID = FreeFile
' Open Rep & objPJ.FileName For Input As FileID
' Do While Not EOF(FileID)
' Line Input #FileID, LigFic
' If Left(LigFic, 18) = "X-LF-RoutingString" Then
' NumSDA = Right(LigFic, Len(LigFic) - 20)
' End If
' Loop
' Close #1
'
' ' Suppression du fichier temporaire
' Set ObjetFichier >> CreateObject("Scripting.FileSystemObject") '
ObjetFichier.DeleteFile Rep & objPJ.FileName, True ' Set
ObjetFichier = Nothing '
' End If
'
' Next
NumSDA = "111111111"
If NumSDA = "111111111" Then MonMail.Move DossierDest

End Sub





Avatar
Fabrice N.
Je suis en client Exchange 2003 sans mode mis en cache. Sous Win XP SP2

J'ai constaté ce défaut à l'époque de mon serveur 2000 et pensais à un
problème de compatibilité, mais depuis que j'ai changé les serveurs, j'ai
toujours le même retard...
Le plus bizzare, c'est qu'il n'y a que moi qui ais ce défaut, alors que je
suis administrateur...
Par contre les autres sont sous Win 2000... peut-être que ça vient de là....

A quoi ça sert d'être le grand manitou du domaine si c'est pour que ça
marche moi bien que pour les autres... snif ... ;o)

J'ai fait le teste avec un profil tout neuf et un utilisateur teste qui n'a
rien dans sa boîte ni aucune règle, c'est pareil, il y a un délai qui peut
aller jusqu'à 1 min pour exécuter le code de la règle. Pareil pour la
réception. Si je ne fait rien dans outlook ( comme sélectionner un autre
dossier que celui en cours par exemple), les message en cours d'envoi reste
dans la boîte d'envoi et les nouveaux messages n'apparaissent pas tout de
suite.
Alors que si je vérifie par l'owa, le message est bien partie et les autre
bien arrivés, mais le rafraicchissement n'est pas instantanée.
Alors qu'avant sur le même poste avec Outlook 2000 et exchange 2000, je
n'avais pas ce soucis...





"Oliv'" a écrit dans le message
de news: %23Xqu$

*Fabrice N." <"f.nebbia" dans le domaine "technicn.com <"f.nebbia" dans le
domaine "technicn.com"> que je salut a écrit *:
Salut Oliv'

J'ai testé avec ta macro, j'ai le même résultat.
Plus de 30 s avant exécution du code. En plus, il ne me trouve pas le
dossier "Sous-Dossiers"
...

Je sais pas si c'est lié, mais depuis mon passage à Outlook 2003, j'ai
toujours remarqué un petit délai dans la reception de mes mails.
Quand j'envoie un mail, il faut que je change de dossier pour qu'il
disparaissent de la boîte d'envoi.
Pour la réception, c'est pareil, si je ne me déplace pas dans les
dossiers, je ne vois pas les nouveau messages...
Par contre, même une fois les messages arrivé, ma macros met un
certain temps à se lancer...
Et c'est pas une des instructions de la macro qui bloque car j'ai mis
un msgbox au tout début et il met un moment à apparaître aussi...
C'est à rien y comprendre...




tu es en pst ou exchange ?
Essaye en créant un profil test


"Oliv'" a écrit dans le
message de news:

*Fabrice N." <"f.nebbia" dans le domaine "technicn.com <"f.nebbia"
dans le domaine "technicn.com"> que je salut a écrit *:

c'est ce que j'ai fait, et c'est ce qui m'a permis de me rendre
compte que le script mettait du temps à s'exécuter...
Je n'ai toujours pas compris pourquoi puisque lorsque je lance la
règle manuellement, l'exécution est instantanée...
dur dur ... !!!!



Le fait de redéfinir ta variable DossierDest à plusieurs reprises
est peut être la cause.
Chez moi le code ci-dessous (un peu modifié)est instantané,
également en mode mis en cache.


Sub TrierLesFax(MonMail As MailItem)

Dim objPJ As Attachment, ObjetFichier As Object
Dim LigFic As String, FileID As Integer
Dim NumSDA As String
Dim DossierDest As Outlook.MAPIFolder

Dim Rep As String, Nb_PJ As Integer

' Définition du dossier de destination "Boîte aux
lettres -MoiSous-DossiersSous-Sous-Dossier"
On Error Resume Next
Dim myolApp As Outlook.Application
Dim myNamespace As Outlook.NameSpace
Set myolApp = CreateObject("Outlook.Application")
Set myNamespace = myolApp.GetNamespace("MAPI")
Set myolApp.ActiveExplorer.CurrentFolder = _
myNamespace.GetDefaultFolder(olFolderInbox)


Set DossierDest >>> myolApp.ActiveExplorer.CurrentFolder.Folders.Item("Sous-Dossiers")
'Set DossierDest = DossierDest.Folders.Item("Sous-Sous-Dossier")

If Err <> 0 Then
MsgBox "Dossier de destination introuvable"
Exit Sub
End If

On Error GoTo 0

' Vérification du nb de PJ et sortie du script si il n'y en a pas
Nb_PJ = MonMail.Attachments.Count
' If Nb_PJ = 0 Then Exit Sub
'
' ' Définition du répertoire temporaire et création si il
n'existe pas ' Rep = "c:temp"
' If Rep <> "" Then
' If Dir(Rep, vbDirectory) = "" Then
' MkDir Rep
' End If
' End If
'
' For Each objPJ In MonMail.Attachments
'
' If Left(objPJ.FileName, 3) = "ATT" Then
' objPJ.SaveAsFile Rep & objPJ.FileName
'
' ' Lecture du fichier à la recherche de la variable x
-LF - RoutingString
' FileID = FreeFile
' Open Rep & objPJ.FileName For Input As FileID
' Do While Not EOF(FileID)
' Line Input #FileID, LigFic
' If Left(LigFic, 18) = "X-LF-RoutingString" Then
' NumSDA = Right(LigFic, Len(LigFic) - 20)
' End If
' Loop
' Close #1
'
' ' Suppression du fichier temporaire
' Set ObjetFichier >>> CreateObject("Scripting.FileSystemObject") ' ObjetFichier.DeleteFile Rep
& objPJ.FileName, True ' Set
ObjetFichier = Nothing '
' End If
'
' Next
NumSDA = "111111111"
If NumSDA = "111111111" Then MonMail.Move DossierDest

End Sub









Avatar
Fabrice N.
Encore moi !

Je viens d'essayer ma macro sur un autre poste et elle fonctionne sans
problème.
Donc le problème viens bien de mon poste...

Par contre, concernant la signature numérique. J'ai créer le fameux
certificat et signé la macro sur mon poste.
Mais comment je fais pour ajouter la macro avec la signature sur d'autres
PC.
J'ai essayé en exportant le module et en le réimportant, mais je n'ai plus
de certificat.


"Oliv'" a écrit dans le message
de news: %23Xqu$

*Fabrice N." <"f.nebbia" dans le domaine "technicn.com <"f.nebbia" dans le
domaine "technicn.com"> que je salut a écrit *:
Salut Oliv'

J'ai testé avec ta macro, j'ai le même résultat.
Plus de 30 s avant exécution du code. En plus, il ne me trouve pas le
dossier "Sous-Dossiers"
...

Je sais pas si c'est lié, mais depuis mon passage à Outlook 2003, j'ai
toujours remarqué un petit délai dans la reception de mes mails.
Quand j'envoie un mail, il faut que je change de dossier pour qu'il
disparaissent de la boîte d'envoi.
Pour la réception, c'est pareil, si je ne me déplace pas dans les
dossiers, je ne vois pas les nouveau messages...
Par contre, même une fois les messages arrivé, ma macros met un
certain temps à se lancer...
Et c'est pas une des instructions de la macro qui bloque car j'ai mis
un msgbox au tout début et il met un moment à apparaître aussi...
C'est à rien y comprendre...




tu es en pst ou exchange ?
Essaye en créant un profil test


"Oliv'" a écrit dans le
message de news:

*Fabrice N." <"f.nebbia" dans le domaine "technicn.com <"f.nebbia"
dans le domaine "technicn.com"> que je salut a écrit *:

c'est ce que j'ai fait, et c'est ce qui m'a permis de me rendre
compte que le script mettait du temps à s'exécuter...
Je n'ai toujours pas compris pourquoi puisque lorsque je lance la
règle manuellement, l'exécution est instantanée...
dur dur ... !!!!



Le fait de redéfinir ta variable DossierDest à plusieurs reprises
est peut être la cause.
Chez moi le code ci-dessous (un peu modifié)est instantané,
également en mode mis en cache.


Sub TrierLesFax(MonMail As MailItem)

Dim objPJ As Attachment, ObjetFichier As Object
Dim LigFic As String, FileID As Integer
Dim NumSDA As String
Dim DossierDest As Outlook.MAPIFolder

Dim Rep As String, Nb_PJ As Integer

' Définition du dossier de destination "Boîte aux
lettres -MoiSous-DossiersSous-Sous-Dossier"
On Error Resume Next
Dim myolApp As Outlook.Application
Dim myNamespace As Outlook.NameSpace
Set myolApp = CreateObject("Outlook.Application")
Set myNamespace = myolApp.GetNamespace("MAPI")
Set myolApp.ActiveExplorer.CurrentFolder = _
myNamespace.GetDefaultFolder(olFolderInbox)


Set DossierDest >>> myolApp.ActiveExplorer.CurrentFolder.Folders.Item("Sous-Dossiers")
'Set DossierDest = DossierDest.Folders.Item("Sous-Sous-Dossier")

If Err <> 0 Then
MsgBox "Dossier de destination introuvable"
Exit Sub
End If

On Error GoTo 0

' Vérification du nb de PJ et sortie du script si il n'y en a pas
Nb_PJ = MonMail.Attachments.Count
' If Nb_PJ = 0 Then Exit Sub
'
' ' Définition du répertoire temporaire et création si il
n'existe pas ' Rep = "c:temp"
' If Rep <> "" Then
' If Dir(Rep, vbDirectory) = "" Then
' MkDir Rep
' End If
' End If
'
' For Each objPJ In MonMail.Attachments
'
' If Left(objPJ.FileName, 3) = "ATT" Then
' objPJ.SaveAsFile Rep & objPJ.FileName
'
' ' Lecture du fichier à la recherche de la variable x
-LF - RoutingString
' FileID = FreeFile
' Open Rep & objPJ.FileName For Input As FileID
' Do While Not EOF(FileID)
' Line Input #FileID, LigFic
' If Left(LigFic, 18) = "X-LF-RoutingString" Then
' NumSDA = Right(LigFic, Len(LigFic) - 20)
' End If
' Loop
' Close #1
'
' ' Suppression du fichier temporaire
' Set ObjetFichier >>> CreateObject("Scripting.FileSystemObject") ' ObjetFichier.DeleteFile Rep
& objPJ.FileName, True ' Set
ObjetFichier = Nothing '
' End If
'
' Next
NumSDA = "111111111"
If NumSDA = "111111111" Then MonMail.Move DossierDest

End Sub









Avatar
Oliv'
*Fabrice N." <"f.nebbia" dans le domaine "technicn.com <"f.nebbia" dans le
domaine "technicn.com"> que je salut a écrit *:
Encore moi !

Je viens d'essayer ma macro sur un autre poste et elle fonctionne sans
problème.
Donc le problème viens bien de mon poste...
bin c'est du propre, ca doit venir des jeux installer sur ton poste ;-)))


Par contre, concernant la signature numérique. J'ai créer le fameux
certificat et signé la macro sur mon poste.
Mais comment je fais pour ajouter la macro avec la signature sur
d'autres PC.
J'ai essayé en exportant le module et en le réimportant, mais je n'ai
plus de certificat.


le plus simple c'est de copier le fichier
C:Documents and SettingsMonprofilApplication
DataMicrosoftOutlookVbaProject.OTM
ou %appdata%MicrosoftOutlookVbaProject.OTM
sur chaque poste
mais pour le certificat il faut l'installer à partir du message de sécurité
poste par poste.


"Oliv'" a écrit dans le
message de news: %23Xqu$

*Fabrice N." <"f.nebbia" dans le domaine "technicn.com <"f.nebbia"
dans le domaine "technicn.com"> que je salut a écrit *:
Salut Oliv'

J'ai testé avec ta macro, j'ai le même résultat.
Plus de 30 s avant exécution du code. En plus, il ne me trouve pas
le dossier "Sous-Dossiers"
...

Je sais pas si c'est lié, mais depuis mon passage à Outlook 2003,
j'ai toujours remarqué un petit délai dans la reception de mes
mails. Quand j'envoie un mail, il faut que je change de dossier
pour qu'il disparaissent de la boîte d'envoi.
Pour la réception, c'est pareil, si je ne me déplace pas dans les
dossiers, je ne vois pas les nouveau messages...
Par contre, même une fois les messages arrivé, ma macros met un
certain temps à se lancer...
Et c'est pas une des instructions de la macro qui bloque car j'ai
mis un msgbox au tout début et il met un moment à apparaître
aussi... C'est à rien y comprendre...




tu es en pst ou exchange ?
Essaye en créant un profil test


"Oliv'" a écrit dans le
message de news:

*Fabrice N." <"f.nebbia" dans le domaine "technicn.com <"f.nebbia"
dans le domaine "technicn.com"> que je salut a écrit *:

c'est ce que j'ai fait, et c'est ce qui m'a permis de me rendre
compte que le script mettait du temps à s'exécuter...
Je n'ai toujours pas compris pourquoi puisque lorsque je lance la
règle manuellement, l'exécution est instantanée...
dur dur ... !!!!



Le fait de redéfinir ta variable DossierDest à plusieurs reprises
est peut être la cause.
Chez moi le code ci-dessous (un peu modifié)est instantané,
également en mode mis en cache.


Sub TrierLesFax(MonMail As MailItem)

Dim objPJ As Attachment, ObjetFichier As Object
Dim LigFic As String, FileID As Integer
Dim NumSDA As String
Dim DossierDest As Outlook.MAPIFolder

Dim Rep As String, Nb_PJ As Integer

' Définition du dossier de destination "Boîte aux
lettres -MoiSous-DossiersSous-Sous-Dossier"
On Error Resume Next
Dim myolApp As Outlook.Application
Dim myNamespace As Outlook.NameSpace
Set myolApp = CreateObject("Outlook.Application")
Set myNamespace = myolApp.GetNamespace("MAPI")
Set myolApp.ActiveExplorer.CurrentFolder = _
myNamespace.GetDefaultFolder(olFolderInbox)


Set DossierDest >>>> myolApp.ActiveExplorer.CurrentFolder.Folders.Item("Sous-Dossiers")
'Set DossierDest = DossierDest.Folders.Item("Sous-Sous-Dossier")

If Err <> 0 Then
MsgBox "Dossier de destination introuvable"
Exit Sub
End If

On Error GoTo 0

' Vérification du nb de PJ et sortie du script si il n'y en a
pas Nb_PJ = MonMail.Attachments.Count
' If Nb_PJ = 0 Then Exit Sub
'
' ' Définition du répertoire temporaire et création si il
n'existe pas ' Rep = "c:temp"
' If Rep <> "" Then
' If Dir(Rep, vbDirectory) = "" Then
' MkDir Rep
' End If
' End If
'
' For Each objPJ In MonMail.Attachments
'
' If Left(objPJ.FileName, 3) = "ATT" Then
' objPJ.SaveAsFile Rep & objPJ.FileName
'
' ' Lecture du fichier à la recherche de la variable x
-LF - RoutingString
' FileID = FreeFile
' Open Rep & objPJ.FileName For Input As FileID
' Do While Not EOF(FileID)
' Line Input #FileID, LigFic
' If Left(LigFic, 18) = "X-LF-RoutingString" Then
' NumSDA = Right(LigFic, Len(LigFic) - 20)
' End If
' Loop
' Close #1
'
' ' Suppression du fichier temporaire
' Set ObjetFichier >>>> CreateObject("Scripting.FileSystemObject") '
ObjetFichier.DeleteFile Rep & objPJ.FileName, True ' Set
ObjetFichier = Nothing '
' End If
'
' Next
NumSDA = "111111111"
If NumSDA = "111111111" Then MonMail.Move DossierDest

End Sub









1 2