Call d'un nom de procédure

Bonjour

c'est mon premier post alors je vais essayer d'être clair ( si ce n'est pas le cas, je serai plus exhaustif sur demande ).

voici mon petit souci :

sub test()

var="toto"

call var

end sub

j'ai aussi tenté:

function var()

var="Call toto"

end function

sub test()

var

end sub

--> ca ne fonctionne jamais, il me manque une notion, je n'arrive pas à la trouver....

Votre aide me sera d'une grande utilité.

Cordialement.

Bonjour Aurelien,

Bienvenue sur ce Forum,

Il fallait utiliser la fonction Run pour que sa fonctionne :

Sub test()
Dim var As String
var = "toto"
Run var
End Sub

A dispo!

Bonjour,

Pour commencer var est une fonction Excel (nom réservé).

Tu ne peux pas l'utiliser.

Un exemple. Nul besoin de faire appel à Call ou Run.

Cdlt.

Sub macro1()
MsgBox Test
End Sub

Function Test()
Test = "Call toto"
End Function

Merci pour votre réactivité.

Ma variable ne s'appelle pas var, c'était pour simplifier...

Juice, j'ai une error 400 et je ne sais pas comment afficher ce qui cloche.

Jean-Eric, j'ai aussi testé de cette façon mais ca m'affiche "Call toto" dans la msgbox alors que je voudrais qu'il l'exécute.

Re,

Que veux-tu faire réellement ?

Cdlt.

Juice, j'ai une error 400 et je ne sais pas comment afficher ce qui cloche.

Est-ce que le nom indiqué dans ta 'var' correspond bien au nom d'une Macro existante ?

Essaye sa sinon :

Sub xxx()
Dim txt As String
txt = "Macro_Test"
Run txt
End Sub
Sub Macro_Test()
MsgBox "Lancé depuis Macro xxx"
End Sub

Et si sa ne marche pas, tu peux me dire ce que t'affiche le message d'erreur ?

Effectivement Juice, ca fonctionne...

Ce que je veux faire ne me semble pas bien compliqué et pourtant je bloque, je bloque...

J'ai décris mes Sub dans l'objet Thisworkwook et je dois avoir un problème d'ordre d'éxécution ?

Le voici en vrai Jean-Eric, et mon but et d'appeler ( Call) le nom de la Sub adéquate :

Sub Traitement_indicateur()

'

Dim nom_traitement As String, num_shape_input As String, nom_indicateur_traite As String

' Récupération du shape appelé

'

num_shape_input = Mid(Mid(Application.Caller, InStrRev(Application.Caller, "_") + 1), 6)

nom_indicateur_traite = Replace(Range("Nom_indicateur" & num_shape_input).Value, " ", "_")

nom_traitement = "Traitement_" & nom_indicateur_traite"

MsgBox "nom_indicateur_traite:" & nom_indicateur_traite & Chr(10) & "nom_traitement:" & nom_traitement

Call nom_traitement 'Traitement_GDI_Flux

' Run nom_traitement

End Sub

Sub Traitement_GDI_Flux()

End sub

et j'ai essayé de déclarer cette fonction :

Function nom_proc_traitement()

num_shape_input = Mid(Mid(Application.Caller, InStrRev(Application.Caller, "_") + 1), 6)

nom_indicateur_traite = Replace(Range("Nom_indicateur" & num_shape_input).Value, " ", "_")

nom_proc_traitement = "Call Traitement_" & nom_indicateur_traite & ""

End Function

et

Sub Traitement_indicateur()

nom_proc_traitement

End sub

Bonjour,

déjà il faudrait que tu apprennes à distinguer les rôles de Sub et Function.

Une Function ne fait que retourner une valeur. Comme par exemple a=sin(x)

Tu passes un paramètre à la fonction sin(), elle te retourne la valeur que tu affectes à une variable a (ou que tu affiches, etc)

Un Sub exécutes les actions et ne retourne rien. Tu peux également lui passer des paramètres.

Sachant cela décide selon ton besoin.

eric

Re,

Un exemple dans le fichier joint.

Cdlt.

7aurelien-13.xlsm (15.99 Ko)
Option Explicit

Public Sub ApplicationCaller()
Dim shpName As String, shpText As String
    shpName = Application.Caller
    shpText = ActiveSheet.Shapes.Range(shpName).TextFrame2.TextRange.Text
    Run shpText
End Sub

Public Sub Test1()
    MsgBox Application.UserName
End Sub

Public Sub Test2()
    MsgBox Format(VBA.Date, "dddd dd mmmmm yyyy")
End Sub

Je me garde ce code, il va me servir pour plus tard, merci Jean-Eric.

Dans le projet VBA que tu m'as fournis, j'ai mis ces lignes dans l'objet ThisWorkbook ( et pas dans un module ).

Et ca ne marche pas

Sub xxx()

Dim txt As String

txt = "Test"

Run txt

End Sub

Sub Test()

MsgBox "Lancé depuis Macro xxx"

End Sub

Et si je copie la Sub Test dans un module, il va bien me la chercher.

Donc il faut que j'arrive à dire à la commande Run d'aller "voir" dans Thisworkbook et pas dans un module ?

Tu aurais encore une idée ?

En tout cas, merci pour l'attention et tout et tout...

J'ai trouvé... Il fallait lui indiquer "Thisworkbook." avant le nom de la macro à appeler...

Désolé pour le dérangement...

Re,

pourquoi l'avoir mise dans Thisworkbook ?

Si tu n'as aucune raison il faut la mettre dans un module Standard. Et tu peux très bien l'appeler depuis Thisworkbook.

eric

Un prestataire de ma boite, calé en Vba semblerait il, m'a indiqué de développer l'ensemble de mes macros dans l'objet Thisworkbook.

Étant vraiment novice,j'ai suivi ses conseils et monter mon premier projet dedans....je me sers des modules pour mes tests....

Devrais-je lui présenter Jean-Eric?

Oui, tu peux Il t'a raconté une grosse ânerie.

Le module Thisworkbook comme les modules des feuilles sont des modules de classe.

On y met que ce qui doit y être.

eric

Rechercher des sujets similaires à "call nom procedure"