Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

variables publiques

  • Initiateur de la discussion Initiateur de la discussion kevin.remillard
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

K

kevin.remillard

Guest
Bonjour

j'ai un petit problème dans un programme vba sous excel 2003.

en effet, quand j'ouvre le fichier un macro workbook_open() s'active, cette macro comprend deux procédures.

les deux font la meme chose elles assigne des noms de workbook a une variables publique.

ces variables publiques sont utilisé dans tous le workbook.

jusque la tout va bien! sauf quand j'active un autre macro et qu'elle contient un processus de correction d'erreur. Cette macro vérifie qu'un colonne de donnée ne contient pas de valeur négative ou de zéro. Quand il en a, la macro avertie l'utilisateur que la colonne en contient et se termine.

le probleme est que si je veux relancer la macro (qui utilise les variable public enoncer plus haut) elle me dit que la variable nest pas valide (type mismatch)
et je dois relancer la macro workbook_open ou reouvrire le fichier pour que ca fonctionne a nouveau, ce qui est embetant.

je voudrais, si possible, que la variable reste assigner a sa valeur de départ peu importe ce qui arrive.

merci

kevin
 
Dernière modification par un modérateur:
Re : variables publiques

Bonjour Kevin,

Déclarer une variable publique, cela permet de l'utiliser partout dans ton pojet VBA à condition qu'elle soit déclarer dans un module

Ensuite la valeur prise par cette variable n'est disponible qu'au moment ou cela est indiqué dans le code

Ce que tu peux essayer de faire, c'est utiliser des constantes
VB:
Public Const MaVar1 As String = "Toto"

Quand tu utiliseras cette variable, le code sera qu'elle contient "Toto"

A+
 
Re : variables publiques

Bonjour le fil, bonjour le forum,

Pour compléter les explications de Bruno je précise qu'une variable publique ne peut être déclarée que dans un Module. Vérifie cela et/ou envoie-nous ton code pour qu'on puisse se faire une idée...
 
Re : variables publiques

j'ai ecrit la constante dans mon

thisworkbook>workbookopen la ou ca doit creer la constante et ca me dit que je peut pas utiliser un constante a cette endroit

le hic c'est que je dois absolument assigner la valeur a louverture.
 
Re : variables publiques

Salut Robert,

Désolé de te rectifier 😉😱

Une variable peut être déclarée publique n'importe où ...
mais elle est réellement publique, donc accessible de n'importe où,
si elle est déclarée dans un module

A+
 
Re : variables publiques

Kévin,

Je vois que tu as un sérieux problème avec les constantes et variables en VBA 😕

Une constante, comme son nom l'indique est accessible à n'importe quel moment
elle doit être impérativement déclarée dans un module, mais est accessible à l'ouverture du classeur

Voir fichier joint 😉

A+
 

Pièces jointes

Re : variables publiques

voici mon code

enfin ce que je peu montrer ( dsl chu regis par mon employeur)

ca c dans this workbook c la que je dois assigner les valeurs
Sub Workbook_Open()

WB_name = ThisWorkbook.Name
CName = Workbooks(WB_name).Worksheets("Matrix").Range("B2")
End Sub

ca c'est ou je déclare les variables publiques( ya pas de sub c juste pour déclarer les variable)

Option Explicit

Public WB_name As String 'nom du fichier de calcul
Public CName As String 'nom du fichier de données

en gros le programme travail sur 2 workbook un de donné et un de calcul je vous sauve les details mais dan le workbook de calcul (celui ou jai le probleme) je dois recuperer le nom de lautre workbook pour l'activer dans les macro mais j'dois utiliser une variable pcq le workbook de donner peut varier

ensuite pk je mets le nom du workbook dans une variable aussi c'est ke jai besoin de changer le nom du workbook (ajouter les version que je suis rendu en fait ) sans avoir a tjrs changer tout les appel de workbook a la mains ce qui est tres long

je sai c po clair mais c'est po moi qui a ecrit le code je dois le debugger et meme moi je comprend po trop ce que la personne a fait ....

merci
kevin
 
Re : variables publiques

Bonsoir le fil, bonsoir le forum,

Oui merci de rectifier Bruno, même si finalement l'important est que pour que la variable de Kevin soit réellement publique il faut qu'elle soit déclarée dans un module et pas dans le composant ThisWorkbook...

Kevin tu dois déclarer la variable Publique dans un module, au tout début, avant les éventuelles procédures :
Code:
Public Classeur1 As Workbook
et tu peux la définir dans la macro Open du composant ThisWorkbook...
Code:
Private Sub Workbook_Open()
Classeur1 = ThisWorkbook
End Sub
par exemple... Là la variable aura une portée dans tous les composants de ton projet VBA.
 
Dernière édition:
Re : variables publiques

ah je pense que j'ai compris

la constante que je creer vas etre fonctionnel des que j'ouvre le classeur donc je peu ecrire dans mon module d'apelle de variable public

public const WB_name as string = thisworkbook.name

pi toute mes macro von lutiliser sans embuche

si je suis dans le champs gener vous pas

ps je sais ke je connais pas trop vba en fait je connai le language c et matlab et jetudi en geni mecanique la je suis en stage et je connaissai rien a vba avant la semaine derniere. donc c'est beaucoup d'information en peu de temps


merci
kevin
 
Re : variables publiques

Re,

Ca me parait difficile de t'aider dans ces conditions 🙄
ce que je peu montrer ( dsl chu regis par mon employeur)

Et de plus, Roger à raison, je te comprends de moins en moins


Merci de parler correctement, même si tu as beaucoup de chose à dire

Tu ne pourras pas utiliser de constante de cette manière
VB:
public const WB_name as string = thisworkbook.name

A+
 
Re : variables publiques

Ok désolé pour le language je vais me forcer.

Bon pour ce que bruno vient de me répondre: en effet je viens de l'essayer et c'était trop beau pour être vrai 😡...
 
Re : variables publiques

Re,

Bon reprennons 😉

Tu nous dis au début
le probleme est que si je veux relancer la macro (qui utilise les variable public enoncer plus haut) elle me dit que la variable nest pas valide (type mismatch)
Qu'elle variable e pose ce problème ?

A+
 
Re : variables publiques

Bon...

j'ai deux variables : WB_name il s'agit d'un nom de classeur celui ou j'effectue mes calculs et Cname le nom d'un autre classeur celui qui contient les données avec lesquels je fait les calculs.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

H
Réponses
2
Affichages
684
Hoooodini
H
O
Réponses
5
Affichages
2 K
C
Réponses
17
Affichages
6 K
Chalafraiz
C
A
Réponses
14
Affichages
5 K
B
Réponses
2
Affichages
3 K
B
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…