Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
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 20/12/2011, 10h39   #1
Invité de passage
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 2
Points : 2
Bonjour à tous,

Mon titre n'est pas très clair, mais voici mon problème :

Grosso modo, suivant les réponses de l'utilisateur, j'ai un corps de texte d'un mail qui est créé.

J'ai 5 réponses possibles qui donnent chacune 6 corps de texte différent.

Avec un Select Case j'arrive à déterminer chaque corps de texte pour chaque réponse. Mais lorsque j'essaie de définir un corps de texte final je n'y arrive pas

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
27
28
29
30
31
32
33
34
35
 Public Sub Testmail()
Dim corpdetexte1 As String, produit1 As String, corpdetexte2 As String, produit2 As String, corpdetexte3 As String, produit3 As String, corpdetexte4 As String, produit4 As String, corpdetexte5 As String, produit5 As String, corpdetexte6 As String, produit6 As String, corpdetextefinal As String
 
 
produit1 = Range("L173")
produit2 = Range("l174")
produit3 = Range("l175")
produit4 = Range("l176")
produit5 = Range("l177")
produit6 = Range("l178")
 
Select Case produit1
Case Is = "0"
corpdetexte1 = ""
Case Is = "1"
corpdetexte1 = "UN"
Case Is = "2"
corpdetexte1 = "DEUX"
Case Is = "3"
corpdetexte1 = "TROIS"
Case Is = "4"
corpdetexte1 = "QUATRE"
Case Is = "5"
corpdetexte1 = "CINQ"
End Select
' etc pour les 5 autres produits avec exactement les mêmes réponses
' le problème arrive maintenant
 
corpdetextefinal = corpdetexte1 + corpdetexte2 + corpdetexte3 + corpdetexte4 'etc
 
 
ThisWorkbook.FollowHyperlink ("mailto:maison@maison.com?subject=Demande&body=Bonjour," & "%0A" & "%0A" & _
corpdetextefinal)
 
End Sub
Merci pour votre aide

Le problème c'est que si je développe le code que j'ai cité au dessus cela fonctionne bien ........... Je ne peux pas vous donnez pour le code original (c'est pour le boulot) mais voici mon message d'erreur

Argument ou appel de procédure incorrect

Lorsque je défini corpdetextefinal par plus de deux corpdetexteX

Je ne sais pas du tout quoi faire
goldenbrown05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 11h06   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Essaie juste avec des & au lieu des + pour voir.
Après, si tu ne peux pas nous donner le code, au moins la ligne qui génère l'erreur et la valeurs des différentes variables.

Et un petit conseil pour toi, je ne suis pas sûr que tu devrais répondre à ton propre message comme tu l'as fait. Je pense que beaucoup des personnes qui aident regardent en priorité les messages qui n'ont aucune réponse...
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 11h17   #3
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 695
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 695
Points : 1 447
Points : 1 447
Bonjour,

Il me semble que tu dois pouvoir simplifier ton code

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
Public Sub Testmail()
Dim CorpDeTexte(1 To 6)
Dim Produit(1 To 6)
Dim corpdetextefinal As String
    For i = 1 To 6
        Produit(i) = Range("L173").Offset(i - 1, 0)
        Select Case Produit(i)
        Case Is = "0"
            CorpDeTexte(i) = ""
        Case Is = "1"
            CorpDeTexte(i) = "UN"
        Case Is = "2"
            CorpDeTexte(i) = "DEUX"
        Case Is = "3"
            CorpDeTexte(i) = "TROIS"
        Case Is = "4"
            CorpDeTexte(i) = "QUATRE"
        Case Is = "5"
            CorpDeTexte(i) = "CINQ"
        End Select
        corpdetextefinal = corpdetextefinal & CorpDeTexte(i)
    Next i
 
    ThisWorkbook.FollowHyperlink ("mailto:maison@maison.com?subject=Demande&body=Bonjour," & "%0A" & "%0A" & _
    corpdetextefinal)
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 11h39   #4
Invité de passage
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 2
Points : 2
@ZebreLoup : j'ai essayé avec le & à la place du + cela ne change rien. Le message d'erreur apparait lors de l'envoi du mail, est-ce possible que le texte soit trop long ou complexe ? (Mon code, dans les corpdetexte renvoie vers des cellules de la feuille, afin d'intégrer des données).
Lorsque je réduit l'assemblage (avec par exemple, lorsque les corpdetexte comporte uniquement le texte suivant "" j'arrive à compiler les 6 corpdetexte) j'espère que c'est assez clair

@gFZT82 : merci pour la simplification, mais je n'arrive toujours pas à faire fonctionner mon code.......

Merci à vous deux je vais continuer à chercher
goldenbrown05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 11h49   #5
Invité de passage
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 2
Points : 2
Voici mon code j'ai remplacé le texte par des X

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
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
Public Sub Testmail2()
Dim CorpDeTexte(1 To 6)
Dim Produit(1 To 6)
Dim contrat(50 To 60)
Dim corpdetextefinal As String
    For i = 1 To 6
        Produit(i) = Range("L173").Offset(i - 1, 0)
 
 
Select Case Produit(i)
Case Is = "0"
CorpDeTexte(i) = ""
Case Is = "1"
CorpDeTexte(i) = "%0A" & "%0A" & "X" & Range("C50") & " pour " & Range("E4") & " " & Range("E6") & " X " & Range("N50") & Range("o8") & "." _
& " X " & Range("n4") & "/" & Range("N6")
Case Is = "2"
CorpDeTexte(i) = "%0A" & "%0A" & "X " & Range("C50") & "." _
& "%0A" & "%0A" & "X " & Range("N4") & "%0A" & "X" & "%0A" & "x" _
& "%0A" & "X" & "%0A" & "X" & Range("N50") & " " & Range("o8") _
& "%0A" & "X" _
& "%0A" & "X" _
& "%0A" & "X"
Case Is = "3"
CorpDeTexte(i) = "%0A" & "%0A" & "X" & Range("C50") & " X " & Range("N50") & Range("o8") & "." _
& "%0A" & "X" & "%0A" & "X;" & "%0A" & "X;" _
& "%0A" & "X."
Case Is = "4"
CorpDeTexte(i) = "%0A" & "%0A" & "X" & Range("C50") & " X " & Range("N50") & Range("O8") & "." _
& "%0A" & "X;" & "%0A" & " - X ;" _
& "%0A" & " - X;" _
& " - X" _
& " - X"
Case Is = "5"
CorpDeTexte(i) = "%0A" & "%0A" & "X " & Range("C50") & " X " & Range("N50") & Range("O8") & "." _
& "%0A" & "X" & "%0A" & " - statuts signés à jour ;" & "%0A" & " - X;" _
& "%0A" & " - X;" _
& "  - lX" _
& "%0A" & " -X"
Case Is = "6"
CorpDeTexte(i) = "%0A" & "%0A" & "X" & Range("C50") & " X " & Range("n50") & Range("o8") & "." _
& "%0A" & "X" & Range("E6") _
& "%0A" & "X " _
& "%0A" & "X "
End Select
 
 
 
 
corpdetextefinal = corpdetextefinal & CorpDeTexte(i)
Next i
 
ThisWorkbook.FollowHyperlink ("mailto:maison@maison.com?subject=Demande &body=Bonjour," _
& "%0A" & "%0A" & corpdetextefinal)

Le problème c'est que mes Range("C50") varient de 2 en 2 jusqu'a 60 idem pour les Range("N50") de 2 en 2 jusqu'à 60. Donc la simplification, me bloque à ce niveau la.

Toujours est-il que j'ai le message d'erreur suivant :

Argument ou appel de procédure incorrect


Merci pour votre aide
goldenbrown05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 14h00   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Je n'ai pas trop l'habitude de faire comme ça pour envoyer un mail, mais je suppose que ça ne peut pas marcher s'il y a des espaces dans ton corps de texte. Il faut peut-être mettre des guillemets ou remplacer des espaces par leur code HTML ?
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 14h52   #7
Invité de passage
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 2
Points : 2
@ZebreLoup : sauf erreur de ma part tous les espaces sont entre guillemets, qu'utilises tu comme code pour envoyer un mail, peut-être que ca peut fonctionner.

Mon erreur apparaît lorsque j'ai plus de trois corps de texte différent du cas ""

Je ne sais pas si je suis clair,

Merci bcp en tout cas pour ton aide

J'ai réussi : j'ai utilisé le code suivant qui fonctionne bien mieux pour l'envoi de mail

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
email = "maison@maison.com"
 
  Set MonOutlook = CreateObject("Outlook.Application")
 
  Set MonMessage = MonOutlook.CreateItem(0)
 
  MonMessage.To = email
  MonMessage.Subject = "Demande : " & Range("E06")
  MonMessage.Body = "Bonjour," & vbLf & vbLf & "Veuillez trouver   : " & Range("E04") & " " & Range("E06") & vbLf & Range("C73") & vbLf & vbLf & "Cordialement." & corpdetextefinal
 
  MonMessage.ReadReceiptRequested = True
 
  Dim envoi As String
  envoi = MsgBox("Envoyer la demande d?", vbYesNo)
  If envoi = vbYes Then
  MonMessage.display
  MsgBox "Demande d'accord envoyée."
  End If
 
 
  Set MonOutlook = Nothing
goldenbrown05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 14h52   #8
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Il n'y a pas de guillemets quand tu écris
Code :
ThisWorkbook.FollowHyperlink ("mailto:maison@maison.com?subject=Demande &body=Bonjour,%0A%0A" & corpdetextefinal)
Mais je pense qu'il suffit qu'il y ait des caractères spéciaux quelconques dans corpdetextefinal pour que ça ne marche pas.
Pour ma part, je le fais très rarement, mais j'utilise un objet Outlook. Le problème étant que ça ne marche que si on a Outlook. Mais il doit y avoir d'autres solutions plus génériques.

Nos messages se sont croisés. Je vois que je te proposais une bonne solution.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 14h59   #9
Invité de passage
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 2
Points : 2
Oui ! je vais essayer ta seconde suggestion.

Je me permets de te solliciter encore une fois,

si on reprend le code suivant

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
Public Sub Testmail()
Dim CorpDeTexte(1 To 6)
Dim Produit(1 To 6)
Dim corpdetextefinal As String
    For i = 1 To 6
        Produit(i) = Range("L173").Offset(i - 1, 0)
        Select Case Produit(i)
        Case Is = "0"
            CorpDeTexte(i) = ""
        Case Is = "1"
            CorpDeTexte(i) = "UN" & Range("50") & Range("N50") & Range("H50")
        Case Is = "2"
            CorpDeTexte(i) = "DEUX"
        Case Is = "3"
            CorpDeTexte(i) = "TROIS"
        Case Is = "4"
            CorpDeTexte(i) = "QUATRE"
        Case Is = "5"
            CorpDeTexte(i) = "CINQ"
        End Select
        corpdetextefinal = corpdetextefinal & CorpDeTexte(i)
    Next i
 
  End Sub

Pour le produit 1 les cellules concernées sont toutes ligne 50
Pour le produit 2 les cellules concernées sont toutes ligne 52
Pour le produit 3 les cell concernées sont ligne 54 etc jusqu'à 60

Je souhaiterais intégrer ce facteur pour chaque i

si i = 1 alors Range("C50")
si i = 2 alors Range("C52")

Je n'arrive pas à le définir.

Merci pour ton aide
goldenbrown05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 15h17   #10
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Comme ça je pense :
Code :
Range("C" & (50+2*(i-1)))
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 15h40   #11
Invité de passage
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 9
Points : 2
Points : 2
Merci pour tout ! Très bonne journée !
goldenbrown05 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 20h28.


 
 
 
 
Partenaires

Hébergement Web