Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Je ne trouve pas l'erreur ce petit script

9 réponses
Avatar
sleppy
Bonjour,
Je m'entraîne à faire des petits petits programmes sur VBA.
Pouvez me dire pourquoi le prénom ne s'affiche pas dans la macro?

Voici le script:

Sub Demande_le_prénom()
Dim prénom As String
prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)
End Sub
Sub Demande_le_nom_et_souhaite_la_bienvenue()
Call Demande_le_prénom
MsgBox " Bonjour !" & prénom & "Bonne lecture. "
End Sub

Merci d'avance.

Sleepy!

9 réponses

Avatar
Patrick BASTARD
Bonjour, *sleppy*

Marche bien chez moi, à condition que tu vires "option explicit" au début de
ton code, ou que tu définisses bien toutes tes variables (prénom dans la 2°
sub).

--
Bien amicordialement,
P. Bastard


Bonjour,
Je m'entraîne à faire des petits petits programmes sur VBA.
Pouvez me dire pourquoi le prénom ne s'affiche pas dans la macro?

Voici le script:

Sub Demande_le_prénom()
Dim prénom As String
prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)
End Sub
Sub Demande_le_nom_et_souhaite_la_bienvenue()
Call Demande_le_prénom
MsgBox " Bonjour !" & prénom & "Bonne lecture. "
End Sub

Merci d'avance.

Sleepy!


Avatar
LSteph
Bonjour,
Question de portée de variable: il faut mettre au dessus des sub la
déclaration!
(pour être accessible à tout le module et pour plus employer Public )

Dim prénom as string
Sub saisie()
prénom = InputBox("prénom")
End Sub
Sub demandeaffiche()
saisie
MsgBox prénom
End Sub
'lSteph

"sleppy" <amiredin@àenlevervoila.fr> a écrit dans le message de news:

Bonjour,
Je m'entraîne à faire des petits petits programmes sur VBA.
Pouvez me dire pourquoi le prénom ne s'affiche pas dans la macro?

Voici le script:

Sub Demande_le_prénom()
Dim prénom As String
prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)
End Sub
Sub Demande_le_nom_et_souhaite_la_bienvenue()
Call Demande_le_prénom
MsgBox " Bonjour !" & prénom & "Bonne lecture. "
End Sub

Merci d'avance.

Sleepy!






Avatar
Patrick BASTARD
Bonjour, *sleppy*

Marche bien chez moi, à condition que tu vires "option explicit" au
début de ton code, ou que tu définisses bien toutes tes variables
(prénom dans la 2° sub).


Complément : (parti trop vite)

Déclare la variable "prénom" avant ta 1° sub, et inutile de la déclarer
ensuite à l'intérieur de chacune d'entre elles.

--
Bien amicordialement,
P. Bastard


Bonjour,
Je m'entraîne à faire des petits petits programmes sur VBA.
Pouvez me dire pourquoi le prénom ne s'affiche pas dans la macro?

Voici le script:

Sub Demande_le_prénom()
Dim prénom As String
prénom = Application.InputBox("Quel est votre prénom?", , , , , , ,
2) End Sub
Sub Demande_le_nom_et_souhaite_la_bienvenue()
Call Demande_le_prénom
MsgBox " Bonjour !" & prénom & "Bonne lecture. "
End Sub

Merci d'avance.

Sleepy!




Avatar
RaMa
Bonjour
'*******************************************************************************
Sub Demande_le_nom_et_souhaite_la_bienvenue()
Dim prénom As String
Call Demande_le_prénom(prénom) 'peut s'écrire aussi simplement:
Demande_le_prénom(prénom)
MsgBox " Bonjour ! " & prénom & vbCrLf & "Bonne lecture. "
End Sub

Sub Demande_le_prénom(prénom)
prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)
End Sub
'*******************************************************************************
'Où bien plus court
Sub DemandeNomSouhaiteBienvenue()
Dim prénom As String
prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)
MsgBox " Bonjour ! " & prénom & vbCrLf & "Bonne lecture. "
End Sub
'*******************************************************************************
Salutations

RaMa

"sleppy" <amiredin@àenlevervoila.fr> a écrit dans le message de news:

Bonjour,
Je m'entraîne à faire des petits petits programmes sur VBA.
Pouvez me dire pourquoi le prénom ne s'affiche pas dans la macro?

Voici le script:

Sub Demande_le_prénom()
Dim prénom As String
prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)
End Sub
Sub Demande_le_nom_et_souhaite_la_bienvenue()
Call Demande_le_prénom
MsgBox " Bonjour !" & prénom & "Bonne lecture. "
End Sub

Merci d'avance.

Sleepy!






Avatar
michdenis
Bonjour Sleppy,

Une variable définit dans une procédure n'est pas automatiquement
défini dans l'autre procédure.
A ) Tu peux utiliser une variable "Public" déclarée
dans le haut du module standard et ne pas déclarer de variable localement

B ) Tu peux passer un paramètre à une procédure... et dans ce cas ci, c'est
préférable à l'usage d'une variable publique.

'-------------------------
Sub Demande_le_prénom(Prénom As String)

Prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)

End Sub
'-------------------------
Sub Demande_le_nom_et_souhaite_la_bienvenue()

Dim Prénom As String
Call Demande_le_prénom(Prénom)
MsgBox " Bonjour ! " & Prénom & " Bonne lecture. "

End Sub
'-------------------------


Salutations!




"sleppy" <amiredin@àenlevervoila.fr> a écrit dans le message de news:
Bonjour,
Je m'entraîne à faire des petits petits programmes sur VBA.
Pouvez me dire pourquoi le prénom ne s'affiche pas dans la macro?

Voici le script:

Sub Demande_le_prénom()
Dim prénom As String
prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)
End Sub
Sub Demande_le_nom_et_souhaite_la_bienvenue()
Call Demande_le_prénom
MsgBox " Bonjour !" & prénom & "Bonne lecture. "
End Sub

Merci d'avance.

Sleepy!
Avatar
LSteph
Bonjour MichDenis,
Ton avis éclairé:
"mettre dim en haut au dessus des sub"
selon ce que je proposais est-il tout de même valable
ou présente-t-il un inconvénient?

Merci

lSteph

"michdenis" a écrit dans le message de news:
%
Bonjour Sleppy,

Une variable définit dans une procédure n'est pas automatiquement
défini dans l'autre procédure.
A ) Tu peux utiliser une variable "Public" déclarée
dans le haut du module standard et ne pas déclarer de variable
localement

B ) Tu peux passer un paramètre à une procédure... et dans ce cas ci,
c'est
préférable à l'usage d'une variable publique.

'-------------------------
Sub Demande_le_prénom(Prénom As String)

Prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)

End Sub
'-------------------------
Sub Demande_le_nom_et_souhaite_la_bienvenue()

Dim Prénom As String
Call Demande_le_prénom(Prénom)
MsgBox " Bonjour ! " & Prénom & " Bonne lecture. "

End Sub
'-------------------------


Salutations!




"sleppy" <amiredin@àenlevervoila.fr> a écrit dans le message de news:

Bonjour,
Je m'entraîne à faire des petits petits programmes sur VBA.
Pouvez me dire pourquoi le prénom ne s'affiche pas dans la macro?

Voici le script:

Sub Demande_le_prénom()
Dim prénom As String
prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)
End Sub
Sub Demande_le_nom_et_souhaite_la_bienvenue()
Call Demande_le_prénom
MsgBox " Bonjour !" & prénom & "Bonne lecture. "
End Sub

Merci d'avance.

Sleepy!







Avatar
michdenis
Bonjour LSteph,

L'utlisation de variables déclarées au niveau d'un module que
ce soit avec Dim ou comme Public est correcte...
mais lorsque l'on peut passer directement une variable
en paramètre...à une procédure, cela empêche
la prolifération des variables au niveau des modules ou
du classeur, cela aide à garder le contrôle sur ce qui se
passe
1 -conflit éventuel entre déclaration de variables au niveau du
module et déclaration locale utilisant le même nom de variable,
2- danger possible si plus d'une procédure utilise le même nom de
variable..
3- Cela demande au "programmeur" de tenir un registre de tous
ces variables et de l'endroit dans le programme où il est possible
de modifier ces variables lorsqu'il est temps de "debugger"
et ce n'est pas toujours évident ! La complexité s'accroit avec
l'ampleur de l'application...
4- Facilité de lecture du code y perd ...
5 - principe général : utiliser le plus souvent possible des variables
qui ont une portée limitée à la procédure, suivi par des
variables au niveau du module et en dernier lieu,
au niveau du classeur (Public ou Global)

Tout ceci n'engage que moi et chacun est libre d'agir autrement !


Salutations!




"LSteph" a écrit dans le message de news: %23bNtt%
Bonjour MichDenis,
Ton avis éclairé:
"mettre dim en haut au dessus des sub"
selon ce que je proposais est-il tout de même valable
ou présente-t-il un inconvénient?

Merci

lSteph

"michdenis" a écrit dans le message de news:
%
Bonjour Sleppy,

Une variable définit dans une procédure n'est pas automatiquement
défini dans l'autre procédure.
A ) Tu peux utiliser une variable "Public" déclarée
dans le haut du module standard et ne pas déclarer de variable
localement

B ) Tu peux passer un paramètre à une procédure... et dans ce cas ci,
c'est
préférable à l'usage d'une variable publique.

'-------------------------
Sub Demande_le_prénom(Prénom As String)

Prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)

End Sub
'-------------------------
Sub Demande_le_nom_et_souhaite_la_bienvenue()

Dim Prénom As String
Call Demande_le_prénom(Prénom)
MsgBox " Bonjour ! " & Prénom & " Bonne lecture. "

End Sub
'-------------------------


Salutations!




"sleppy" <amiredin@àenlevervoila.fr> a écrit dans le message de news:

Bonjour,
Je m'entraîne à faire des petits petits programmes sur VBA.
Pouvez me dire pourquoi le prénom ne s'affiche pas dans la macro?

Voici le script:

Sub Demande_le_prénom()
Dim prénom As String
prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)
End Sub
Sub Demande_le_nom_et_souhaite_la_bienvenue()
Call Demande_le_prénom
MsgBox " Bonjour !" & prénom & "Bonne lecture. "
End Sub

Merci d'avance.

Sleepy!







Avatar
LSteph
C'est presqu'un pléonasme ;o) mais tout de même:
Merci pour tes précieux conseils!

lSteph

"michdenis" a écrit dans le message de news:

Bonjour LSteph,

L'utlisation de variables déclarées au niveau d'un module que
ce soit avec Dim ou comme Public est correcte...
mais lorsque l'on peut passer directement une variable
en paramètre...à une procédure, cela empêche
la prolifération des variables au niveau des modules ou
du classeur, cela aide à garder le contrôle sur ce qui se
passe
1 -conflit éventuel entre déclaration de variables au niveau du
module et déclaration locale utilisant le même nom de variable,
2- danger possible si plus d'une procédure utilise le même nom de
variable..
3- Cela demande au "programmeur" de tenir un registre de tous
ces variables et de l'endroit dans le programme où il est possible
de modifier ces variables lorsqu'il est temps de "debugger"
et ce n'est pas toujours évident ! La complexité s'accroit avec
l'ampleur de l'application...
4- Facilité de lecture du code y perd ...
5 - principe général : utiliser le plus souvent possible des variables
qui ont une portée limitée à la procédure, suivi par des
variables au niveau du module et en dernier lieu,
au niveau du classeur (Public ou Global)

