Appeler une procédure à partir d’une procédure

Bonjour,

Je fais mes premiers pas avec VBA EXCEL...

J'ai créé les 2 premières procédures suivantes :

image

Les 2 fonctionnent.

J'ai créé une 3ème procédure qui fait appel à ma première :

image

Elle devrait récupérer le nom saisi et afficher "Bonjour Untel ! Bonne lecture !". Or, voici ce qui s'affiche... impossible d'avoir le nom dans la msgbox !

Pourriez-vous me dire pourquoi s'il vous plaît ? Que dois-je faire ?

image

D'avance un grand merci pour votre aide.

Vaxahe

Bonjour et bienvenue

C'est un peu compliqué de vouloir faire 2 ou trois codes... . On peut faire tout en un seul.

Sinon, dans votre fichier déplacez

Dim vnom As String

et placez-la juste avant Private Sub demandenom()

La Sub BonjourVous() ne sert pas

Si ok pensez à

Cordialement

Bonjour

C'est exactement ce que je voulais ! Merci

Oui dans une seule procédure cela fonctionne.

Mais je voudrais comprendre pourquoi il faut mettre la ligne Dim au tout début.

Pourriez-vous m'expliquer ou me donner un lien qui explique ? Un grand merci d'avance.

VaxahE

Mais je voudrais comprendre pourquoi il faut mettre la ligne Dim au tout début.

Lorsque vous mettez la déclaration de variable au début, elle est conservée lors de l'exécution des codes placés dans le module.

Dans votre cas, le premier code permet de donner la valeur à la variable qui sera conservée pour être utilisée dans le deuxième code.
A noter que la valeur de la variable restera tant que vous ne la changez pas ou que vous ne l'annulez pas via une instruction

Vous comprenez ?

Crdlt

Parfaitement ! Merci

Salut,

Pour éviter une déclaration au niveau module tu as la possibilité d'utiliser une fonction :

Private Function GetName() As String
    Dim YourName As String
    YourName = InputBox("Quel est votre nom ?", "Bonjour")
    GetName = YourName
End Function

Public Sub TestBonjour()
    MsgBox "Bonjour " & GetName & " bonne lecture !"
End Sub

Écriture d’une procédure function (VBA) | Microsoft Learn

Rebonjour,

Ce code est nettement plus "propre" que ce que j'avais fait... Et je comprends enfin le lien entre Function et Sub...

Merci aussi pour le lien

re,

Comme je vous l'ai écrit dans mon post précédent il y a plus simple :

Dans votre module, remplacez tout par cet unique code

Sub BonjourVousAppelProc()
Dim vnom as string
vnom = InputBox("Quel est votre nom ?", "Bonjour")
If vnom <> vbNullString Then
    MsgBox ("Bonjour ") & vnom & ("! Bonne lecture !")
End If
End Sub

Crdlt

Rechercher des sujets similaires à "appeler procedure partir"