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

Pb avec appel de la Sub Toto

3 réponses
Avatar
LANIMAL
Bonjour
Ce pb semble nouveau (suite à màj XP ?)
J'ai une Sub Toto() dans le projet "Classeur A"
Ce classeur est ouvert.
Quand je lance l'exécution de la procédure Zaza() (d'un classeur B)
dans laquelle figure l'instruction : "Call Toto"
une alerte VBA me signale : "Sub non définie"

L'aide me dit d'aller dans la boîte de dialogue "Références"
pour cocher le nom du projet qui contient la Sub. ...

Est-ce la rubrique "Référence" qui apparaît ans le menu Outils
de la page Visual Basic ? (dans laquelle je ne trouve pas la référence
du projet ("Classeur A") qui contient la procédure "Toto"

Bref, je suis perdu ! ... à l'aide !
Merci

3 réponses

Avatar
FS
Bonjour,

Il est probable que dans cette boite de dialogue Références l'une
d'entre elles soit signalée comme Manquante. Si oui, décoche-la et
réessaye d'exécuter ton code.

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

LANIMAL a écrit :
Bonjour
Ce pb semble nouveau (suite à màj XP ?)
J'ai une Sub Toto() dans le projet "Classeur A"
Ce classeur est ouvert.
Quand je lance l'exécution de la procédure Zaza() (d'un classeur B)
dans laquelle figure l'instruction : "Call Toto"
une alerte VBA me signale : "Sub non définie"

L'aide me dit d'aller dans la boîte de dialogue "Références"
pour cocher le nom du projet qui contient la Sub. ...

Est-ce la rubrique "Référence" qui apparaît ans le menu Outils
de la page Visual Basic ? (dans laquelle je ne trouve pas la référence
du projet ("Classeur A") qui contient la procédure "Toto"

Bref, je suis perdu ! ... à l'aide !
Merci


Avatar
michdenis
Bonjour,

Pour appeler et exécuter une macro d'un autre classeur ouvert
emploie ceci :

Il est présumé que la macro Test1 est écrite dans un module
standard dans le classeur "Mon Classeur.xls".

Dim LaMacro As String
Dim NomDuClasseur
NomDuClasseur = "Mon Classeur.xls"
LaMacro = "'" & NomDuClasseur & "'!test1"
Application.Run LaMacro

Si la procédure est dans un module de feuille,
tu dois ajouter le nom du module devant le nom
de la procédure

Dim LaMacro As String
Dim NomDuClasseur
NomDuClasseur = "Mon Classeur.xls"
LaMacro = "'" & NomDuClasseur & "'!Feuil1.test1"
Application.Run LaMacro

L'autre alternative, c'est de passer le fichier où la macro
en référence a ton fichier de base.
Étape :

Pour le fichier que tu veux passer en référence :
Tu ouvres la fenêtre de l'éditeur de code,
Tu sélectionnes le projetVBA de ce classeur
Dans la fenêtre des propriétés, s'afficher la propriété
Name = VBAProject
Modifie VBAProject par un nom de ton cru et assure toi
que ce nom n'existe pas en doublon.
Tu enregistre ton classeur.

Maintenant pour ajouter ce classeur en référence à ton classeur initial.
A ) dans la fenêtre VBA,
- sélectionne le projetvba de ton classeur
- barre des menus / outils / référence / et utilises le bouton
parcourir et remonte dans l'arborescence de l'explorateur Windows
jusqu'au fichier Excel que tu veux ajouter...en double-cliquant dessus
il va s'ajouter à la liste déjà présente, et le nom que tu as saisi pour son
vbaprojet va apparaitre dans la liste. Tu t'assure que la case à cocher
est vraiment cochée avant de fermer la fenêtre.

B ) Ceci était fait, tu pourras appeler toutes les fonctions ou procédures
du classeur passé en référence seulement par leur nom.





"LANIMAL" a écrit dans le message de groupe de discussion :

Bonjour
Ce pb semble nouveau (suite à màj XP ?)
J'ai une Sub Toto() dans le projet "Classeur A"
Ce classeur est ouvert.
Quand je lance l'exécution de la procédure Zaza() (d'un classeur B)
dans laquelle figure l'instruction : "Call Toto"
une alerte VBA me signale : "Sub non définie"

L'aide me dit d'aller dans la boîte de dialogue "Références"
pour cocher le nom du projet qui contient la Sub. ...

Est-ce la rubrique "Référence" qui apparaît ans le menu Outils
de la page Visual Basic ? (dans laquelle je ne trouve pas la référence
du projet ("Classeur A") qui contient la procédure "Toto"

Bref, je suis perdu ! ... à l'aide !
Merci
Avatar
LANIMAL
Merci... encore une fois michdenis !
C'est la première fois que je rencontre ce pb, et pourtant
j'ai très souvent appelé une procédure depuis un autre projet.
Effectivement le nom du projet était absent de la liste-références,
alors que les nom des autres projets s'y sont inscrits sans que je n'aie
jamais rien fait.

Le simple fait de renommer le classeur-référent l'a inscrit
automatiquement dans la liste.
Tout baigne ! Merci (j'ai mrd 3 heures avant de lancer mon SOS ! ! ! !)

michdenis a écrit :
Bonjour,

Pour appeler et exécuter une macro d'un autre classeur ouvert
emploie ceci :

Il est présumé que la macro Test1 est écrite dans un module
standard dans le classeur "Mon Classeur.xls".

Dim LaMacro As String
Dim NomDuClasseur
NomDuClasseur = "Mon Classeur.xls"
LaMacro = "'" & NomDuClasseur & "'!test1"
Application.Run LaMacro

Si la procédure est dans un module de feuille,
tu dois ajouter le nom du module devant le nom
de la procédure

Dim LaMacro As String
Dim NomDuClasseur
NomDuClasseur = "Mon Classeur.xls"
LaMacro = "'" & NomDuClasseur & "'!Feuil1.test1"
Application.Run LaMacro

L'autre alternative, c'est de passer le fichier où la macro
en référence a ton fichier de base.
Étape :

Pour le fichier que tu veux passer en référence :
Tu ouvres la fenêtre de l'éditeur de code,
Tu sélectionnes le projetVBA de ce classeur
Dans la fenêtre des propriétés, s'afficher la propriété
Name = VBAProject
Modifie VBAProject par un nom de ton cru et assure toi
que ce nom n'existe pas en doublon.
Tu enregistre ton classeur.

Maintenant pour ajouter ce classeur en référence à ton classeur initial.
A ) dans la fenêtre VBA,
- sélectionne le projetvba de ton classeur
- barre des menus / outils / référence / et utilises le bouton
parcourir et remonte dans l'arborescence de l'explorateur Windows
jusqu'au fichier Excel que tu veux ajouter...en double-cliquant dessus
il va s'ajouter à la liste déjà présente, et le nom que tu as saisi pour son
vbaprojet va apparaitre dans la liste. Tu t'assure que la case à cocher
est vraiment cochée avant de fermer la fenêtre.

B ) Ceci était fait, tu pourras appeler toutes les fonctions ou procédures
du classeur passé en référence seulement par leur nom.





"LANIMAL" a écrit dans le message de groupe de discussion :

Bonjour
Ce pb semble nouveau (suite à màj XP ?)
J'ai une Sub Toto() dans le projet "Classeur A"
Ce classeur est ouvert.
Quand je lance l'exécution de la procédure Zaza() (d'un classeur B)
dans laquelle figure l'instruction : "Call Toto"
une alerte VBA me signale : "Sub non définie"

L'aide me dit d'aller dans la boîte de dialogue "Références"
pour cocher le nom du projet qui contient la Sub. ...

Est-ce la rubrique "Référence" qui apparaît ans le menu Outils
de la page Visual Basic ? (dans laquelle je ne trouve pas la référence
du projet ("Classeur A") qui contient la procédure "Toto"

Bref, je suis perdu ! ... à l'aide !
Merci