Se connecter avec
S'enregistrer | Connectez-vous

VBA private - public - Err438

Dernière réponse : dans Programmation

Bonjour à Tous,

J'ai crée un petit fichier avec plusieurs macros.
Ces macros sont associées à des boutons de commande qui permettent de les lancer
Les boutons de commande sont placés dans une Worksheet et non pas dans un Userform

Dans la structure cela donne ça:
  1. Private sub Commandbutton1()
  2. code...macro1
  3. End Sub
  4. Private sub Commandbutton2()
  5. code...macro2
  6. End Sub
  7. Private sub Commandbutton3()
  8. code...macro3
  9. End Sub


Par souci de clareté, j'ai copié chacune de mes macro dans un module et je les appelle avec
une fonction Call de la maniere suivante

Dans module1:
  1. Sub macro1
  2. code
  3. End Sub



Cette manipulation ne marche pas. J'ai le message d'erreur suivant:
Erreur438 : Propriété ou méthode non géréé par cet objet
Je crois que le problème est du à la propriété PRIVATE
mais je ne sais pas comment contourner le problème


Merci d'avance pour votre aide

Autres pages sur : vba private public err438

Lassé par la pub ? Créez un compte

J'ai résolu mon problème (J'avais changé le nom d'un OptionButton sans changer le code...erreur stupide je m'en excuse)

En revanche j'ai une autre question toujours liées aux propriétés Private -Public et variables Static
Ma macro contient une sous-macro que j'appelle avec la fonction Call.
Je souhaite récupérer 3 variables à partir de cette sous-macro, mais les valeurs ne sont pas concervées après l'éxécution de la sous macro.

J'ai pourtant utilisée l'instruction Static???
Cela donne quelque chose comme:
  1. Sub Macro_principale
  2. Static var1,var2,var3
  3. ...
  4. Call Macro_secondaire
  5. ...
  6. End Sub




Expert Programmation

Ohlala, c'est du BASIC des années 80 ça !!

Le CALL, oublie-le. C'est un vestige à remiser avec GOTO.
Les variables STATIC au contraire, c'est du code avancée. Alors je suppose que tu te fourvoies (Moi aussi je peux me tromper, hein :o  )

Peut-on voir un extrait de code de Macro_Secondaire ?

Désolé pour mon manque de connaissance, mais je ne sais pas comment faire référence à un module

Mon module secondaire contient un simple select case pour l'instant,
  1. Sub Macro_secondaire
  2. Select case...
  3. ...
  4. End Select
  5. End Sub
(et la balise fermante, c'est moi qui doit la mettre ?)
Expert Programmation

>>Désolé pour mon manque de connaissance
Ben t'es quand même là pour poser des questions. Alors ne soit pas désolé.

Ton code dans macro_secondaire ne fait pas varié var1, var2 ni var3 mais à la sortie, ces variables sont modifiées :/  Bizarre.

Au lieu de Static, mets un simple Dim dans Principale. Vire le CALL et dis-nous si ça marche.

Sinon, propose nous un exemple simple de code qui reprend ton problème mais qui ne marche pas.

Ton code dans macro_secondaire ne fait pas varié var1, var2 ni var3 mais à la sortie, ces variables sont modifiées :/  Bizarre.
=>Non, c justement ma macro secondaire, qui initialise Var1,2,3
Une fois, la macro secondaire terminée var1,2,3 sont systématiquement rénitialisée quoique je fasse.

Je suis revenu à Dim au lieu de private
J'ai enlevé le Call
Le problème demeure et persiste

Cette macro secondaire est appelée plusieurs fois dans mon programme par la suite.Je souhaite utiliser une macro secondaire pour alléger la macro principale.
Je peux me débrouiller sans, mais c de la curiosité

Je viens de comprendre mon erreur en relisant certains tutoriaux. C'est ce que je soupçonnais depuis le début, une procédure Sub ne renvoit pas de valeur....


En temps normal, j'aurais utilisé une procédure function mais comme j'avais trois Variables Var1,2,3 j'ai voulu faire le malin
Et comme on dit : Qui fait le malin tombe dans le ravin
Expert Programmation

:heink: 

Quelles valeurs ?
Ton code ne montre rien de tel !

Si tu parles de retour par valeur des paramètres, il va falloir "proposer nous un exemple simple de code qui reprend ton problème". Mais ça, je l'ai déjà dit.
Lassé par la pub ? Créez un compte