+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Invité de passage
    Inscrit en
    avril 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : avril 2006
    Messages : 8
    Points : 1
    Points
    1

    Par défaut problème macro simple

    bonjour
    j'ai écrite les deux macros suivantes dans un même module :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub DemandeNom()
    Dim vNom As String
        vNom = InputBox("Quel est votre nom?")
    End Sub
    Sub BonjourVousAppelProc()
    Dim vNom As String
        DemandeNom
        MsgBox ("Bonjour ") & vNom & ("Bonne lecture")
    End Sub
    Quand j'éxécute la deuxième macro seule le message Bonjour bonne lecture apparaît Pourquoi je n'ai pas le nom
    Merci de votre aide
    Nathalie

  2. #2
    Membre Expert
    Inscrit en
    juin 2006
    Messages
    788
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 788
    Points : 1 276
    Points
    1 276

    Par défaut

    Bonjour Nathalie,

    Le nom que tu tapes dans l'inputBox n'est pas visible dans ton MessageBox parce que la variable vNom diffère entre tes deux macros.
    En gros, tu as créé 2 variables vNom: une dans DemandeNom qui contient le texte que tu as tapé et l'autre dans BonjourVousAppelProc qui est vide.

    Dans ton cas, tu n'as besoin que d'une seule macro:
    Code :
    1
    2
    3
    4
    5
    Sub BonjourVousAppelProc()
        Dim vNom As String
        vNom = InputBox("Quel est votre nom?")
        MsgBox ("Bonjour ") & vNom & ("Bonne lecture")
    End Sub

  3. #3
    Rédacteur/Modérateur


    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    février 2006
    Messages
    20 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 20 059
    Points : 39 590
    Points
    39 590

    Par défaut

    Salut,

    Pour que ça fonctionne, il faut une procédure et une fonction.

    Une "porcédure" ne renvoit rien, alors qu'une fonction peut renvoyer une valeur.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function DemandeNom() As String
     
        DemandeNom = InputBox("Quel est votre nom?")
    End Function
     
    Sub BonjourVousAppelProc()
    Dim vNom As String
        vNom = DemandeNom
        MsgBox ("Bonjour ") & vNom & ("Bonne lecture")
    End Sub
    On peut encore réduire un peu les lignes de code en évitant une variable.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function DemandeNom() As String
     
        DemandeNom = InputBox("Quel est votre nom?")
    End Function
     
    Sub BonjourVousAppelProc()
     
        MsgBox ("Bonjour ") & DemandeNom & ("Bonne lecture")
    End Function
    Si tu souhaites malgré tout utiliser une variable, il faut la déclare dans ton module et plus dans une procédure ou une fonction, sans quoi, sa vie se limite à la fonction ou la procédure.

    Si tu veux aller un peu plus loin, voilà un peu de lecture : http://heureuxoli.developpez.com/office/word/vba-all/
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  4. #4
    Rédacteur


    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    juin 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : juin 2002
    Messages : 3 841
    Points : 9 058
    Points
    9 058

    Par défaut

    Bonjour,

    j'ajoute que les parenthèses sur la ligne du msgbox sont inutiles.

  5. #5
    Rédacteur/Modérateur


    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    février 2006
    Messages
    20 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 20 059
    Points : 39 590
    Points
    39 590

    Par défaut

    Salut Max,
    Citation Envoyé par Maxence HUBICHE Voir le message
    Bonjour,

    j'ajoute que les parenthèses sur la ligne du msgbox sont inutiles.
    Désolé, ce sont les aléas d'un copier coller.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  6. #6
    Rédacteur


    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    juin 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : juin 2002
    Messages : 3 841
    Points : 9 058
    Points
    9 058

    Par défaut

    Salut Olivier

    Je n'en doute pas !
    Si tu voyais la bourde que je viens d'écrire !!!
    Je dis : ne mets pas 2 \ dans ton URL ! Voici un exemple de code
    et qu'est-ce que je mets dans l'exemple de code ? 2\ dans l'URL !
    Je crois même que c'est pire

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •