FORUM Tom's Hardware » Programmation » VB / VBA / VBS » VBA private - public - Err438
 

VBA private - public - Err438

Il y a 327 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : VBA private - public - Err438
 
Plus d'informations

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:

Code :
  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:

Code :
  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


Message édité par Herisson75 le 29-11-2007 à 14:54:59

zeb
Profil : Modérateur libre
Plus d'informations

Bienvenue sur PPC, Herisson.


Message édité par zeb le 29-11-2007 à 15:05:05

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

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:

Code :
  1. Sub Macro_principale
  2. Static var1,var2,var3
  3. ...
  4. Call Macro_secondaire
  5. ...
  6. End Sub


 
 
 

zeb
Profil : Modérateur libre
Plus d'informations

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 ?


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

Petite précision:
Ma macro principale et secondaire sont dans des modules différents
Merci

zeb
Profil : Modérateur libre
Plus d'informations

Spa un problème ça. Faut juste que le module de principale référence le module de secondaire.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

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,

Code :
  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 ?)


Message édité par zeb le 29-11-2007 à 15:47:59
zeb
Profil : Modérateur libre
Plus d'informations

>>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.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

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é
 

Plus d'informations

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

zeb
Profil : Modérateur libre
Plus d'informations

: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.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » VB / VBA / VBS » VBA private - public - Err438
 

Annonces Google
Publicité
Les ressources relatives