Précédent   Forum du club des développeurs et IT Pro > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/11/2012, 14h05   #1
nat.olivier
Invité de passage
 
Inscription : 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
nat.olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2012, 14h37   #2
Aniki
Membre émérite
 
Inscription : juin 2006
Messages : 623
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 623
Points : 917
Points : 917
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
Aniki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2012, 20h47   #3
Heureux-oli
Responsable Word


 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 18 889
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 48
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 18 889
Points : 39 103
Points : 39 103
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2012, 04h15   #4
Maxence HUBICHE
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Développeur SQLServer/Access
Inscription : juin 2002
Messages : 3 768
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 43
Localisation : France, Val d'Oise (Île de France)

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

Informations forums :
Inscription : juin 2002
Messages : 3 768
Points : 8 720
Points : 8 720
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
Bonjour,

j'ajoute que les parenthèses sur la ligne du msgbox sont inutiles.
__________________
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2012, 10h29   #5
Heureux-oli
Responsable Word


 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 18 889
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 48
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 18 889
Points : 39 103
Points : 39 103
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2012, 14h50   #6
Maxence HUBICHE
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Développeur SQLServer/Access
Inscription : juin 2002
Messages : 3 768
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 43
Localisation : France, Val d'Oise (Île de France)

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

Informations forums :
Inscription : juin 2002
Messages : 3 768
Points : 8 720
Points : 8 720
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
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
__________________
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h07.


 
 
 
 
Partenaires

Hébergement Web