exemple :
lerjzlekrz
zerzerzer
zerzerzerzerzerzerzer
sdfsd
fdsfsdfsdfsdfsdfsdf
0293019109203920
boite de dialogue vide pour afficher la dernière ligne, et qui affiche 6 pour le nombre de ligne...
exemple :
lerjzlekrz
zerzerzer
zerzerzerzerzerzerzer
sdfsd
fdsfsdfsdfsdfsdfsdf
0293019109203920
boite de dialogue vide pour afficher la dernière ligne, et qui affiche 6 pour le nombre de ligne...
si le retour est 6 , tu as bien une ligne vide à la fin ...
voici pour "sauter" les lignes vides en fin de message :
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 Sub GestionMailsKeybon(Item As Outlook.MailItem) Dim tb Dim i As Integer Dim stDer As String 'Derniere ligne tb = Split(Item.Body, vbCrLf) ' i = UBound(tb) stDer = tb(i) While stDer = "" And i >= 0 i = i - 1 stDer = tb(i) Wend If Len(stDer) > 8 And IsNumeric(stDer) Then 'Si longueur dernière ligne supérieure à 8et valeur numérique Item.Subject = Item.Subject & " [" & stDer & "]" Item.Save End If End Sub
Merci beaucoup !!! Cela fonctionne, à part pour les numéros de téléphone avec des espaces, ex : +32 476 9598
Aussi, j'aimerai comme je vous l'avais dit que le Receive/Send soit tenu en compte :
ex d'e-mail 1 :
Please open the attached document. It contains a copy of a Transmitted/Received Fax. For more information on DELL products and solutions, please visit http://www.dell.com.
Fax Job : Send
0031736821171
ex d'e-mail 2 :
Please open the attached document. It contains a copy of a Transmitted/Received Fax. For more information on DELL products and solutions, please visit http://www.dell.com.
Fax Job : Receive
0032 64 520639
Pourriez-vous m'aider à récupérer le mot Receive ou Send (sur l'avant-dernière ligne, après 'Fax Job : ') et l'ajouter au sujet ?
Merci encore, vous m'êtes d'une immense aide!!
oui je sais, j'ai changé le code en écrivant > 2 et en insérant MsgBox stDer et stAvantDer... et en fait les messages box ne s'affichent meme pas... donc jez pense qu'il ne considère plus que stDer est numérique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 If Len(stDer) > 2 And IsNumeric(stDer) Then MsgBox stDer MsgBox stAvantDer Item.Subject = Item.Subject & " [" & stDer & "]" Item.Save End If
donc voilà ce que j'ai changé dans le code... je n'ai pas compris ce que vous vouliez dire par InStr ?
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 Sub GestionMailsKeybon(Item As Outlook.MailItem) Dim tb Dim i As Integer Dim stDer As String 'Derniere ligne Dim stAvantDer As String tb = Split(Item.Body, vbCrLf) ' i = UBound(tb) stDer = tb(i) stAvantDer = tb(i - 1) While stDer = "" And i >= 0 i = i - 1 stDer = tb(i) Wend If Len(stDer) > 2 And IsNumeric(stDer) Then 'Si longueur dernière ligne supérieure à 8et valeur numérique MsgBox stDer MsgBox stAvantDer Item.Subject = Item.Subject & " [" & stDer & "]" Item.Save End If End Sub
pour le +33 ... ajoute après le dernier wend un stop :
et visualise en passant la souris dessus la valeur réelle de stDer de IsNumeric(stDer) ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Wend stop If Len(stDer) > 2 And IsNumeric(stDer) Then
Pour l'avant dernière ligne ...tu n'as pas placé stAvantDer = tb(i - 1) au bon endroit place le après la boucle While ... wend destiné à laisser passer les lignes vide..
pour InStr as tu actionné la touche sur InStr ? cette instruction va te permettre de teste si Send ou Receive est présent dans stDerLigne...
Comment je dois faire pour activer la touche f1 sur InStr? Je ne comprends pas bien ...
C'est bon comme ca?
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 Sub GestionMailsKeybon(Item As Outlook.MailItem) Dim tb Dim i As Integer Dim stDer As String 'Derniere ligne Dim stAvantDer As String tb = Split(Item.Body, vbCrLf) ' i = UBound(tb) stDer = tb(i) While stDer = "" And i >= 0 i = i - 1 stDer = tb(i) Wend Stop stAvantDer = tb(i - 1) If Len(stDer) > 2 And IsNumeric(stDer) Then 'Si longueur dernière ligne supérieure à 8et valeur numérique MsgBox stDer MsgBox stAvantDer Item.Subject = Item.Subject & " [" & stDer & "]" Item.Save End If End Sub
Je suis vraiment desolé mais je ne comprends pas... je dois écrire InStr quelque part? à quel moment je dois appuyer sur F1 ? ...
ne sais-tu pas te servir de l'aide en ligne intégré au VBA Outlook ? tu tape le code InStr puis F1 ...
sinon voir :
I-E. Renvoyer la position de la première occurrence d'une chaîne dans une autre chaîne
ainsi avec InStr tu peu tester la présence de Send ou Receive (si Instr..>0)..
tu ne m'as pas répondu pour le cas "+33 ...." que voit tu ;
stDer = +32 485 778866
et stAvantDer = ""
Il ne reconnait donc pas ce que contient l'avant-dernière ligne...
voilà le code que j'ai écris, en sachant qu'il y a surement bcp de fautes, pourriez-vous le corriger?
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 Sub GestionMailsKeybon(Item As Outlook.MailItem) Dim tb Dim i As Integer Dim stDer As String 'Derniere ligne Dim stAvantDer As String Dim compare As Integer tb = Split(Item.Body, vbCrLf) ' i = UBound(tb) stDer = tb(i) While stDer = "" And i >= 0 i = i - 1 stDer = tb(i) Wend Stop stAvantDer = tb(i - 1) compare = InStr(1, stAvantDer, Receive) If compare = 0 Then Item.Subject = Received End If compare = InStr(1, stAvantDer, Send) If compare = 0 Then Item.Subject = Send End If If Len(stDer) > 2 And IsNumeric(stDer) Then 'Si longueur dernière ligne supérieure à 8et valeur numérique Item.Subject = Item.Subject & " [" & stDer & "]" Item.Save End If End Sub
pour Voir le stAvantDer le stop est mal placé , il faut le placer après l'affectation de stAvantDer..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Wend stAvantDer = tb(i - 1) Debug.print "stDer : " & stDer & " : " & IsNumeric(stDer) Debug.print stAvantDer Stop 'Voir résultat fenêtre exécution
Pour le test de InStr Il me semble que tu fait cela à l’envers si INstr( ..) = 0 cela veut dire que la chaine testée n'est pas présente ..
avec ce code tu affecte au sujet le contenu de la variable Received ..:
c'est ce que tu veux faire ?? s'il s'agit du texte Receveid il faut le place entre guillemet (sachant que tu efface totalement le précédent sujet)
Code : Sélectionner tout - Visualiser dans une fenêtre à part Item.Subject = Received
Code : Sélectionner tout - Visualiser dans une fenêtre à part Item.Subject = "Received "
Comme cela?
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 Sub GestionMailsKeybon(Item As Outlook.MailItem) Dim tb Dim i As Integer Dim stDer As String 'Derniere ligne Dim stAvantDer As String Dim compare As Integer tb = Split(Item.Body, vbCrLf) ' i = UBound(tb) stDer = tb(i) While stDer = "" And i >= 0 i = i - 1 stDer = tb(i) Wend stAvantDer = tb(i - 1) Debug.Print "stDer : " & stDer & " : " & IsNumeric(stDer) Debug.Print stAvantDer Stop compare = InStr(1, stAvantDer, Receive) If compare = 0 Then Item.Subject = "Sent" End If compare = InStr(1, stAvantDer, Receive) If compare <> 0 Then Item.Subject = "Received" End If If Len(stDer) > 2 And IsNumeric(stDer) Then 'Si longueur dernière ligne supérieure à 8et valeur numérique Item.Subject = Item.Subject & " [" & stDer & "]" Item.Save End If End Sub
Pour le test receive/Send ( c'est bien Send et pas Sent ?)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 (...) If InStr(1, stAVantDer, "Receive") <> 0 Then Item.Subject = "Received" 'Remplace le sujet courant par Received End If (...)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager