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

Macros et VBA Excel Discussion :

variables à plusieurs variables


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    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
    Par défaut
    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 : 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
     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

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    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...

  3. #3
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Il me semble que tu dois pouvoir simplifier ton 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
    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.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    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
    Par défaut
    @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

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    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
    Par défaut
    Voici mon code j'ai remplacé le texte par des X

    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
    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

  6. #6
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    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 ?

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    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
    Par défaut
    @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 : 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
    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

  8. #8
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Il n'y a pas de guillemets quand tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    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
    Par défaut
    Oui ! je vais essayer ta seconde suggestion.

    Je me permets de te solliciter encore une fois,

    si on reprend le code suivant

    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
    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

  10. #10
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Comme ça je pense :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C" & (50+2*(i-1)))

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    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
    Par défaut
    Merci pour tout ! Très bonne journée !

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

Discussions similaires

  1. Affecter la même valeur à plusieurs variables
    Par K20 dans le forum Langage
    Réponses: 7
    Dernier message: 03/01/2006, 23h54
  2. Plusieurs variables dans Dim et Case??
    Par samlepiratepaddy dans le forum Access
    Réponses: 2
    Dernier message: 02/10/2005, 18h04
  3. Envoyer plusieur variable a un programme
    Par scaleo dans le forum Langage
    Réponses: 9
    Dernier message: 06/09/2005, 11h09
  4. envoyer plusieurs variables dans l'url?
    Par brgui dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/08/2005, 14h18
  5. Réponses: 5
    Dernier message: 28/04/2004, 16h06

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