Tout ceci n'engage que moi et chacun est libre d'agir autrement !


Salutations!




"LSteph" a écrit dans le message de news:
%23bNtt%
Bonjour MichDenis,
Ton avis éclairé:
"mettre dim en haut au dessus des sub"
selon ce que je proposais est-il tout de même valable
ou présente-t-il un inconvénient?

Merci

lSteph

"michdenis" a écrit dans le message de news:
%
Bonjour Sleppy,

Une variable définit dans une procédure n'est pas automatiquement
défini dans l'autre procédure.
A ) Tu peux utiliser une variable "Public" déclarée
dans le haut du module standard et ne pas déclarer de variable
localement

B ) Tu peux passer un paramètre à une procédure... et dans ce cas ci,
c'est
préférable à l'usage d'une variable publique.

'-------------------------
Sub Demande_le_prénom(Prénom As String)

Prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)

End Sub
'-------------------------
Sub Demande_le_nom_et_souhaite_la_bienvenue()

Dim Prénom As String
Call Demande_le_prénom(Prénom)
MsgBox " Bonjour ! " & Prénom & " Bonne lecture. "

End Sub
'-------------------------


Salutations!




"sleppy" <amiredin@àenlevervoila.fr> a écrit dans le message de news:

Bonjour,
Je m'entraîne à faire des petits petits programmes sur VBA.
Pouvez me dire pourquoi le prénom ne s'affiche pas dans la macro?

Voici le script:

Sub Demande_le_prénom()
Dim prénom As String
prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)
End Sub
Sub Demande_le_nom_et_souhaite_la_bienvenue()
Call Demande_le_prénom
MsgBox " Bonjour !" & prénom & "Bonne lecture. "
End Sub

Merci d'avance.

Sleepy!












Avatar
Jacques93
Bonjour à tous,

Un peu à retardement, pourquoi ne pas poursuivre la logique avec
l'utilisation d'une fonction, plutôt que d'une procèdure avec paramètre :

Function Le_Prénom() As String
Le_Prénom = Application.InputBox("Quel est votre prénom?", , , , ,
, , 2)
End Function

Sub Demande_le_nom_et_souhaite_la_bienvenue()
MsgBox " Bonjour ! " & Le_Prénom & " Bonne lecture. "
End Sub

le stockage du résultat de la fonction pouvant être facultatif,
ou une subtilité m'aurait elle échappée ?

Bonjour Sleppy,

Une variable définit dans une procédure n'est pas automatiquement
défini dans l'autre procédure.
A ) Tu peux utiliser une variable "Public" déclarée
dans le haut du module standard et ne pas déclarer de variable localement

B ) Tu peux passer un paramètre à une procédure... et dans ce cas ci, c'est
préférable à l'usage d'une variable publique.

'-------------------------
Sub Demande_le_prénom(Prénom As String)

Prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)

End Sub
'-------------------------
Sub Demande_le_nom_et_souhaite_la_bienvenue()

Dim Prénom As String
Call Demande_le_prénom(Prénom)
MsgBox " Bonjour ! " & Prénom & " Bonne lecture. "

End Sub
'-------------------------


Salutations!




"sleppy" <amiredin@àenlevervoila.fr> a écrit dans le message de news:
Bonjour,
Je m'entraîne à faire des petits petits programmes sur VBA.
Pouvez me dire pourquoi le prénom ne s'affiche pas dans la macro?

Voici le script:

Sub Demande_le_prénom()
Dim prénom As String
prénom = Application.InputBox("Quel est votre prénom?", , , , , , , 2)
End Sub
Sub Demande_le_nom_et_souhaite_la_bienvenue()
Call Demande_le_prénom
MsgBox " Bonjour !" & prénom & "Bonne lecture. "
End Sub

Merci d'avance.

Sleepy!








--
Cordialement,

Jacques.