Bonjour à tous,
Où placer les deux Array contenant du texte pour qu'ils
soient utilisés dans toutes les feuilles d'un VBAProject,
sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC sans
les voir des autres feuilles, y compris dans Modules de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le Newsgroups.
Merci beaucoup pour toutes les interventions.
Daniel
Bonjour à tous,
Où placer les deux Array contenant du texte pour qu'ils
soient utilisés dans toutes les feuilles d'un VBAProject,
sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC sans
les voir des autres feuilles, y compris dans Modules de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le Newsgroups.
Merci beaucoup pour toutes les interventions.
Daniel
Bonjour à tous,
Où placer les deux Array contenant du texte pour qu'ils
soient utilisés dans toutes les feuilles d'un VBAProject,
sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC sans
les voir des autres feuilles, y compris dans Modules de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le Newsgroups.
Merci beaucoup pour toutes les interventions.
Daniel
-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il faut
la déclarer PUBLIC
au début ( !! ) d'un module standard, c'est-à-dire AVANT
la première
procédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de feuille,
de classeur, de
boîte de dialogue ( d'une façon générale dans un module
de classe) revient à
créer une propriété publique en lecture-écriture pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens
arrêtent de se battre
en mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre. Merci)
---
xyzDaniel wrote:Bonjour à tous,
Où placer les deux Array contenant du texte pour qu'ils
soient utilisés dans toutes les feuilles d'un
VBAProject,
sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC sans
les voir des autres feuilles, y compris dans Modules de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.
Merci beaucoup pour toutes les interventions.
Daniel
.
-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il faut
la déclarer PUBLIC
au début ( !! ) d'un module standard, c'est-à-dire AVANT
la première
procédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de feuille,
de classeur, de
boîte de dialogue ( d'une façon générale dans un module
de classe) revient à
créer une propriété publique en lecture-écriture pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens
arrêtent de se battre
en mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre. Merci)
---
xyzDaniel wrote:
Bonjour à tous,
Où placer les deux Array contenant du texte pour qu'ils
soient utilisés dans toutes les feuilles d'un
VBAProject,
sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC sans
les voir des autres feuilles, y compris dans Modules de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.
Merci beaucoup pour toutes les interventions.
Daniel
.
-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il faut
la déclarer PUBLIC
au début ( !! ) d'un module standard, c'est-à-dire AVANT
la première
procédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de feuille,
de classeur, de
boîte de dialogue ( d'une façon générale dans un module
de classe) revient à
créer une propriété publique en lecture-écriture pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens
arrêtent de se battre
en mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre. Merci)
---
xyzDaniel wrote:Bonjour à tous,
Où placer les deux Array contenant du texte pour qu'ils
soient utilisés dans toutes les feuilles d'un
VBAProject,
sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC sans
les voir des autres feuilles, y compris dans Modules de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.
Merci beaucoup pour toutes les interventions.
Daniel
.
Bonjour Pierre,
Et merci pour ta réponse.
Mais, j'ai bien mis en tête de module : Dim Public wshit1.
Et si j'en vois bien une dans les Functions : vide est son
contenu !
==> Comment, et je me suis mal exprimé précedemment, et où
mettre une seule fois le contenu fixe de cette variable
pour que celui-ci soit utilisé partout ?
Ex :
Dim Public wshit1
wshit1 = Array
("Nom_Ongle1","Nom_Ongle2","Nom_Ongle3","Nom_Ongle4")
En cas d'ajout d'un ou plusieurs onglets, je complète
wshit1 et relance le tout.
J'ai mis cette définition un peu partout : sans résultat.
Merci pour ta patience.
Daniel-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il faut
la déclarer PUBLICau début ( !! ) d'un module standard, c'est-à-dire AVANT
la premièreprocédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de feuille,
de classeur, deboîte de dialogue ( d'une façon générale dans un module
de classe) revient àcréer une propriété publique en lecture-écriture pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens
arrêtent de se battreen mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre. Merci)
---
xyzDaniel wrote:Bonjour à tous,
Où placer les deux Array contenant du texte pour qu'ils
soient utilisés dans toutes les feuilles d'un
VBAProject,sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC sans
les voir des autres feuilles, y compris dans Modules de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.Merci beaucoup pour toutes les interventions.
Daniel
.
Bonjour Pierre,
Et merci pour ta réponse.
Mais, j'ai bien mis en tête de module : Dim Public wshit1.
Et si j'en vois bien une dans les Functions : vide est son
contenu !
==> Comment, et je me suis mal exprimé précedemment, et où
mettre une seule fois le contenu fixe de cette variable
pour que celui-ci soit utilisé partout ?
Ex :
Dim Public wshit1
wshit1 = Array
("Nom_Ongle1","Nom_Ongle2","Nom_Ongle3","Nom_Ongle4")
En cas d'ajout d'un ou plusieurs onglets, je complète
wshit1 et relance le tout.
J'ai mis cette définition un peu partout : sans résultat.
Merci pour ta patience.
Daniel
-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il faut
la déclarer PUBLIC
au début ( !! ) d'un module standard, c'est-à-dire AVANT
la première
procédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de feuille,
de classeur, de
boîte de dialogue ( d'une façon générale dans un module
de classe) revient à
créer une propriété publique en lecture-écriture pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens
arrêtent de se battre
en mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre. Merci)
---
xyzDaniel wrote:
Bonjour à tous,
Où placer les deux Array contenant du texte pour qu'ils
soient utilisés dans toutes les feuilles d'un
VBAProject,
sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC sans
les voir des autres feuilles, y compris dans Modules de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.
Merci beaucoup pour toutes les interventions.
Daniel
.
Bonjour Pierre,
Et merci pour ta réponse.
Mais, j'ai bien mis en tête de module : Dim Public wshit1.
Et si j'en vois bien une dans les Functions : vide est son
contenu !
==> Comment, et je me suis mal exprimé précedemment, et où
mettre une seule fois le contenu fixe de cette variable
pour que celui-ci soit utilisé partout ?
Ex :
Dim Public wshit1
wshit1 = Array
("Nom_Ongle1","Nom_Ongle2","Nom_Ongle3","Nom_Ongle4")
En cas d'ajout d'un ou plusieurs onglets, je complète
wshit1 et relance le tout.
J'ai mis cette définition un peu partout : sans résultat.
Merci pour ta patience.
Daniel-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il faut
la déclarer PUBLICau début ( !! ) d'un module standard, c'est-à-dire AVANT
la premièreprocédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de feuille,
de classeur, deboîte de dialogue ( d'une façon générale dans un module
de classe) revient àcréer une propriété publique en lecture-écriture pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens
arrêtent de se battreen mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre. Merci)
---
xyzDaniel wrote:Bonjour à tous,
Où placer les deux Array contenant du texte pour qu'ils
soient utilisés dans toutes les feuilles d'un
VBAProject,sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC sans
les voir des autres feuilles, y compris dans Modules de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.Merci beaucoup pour toutes les interventions.
Daniel
.
-----Message d'origine-----
Bonjour,
Une variable fixe, c'est une constante ;-))
Malheureusement, un Array ne peut être défini comme
constante ;-((
Au début d'un module standard :
Public Liste
Dans le Workbook_Open (module ThisWorkbook)
Private Sub Workbook_Open()
Liste = Array("Feuil1", "Feuil2")
' Tes autres instructions éventuelles
End Sub
Ailleurs, par exemple dans le module d'un UserForm
Private Sub UserForm_Click()
MsgBox Liste(0)
End SubBonjour Pierre,
Et merci pour ta réponse.
Mais, j'ai bien mis en tête de module : Dim Public
wshit1.
Et si j'en vois bien une dans les Functions : vide est
son
contenu !
==> Comment, et je me suis mal exprimé précedemment, et
où
mettre une seule fois le contenu fixe de cette variable
pour que celui-ci soit utilisé partout ?
Ex :
Dim Public wshit1
wshit1 = Array
("Nom_Ongle1","Nom_Ongle2","Nom_Ongle3","Nom_Ongle4")
En cas d'ajout d'un ou plusieurs onglets, je complète
wshit1 et relance le tout.
J'ai mis cette définition un peu partout : sans
résultat.
Merci pour ta patience.
Daniel-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il faut
la déclarer PUBLICau début ( !! ) d'un module standard, c'est-à-dire
AVANT
la premièreprocédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de feuille,
de classeur, deboîte de dialogue ( d'une façon générale dans un module
de classe) revient àcréer une propriété publique en lecture-écriture pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens
arrêtent de se battreen mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre. Merci)
---
xyzDaniel wrote:Bonjour à tous,
Où placer les deux Array contenant du texte pour
qu'ils
soient utilisés dans toutes les feuilles d'un
VBAProject,sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC
sans
les voir des autres feuilles, y compris dans Modules
de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.Merci beaucoup pour toutes les interventions.
Daniel
.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
-----Message d'origine-----
Bonjour,
Une variable fixe, c'est une constante ;-))
Malheureusement, un Array ne peut être défini comme
constante ;-((
Au début d'un module standard :
Public Liste
Dans le Workbook_Open (module ThisWorkbook)
Private Sub Workbook_Open()
Liste = Array("Feuil1", "Feuil2")
' Tes autres instructions éventuelles
End Sub
Ailleurs, par exemple dans le module d'un UserForm
Private Sub UserForm_Click()
MsgBox Liste(0)
End Sub
Bonjour Pierre,
Et merci pour ta réponse.
Mais, j'ai bien mis en tête de module : Dim Public
wshit1.
Et si j'en vois bien une dans les Functions : vide est
son
contenu !
==> Comment, et je me suis mal exprimé précedemment, et
où
mettre une seule fois le contenu fixe de cette variable
pour que celui-ci soit utilisé partout ?
Ex :
Dim Public wshit1
wshit1 = Array
("Nom_Ongle1","Nom_Ongle2","Nom_Ongle3","Nom_Ongle4")
En cas d'ajout d'un ou plusieurs onglets, je complète
wshit1 et relance le tout.
J'ai mis cette définition un peu partout : sans
résultat.
Merci pour ta patience.
Daniel
-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il faut
la déclarer PUBLIC
au début ( !! ) d'un module standard, c'est-à-dire
AVANT
la première
procédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de feuille,
de classeur, de
boîte de dialogue ( d'une façon générale dans un module
de classe) revient à
créer une propriété publique en lecture-écriture pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens
arrêtent de se battre
en mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre. Merci)
---
xyzDaniel wrote:
Bonjour à tous,
Où placer les deux Array contenant du texte pour
qu'ils
soient utilisés dans toutes les feuilles d'un
VBAProject,
sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC
sans
les voir des autres feuilles, y compris dans Modules
de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.
Merci beaucoup pour toutes les interventions.
Daniel
.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
-----Message d'origine-----
Bonjour,
Une variable fixe, c'est une constante ;-))
Malheureusement, un Array ne peut être défini comme
constante ;-((
Au début d'un module standard :
Public Liste
Dans le Workbook_Open (module ThisWorkbook)
Private Sub Workbook_Open()
Liste = Array("Feuil1", "Feuil2")
' Tes autres instructions éventuelles
End Sub
Ailleurs, par exemple dans le module d'un UserForm
Private Sub UserForm_Click()
MsgBox Liste(0)
End SubBonjour Pierre,
Et merci pour ta réponse.
Mais, j'ai bien mis en tête de module : Dim Public
wshit1.
Et si j'en vois bien une dans les Functions : vide est
son
contenu !
==> Comment, et je me suis mal exprimé précedemment, et
où
mettre une seule fois le contenu fixe de cette variable
pour que celui-ci soit utilisé partout ?
Ex :
Dim Public wshit1
wshit1 = Array
("Nom_Ongle1","Nom_Ongle2","Nom_Ongle3","Nom_Ongle4")
En cas d'ajout d'un ou plusieurs onglets, je complète
wshit1 et relance le tout.
J'ai mis cette définition un peu partout : sans
résultat.
Merci pour ta patience.
Daniel-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il faut
la déclarer PUBLICau début ( !! ) d'un module standard, c'est-à-dire
AVANT
la premièreprocédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de feuille,
de classeur, deboîte de dialogue ( d'une façon générale dans un module
de classe) revient àcréer une propriété publique en lecture-écriture pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens
arrêtent de se battreen mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre. Merci)
---
xyzDaniel wrote:Bonjour à tous,
Où placer les deux Array contenant du texte pour
qu'ils
soient utilisés dans toutes les feuilles d'un
VBAProject,sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC
sans
les voir des autres feuilles, y compris dans Modules
de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.Merci beaucoup pour toutes les interventions.
Daniel
.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
Bonjour
Il est tout à fait possible de déclarer une variable publique dans un module
de classe, et donc de userform. Cette variable devient alors une propriété
en lecture-écriture du le userform et on peut l'appeler d'un code externe
via l'objet userform qui la contient. Cela évite les variables public dans
un module standard
Dans le code du userform ( par exemple nommé UserForm1 ), on écrit, en tête
de module et après les éventuelles lignes Option ...
Public MaVariablePublique as Range ( pour reprendre l'exemple de
l'initiateur de la ficelle )
Dans le code externe au userform, on pourra utiliser cette variable via
UserForm1.MaVariablePublique = Cells(Ligne,Colonne)
--
Cela convient-il?
----
Pierre Fauconnier
"C'est lorsqu'il y a un temps mort qu'il faut tuer le temps..."
(remplacer NOSPAM par pfi pour me répondre. Merci)
---
Michel Gaboly wrote:Bonsoir,
Il n'est pas possible de définir une variable Public dans le code
associé à un UserForm.
Il faut donc que la définisses dans un module standard :
Public NumLigne as Long
Dans le UserForm1, quand la recherche a abouti, tu rajoutes
NumLigne = Ligne
Dans le UserForm2, tu fais appel à NumLigne.
Selon les circonstances, il peut y avoir + simple : il n'est
peut-être pas néces- saire d'avoir 2 variables : dans le UserForm1,
tu peux peut-être utiliser la variable Public NumLigne directement,
et te passer de Ligne.
Bonjour,
Ta réponse me conforte dans ce que j'avais mis
initialement en pratique.
Mais rien n'y fait : je n'ai rien dans les autres feuilles
de type Feuilnn.
Je tique sur ta première phrase : peut-être ne l'ai-je pas
bien comprise.
Tu écris : >Au début d'un module standard :
Or, la structure du projet est la suivante :
- VBAProject(nom-projet)
- Microsoft Excel Objets
- Feuil1(nom_onglet1)
- Feuil2(nom_onglet2)
- .....
- Feuil9(nom_onglet9)
- ThisWorkbook
Quel que soit l'endroit où je mets Public var1 et quel que
soit l'endroit unique où je définis son contenu (la
variable Me me permets de le vérifier à chaque étape, je
ne retrouve pas ces définitions, dans aucune Feuilnn ?
Mais encore merci pour ton intervention.
Daniel-----Message d'origine-----
Bonjour,
Une variable fixe, c'est une constante ;-))
Malheureusement, un Array ne peut être défini comme
constante ;-((
Au début d'un module standard :
Public Liste
Dans le Workbook_Open (module ThisWorkbook)
Private Sub Workbook_Open()
Liste = Array("Feuil1", "Feuil2")
' Tes autres instructions éventuelles
End Sub
Ailleurs, par exemple dans le module d'un UserForm
Private Sub UserForm_Click()
MsgBox Liste(0)
End SubBonjour Pierre,
Et merci pour ta réponse.
Mais, j'ai bien mis en tête de module : Dim Public
wshit1.Et si j'en vois bien une dans les Functions : vide est
soncontenu !
==> Comment, et je me suis mal exprimé précedemment, et
oùmettre une seule fois le contenu fixe de cette variable
pour que celui-ci soit utilisé partout ?
Ex :
Dim Public wshit1
wshit1 = Array
("Nom_Ongle1","Nom_Ongle2","Nom_Ongle3","Nom_Ongle4")
En cas d'ajout d'un ou plusieurs onglets, je complète
wshit1 et relance le tout.
J'ai mis cette définition un peu partout : sans
résultat.Merci pour ta patience.
Daniel-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il faut
la déclarer PUBLICau début ( !! ) d'un module standard, c'est-à-dire
AVANTla premièreprocédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de feuille,
de classeur, deboîte de dialogue ( d'une façon générale dans un module
de classe) revient àcréer une propriété publique en lecture-écriture pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens
arrêtent de se battreen mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre. Merci)
---
xyzDaniel wrote:Bonjour à tous,
Où placer les deux Array contenant du texte pour
qu'ilssoient utilisés dans toutes les feuilles d'un
VBAProject,sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC
sansles voir des autres feuilles, y compris dans Modules
deClasse ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.Merci beaucoup pour toutes les interventions.
Daniel
.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
Bonjour
Il est tout à fait possible de déclarer une variable publique dans un module
de classe, et donc de userform. Cette variable devient alors une propriété
en lecture-écriture du le userform et on peut l'appeler d'un code externe
via l'objet userform qui la contient. Cela évite les variables public dans
un module standard
Dans le code du userform ( par exemple nommé UserForm1 ), on écrit, en tête
de module et après les éventuelles lignes Option ...
Public MaVariablePublique as Range ( pour reprendre l'exemple de
l'initiateur de la ficelle )
Dans le code externe au userform, on pourra utiliser cette variable via
UserForm1.MaVariablePublique = Cells(Ligne,Colonne)
--
Cela convient-il?
----
Pierre Fauconnier
"C'est lorsqu'il y a un temps mort qu'il faut tuer le temps..."
(remplacer NOSPAM par pfi pour me répondre. Merci)
---
Michel Gaboly wrote:
Bonsoir,
Il n'est pas possible de définir une variable Public dans le code
associé à un UserForm.
Il faut donc que la définisses dans un module standard :
Public NumLigne as Long
Dans le UserForm1, quand la recherche a abouti, tu rajoutes
NumLigne = Ligne
Dans le UserForm2, tu fais appel à NumLigne.
Selon les circonstances, il peut y avoir + simple : il n'est
peut-être pas néces- saire d'avoir 2 variables : dans le UserForm1,
tu peux peut-être utiliser la variable Public NumLigne directement,
et te passer de Ligne.
Bonjour,
Ta réponse me conforte dans ce que j'avais mis
initialement en pratique.
Mais rien n'y fait : je n'ai rien dans les autres feuilles
de type Feuilnn.
Je tique sur ta première phrase : peut-être ne l'ai-je pas
bien comprise.
Tu écris : >Au début d'un module standard :
Or, la structure du projet est la suivante :
- VBAProject(nom-projet)
- Microsoft Excel Objets
- Feuil1(nom_onglet1)
- Feuil2(nom_onglet2)
- .....
- Feuil9(nom_onglet9)
- ThisWorkbook
Quel que soit l'endroit où je mets Public var1 et quel que
soit l'endroit unique où je définis son contenu (la
variable Me me permets de le vérifier à chaque étape, je
ne retrouve pas ces définitions, dans aucune Feuilnn ?
Mais encore merci pour ton intervention.
Daniel
-----Message d'origine-----
Bonjour,
Une variable fixe, c'est une constante ;-))
Malheureusement, un Array ne peut être défini comme
constante ;-((
Au début d'un module standard :
Public Liste
Dans le Workbook_Open (module ThisWorkbook)
Private Sub Workbook_Open()
Liste = Array("Feuil1", "Feuil2")
' Tes autres instructions éventuelles
End Sub
Ailleurs, par exemple dans le module d'un UserForm
Private Sub UserForm_Click()
MsgBox Liste(0)
End Sub
Bonjour Pierre,
Et merci pour ta réponse.
Mais, j'ai bien mis en tête de module : Dim Public
wshit1.
Et si j'en vois bien une dans les Functions : vide est
son
contenu !
==> Comment, et je me suis mal exprimé précedemment, et
où
mettre une seule fois le contenu fixe de cette variable
pour que celui-ci soit utilisé partout ?
Ex :
Dim Public wshit1
wshit1 = Array
("Nom_Ongle1","Nom_Ongle2","Nom_Ongle3","Nom_Ongle4")
En cas d'ajout d'un ou plusieurs onglets, je complète
wshit1 et relance le tout.
J'ai mis cette définition un peu partout : sans
résultat.
Merci pour ta patience.
Daniel
-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il faut
la déclarer PUBLIC
au début ( !! ) d'un module standard, c'est-à-dire
AVANT
la première
procédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de feuille,
de classeur, de
boîte de dialogue ( d'une façon générale dans un module
de classe) revient à
créer une propriété publique en lecture-écriture pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens
arrêtent de se battre
en mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre. Merci)
---
xyzDaniel wrote:
Bonjour à tous,
Où placer les deux Array contenant du texte pour
qu'ils
soient utilisés dans toutes les feuilles d'un
VBAProject,
sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC
sans
les voir des autres feuilles, y compris dans Modules
de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.
Merci beaucoup pour toutes les interventions.
Daniel
.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
Bonjour
Il est tout à fait possible de déclarer une variable publique dans un module
de classe, et donc de userform. Cette variable devient alors une propriété
en lecture-écriture du le userform et on peut l'appeler d'un code externe
via l'objet userform qui la contient. Cela évite les variables public dans
un module standard
Dans le code du userform ( par exemple nommé UserForm1 ), on écrit, en tête
de module et après les éventuelles lignes Option ...
Public MaVariablePublique as Range ( pour reprendre l'exemple de
l'initiateur de la ficelle )
Dans le code externe au userform, on pourra utiliser cette variable via
UserForm1.MaVariablePublique = Cells(Ligne,Colonne)
--
Cela convient-il?
----
Pierre Fauconnier
"C'est lorsqu'il y a un temps mort qu'il faut tuer le temps..."
(remplacer NOSPAM par pfi pour me répondre. Merci)
---
Michel Gaboly wrote:Bonsoir,
Il n'est pas possible de définir une variable Public dans le code
associé à un UserForm.
Il faut donc que la définisses dans un module standard :
Public NumLigne as Long
Dans le UserForm1, quand la recherche a abouti, tu rajoutes
NumLigne = Ligne
Dans le UserForm2, tu fais appel à NumLigne.
Selon les circonstances, il peut y avoir + simple : il n'est
peut-être pas néces- saire d'avoir 2 variables : dans le UserForm1,
tu peux peut-être utiliser la variable Public NumLigne directement,
et te passer de Ligne.
Bonjour,
Ta réponse me conforte dans ce que j'avais mis
initialement en pratique.
Mais rien n'y fait : je n'ai rien dans les autres feuilles
de type Feuilnn.
Je tique sur ta première phrase : peut-être ne l'ai-je pas
bien comprise.
Tu écris : >Au début d'un module standard :
Or, la structure du projet est la suivante :
- VBAProject(nom-projet)
- Microsoft Excel Objets
- Feuil1(nom_onglet1)
- Feuil2(nom_onglet2)
- .....
- Feuil9(nom_onglet9)
- ThisWorkbook
Quel que soit l'endroit où je mets Public var1 et quel que
soit l'endroit unique où je définis son contenu (la
variable Me me permets de le vérifier à chaque étape, je
ne retrouve pas ces définitions, dans aucune Feuilnn ?
Mais encore merci pour ton intervention.
Daniel-----Message d'origine-----
Bonjour,
Une variable fixe, c'est une constante ;-))
Malheureusement, un Array ne peut être défini comme
constante ;-((
Au début d'un module standard :
Public Liste
Dans le Workbook_Open (module ThisWorkbook)
Private Sub Workbook_Open()
Liste = Array("Feuil1", "Feuil2")
' Tes autres instructions éventuelles
End Sub
Ailleurs, par exemple dans le module d'un UserForm
Private Sub UserForm_Click()
MsgBox Liste(0)
End SubBonjour Pierre,
Et merci pour ta réponse.
Mais, j'ai bien mis en tête de module : Dim Public
wshit1.Et si j'en vois bien une dans les Functions : vide est
soncontenu !
==> Comment, et je me suis mal exprimé précedemment, et
oùmettre une seule fois le contenu fixe de cette variable
pour que celui-ci soit utilisé partout ?
Ex :
Dim Public wshit1
wshit1 = Array
("Nom_Ongle1","Nom_Ongle2","Nom_Ongle3","Nom_Ongle4")
En cas d'ajout d'un ou plusieurs onglets, je complète
wshit1 et relance le tout.
J'ai mis cette définition un peu partout : sans
résultat.Merci pour ta patience.
Daniel-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il faut
la déclarer PUBLICau début ( !! ) d'un module standard, c'est-à-dire
AVANTla premièreprocédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de feuille,
de classeur, deboîte de dialogue ( d'une façon générale dans un module
de classe) revient àcréer une propriété publique en lecture-écriture pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les gens
arrêtent de se battreen mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre. Merci)
---
xyzDaniel wrote:Bonjour à tous,
Où placer les deux Array contenant du texte pour
qu'ilssoient utilisés dans toutes les feuilles d'un
VBAProject,sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option PUBLIC
sansles voir des autres feuilles, y compris dans Modules
deClasse ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.Merci beaucoup pour toutes les interventions.
Daniel
.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
-----Message d'origine-----
Bonjour,
Tu as bien fait de tiquer ;-))
Aucun de ces modules (module attaché à une feuille parti-
culière ou au classeur (ThisWorkbook) n'est un module
de standard. Il s'agit dans les 2 cas de variantes de
modules
de classe.
Utilise le menu "Insertion" pour ajouter 1 module ("tout
court", pas un module de classe) et, en haut de ce module,
définis ta variable publique :
Public Liste
Et tu verra, que tout d'un coup, cela fonctionnera ;-)))
pour + de précisions, voici une discussion d'octobre der-
nier sur ce forum (le premier message est de moi) :
Bonsoir,
Tu joues sur les mots ;-))
Si pour employer la variable, tu es obligé de la
qualifier avec le nom du
UserForm où elle a été définie, ce n'est pas
réellement une variable publique.
Pour ce faire, tu n'as d'ailleurs pas besoin de
variable : tu peux utiliser un
contrôle quelconque du UserForm avec la propriété
Visible ou Enabled à False.
D'autre part, cela ne marche pas :
1 - Crée un nouveau classeur
2 - Bascule dans l'environnement VBA
3 - Insère un module standard, avec ce code :
Option Explicit
Public VeritableVarPublique
Sub Test()
UserForm1.Show
MsgBox "Num : " & UserForm1.Num
MsgBox "VeritableVarPublique : " &
VeritableVarPublique
End Sub
4 - Insère un UserForm avec un CommandButton et ce
code :
Option Explicit
Public Num As Integer
Private Sub UserForm_Initialize()
Num = 1
End Sub
Private Sub CommandButton1_Click()
Num = 2
VeritableVarPublique = 2
Unload Me
End Sub
5 - Exécute ensuite la Sub "Test" du module. Le
UserForm est affiché,
puis 2 messages apparaissent successivement :
Num : 1
puis
VeritableVarPublique : 2
Alors qu'après le clic sur le CommandButton, ces 2
lignes ont été exécutées :
Num = 2
VeritableVarPublique = 2
Pourtant Num est égal à 1 et non à 2
En fait, la dernière valeur de Num (2) n'est plus
accessible après le
"Unload".
Pour afficher Num, la procédure recharge en mémoire
le UserForm
(méthode Load et Non Show). Le code associé à
l'événement Initialize est
exécuté, ce qui explique la valeur obtenue, 1.
Par contre, même après le Unload du UserForm,
VeritableVarPublique
est toujours égale à 2.
La définition d'une variable Public dans un module
standard fonctionne, ce
n'est pas le cas avec le module associé à un
UserForm : le mot-clef Public
est accepté, mais c'est un leurre ;-(((Bonjour
Il est tout à fait possible de déclarer une
variable publique dans un module
de classe, et donc de userform. Cette variable
devient alors une propriété
en lecture-écriture du le userform et on peut
l'appeler d'un code externe
via l'objet userform qui la contient. Cela évite
les variables public dans
un module standard
Dans le code du userform ( par exemple nommé
UserForm1 ), on écrit, en tête
de module et après les éventuelles lignes
Option ...
Public MaVariablePublique as Range ( pour
reprendre l'exemple de
l'initiateur de la ficelle )
Dans le code externe au userform, on pourra
utiliser cette variable via
UserForm1.MaVariablePublique = Cells
(Ligne,Colonne)
--
Cela convient-il?
----
Pierre Fauconnier
"C'est lorsqu'il y a un temps mort qu'il faut tuer
le temps..."
(remplacer NOSPAM par pfi pour me répondre. Merci)
---
Michel Gaboly wrote:Bonsoir,
Il n'est pas possible de définir une variable
Public dans le code
associé à un UserForm.
Il faut donc que la définisses dans un module
standard :
Public NumLigne as Long
Dans le UserForm1, quand la recherche a abouti,
tu rajoutes
NumLigne = Ligne
Dans le UserForm2, tu fais appel à NumLigne.
Selon les circonstances, il peut y avoir +
simple : il n'est
peut-être pas néces- saire d'avoir 2 variables :
dans le UserForm1,
tu peux peut-être utiliser la variable Public
NumLigne directement,
et te passer de Ligne.Bonjour,
Ta réponse me conforte dans ce que j'avais mis
initialement en pratique.
Mais rien n'y fait : je n'ai rien dans les autres
feuilles
de type Feuilnn.
Je tique sur ta première phrase : peut-être ne l'ai-je
pas
bien comprise.
Tu écris : >Au début d'un module standard :
Or, la structure du projet est la suivante :
- VBAProject(nom-projet)
- Microsoft Excel Objets
- Feuil1(nom_onglet1)
- Feuil2(nom_onglet2)
- .....
- Feuil9(nom_onglet9)
- ThisWorkbook
Quel que soit l'endroit où je mets Public var1 et quel
que
soit l'endroit unique où je définis son contenu (la
variable Me me permets de le vérifier à chaque étape, je
ne retrouve pas ces définitions, dans aucune Feuilnn ?
Mais encore merci pour ton intervention.
Daniel-----Message d'origine-----
Bonjour,
Une variable fixe, c'est une constante ;-))
Malheureusement, un Array ne peut être défini comme
constante ;-((
Au début d'un module standard :
Public Liste
Dans le Workbook_Open (module ThisWorkbook)
Private Sub Workbook_Open()
Liste = Array("Feuil1", "Feuil2")
' Tes autres instructions éventuelles
End Sub
Ailleurs, par exemple dans le module d'un UserForm
Private Sub UserForm_Click()
MsgBox Liste(0)
End SubBonjour Pierre,
Et merci pour ta réponse.
Mais, j'ai bien mis en tête de module : Dim Public
wshit1.Et si j'en vois bien une dans les Functions : vide
est
soncontenu !
==> Comment, et je me suis mal exprimé précedemment,
et
oùmettre une seule fois le contenu fixe de cette
variable
pour que celui-ci soit utilisé partout ?
Ex :
Dim Public wshit1
wshit1 = Array
("Nom_Ongle1","Nom_Ongle2","Nom_Ongle3","Nom_Ongle4")
En cas d'ajout d'un ou plusieurs onglets, je complète
wshit1 et relance le tout.
J'ai mis cette définition un peu partout : sans
résultat.Merci pour ta patience.
Daniel-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il
faut
la déclarer PUBLICau début ( !! ) d'un module standard, c'est-à-dire
AVANTla premièreprocédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de
feuille,
de classeur, deboîte de dialogue ( d'une façon générale dans un
module
de classe) revient àcréer une propriété publique en lecture-écriture
pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les
gens
arrêtent de se battreen mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre.
Merci)
---
xyzDaniel wrote:Bonjour à tous,
Où placer les deux Array contenant du texte pour
qu'ilssoient utilisés dans toutes les feuilles d'un
VBAProject,sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option
PUBLIC
sansles voir des autres feuilles, y compris dans
Modules
deClasse ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.Merci beaucoup pour toutes les interventions.
Daniel
.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
-----Message d'origine-----
Bonjour,
Tu as bien fait de tiquer ;-))
Aucun de ces modules (module attaché à une feuille parti-
culière ou au classeur (ThisWorkbook) n'est un module
de standard. Il s'agit dans les 2 cas de variantes de
modules
de classe.
Utilise le menu "Insertion" pour ajouter 1 module ("tout
court", pas un module de classe) et, en haut de ce module,
définis ta variable publique :
Public Liste
Et tu verra, que tout d'un coup, cela fonctionnera ;-)))
pour + de précisions, voici une discussion d'octobre der-
nier sur ce forum (le premier message est de moi) :
Bonsoir,
Tu joues sur les mots ;-))
Si pour employer la variable, tu es obligé de la
qualifier avec le nom du
UserForm où elle a été définie, ce n'est pas
réellement une variable publique.
Pour ce faire, tu n'as d'ailleurs pas besoin de
variable : tu peux utiliser un
contrôle quelconque du UserForm avec la propriété
Visible ou Enabled à False.
D'autre part, cela ne marche pas :
1 - Crée un nouveau classeur
2 - Bascule dans l'environnement VBA
3 - Insère un module standard, avec ce code :
Option Explicit
Public VeritableVarPublique
Sub Test()
UserForm1.Show
MsgBox "Num : " & UserForm1.Num
MsgBox "VeritableVarPublique : " &
VeritableVarPublique
End Sub
4 - Insère un UserForm avec un CommandButton et ce
code :
Option Explicit
Public Num As Integer
Private Sub UserForm_Initialize()
Num = 1
End Sub
Private Sub CommandButton1_Click()
Num = 2
VeritableVarPublique = 2
Unload Me
End Sub
5 - Exécute ensuite la Sub "Test" du module. Le
UserForm est affiché,
puis 2 messages apparaissent successivement :
Num : 1
puis
VeritableVarPublique : 2
Alors qu'après le clic sur le CommandButton, ces 2
lignes ont été exécutées :
Num = 2
VeritableVarPublique = 2
Pourtant Num est égal à 1 et non à 2
En fait, la dernière valeur de Num (2) n'est plus
accessible après le
"Unload".
Pour afficher Num, la procédure recharge en mémoire
le UserForm
(méthode Load et Non Show). Le code associé à
l'événement Initialize est
exécuté, ce qui explique la valeur obtenue, 1.
Par contre, même après le Unload du UserForm,
VeritableVarPublique
est toujours égale à 2.
La définition d'une variable Public dans un module
standard fonctionne, ce
n'est pas le cas avec le module associé à un
UserForm : le mot-clef Public
est accepté, mais c'est un leurre ;-(((
Bonjour
Il est tout à fait possible de déclarer une
variable publique dans un module
de classe, et donc de userform. Cette variable
devient alors une propriété
en lecture-écriture du le userform et on peut
l'appeler d'un code externe
via l'objet userform qui la contient. Cela évite
les variables public dans
un module standard
Dans le code du userform ( par exemple nommé
UserForm1 ), on écrit, en tête
de module et après les éventuelles lignes
Option ...
Public MaVariablePublique as Range ( pour
reprendre l'exemple de
l'initiateur de la ficelle )
Dans le code externe au userform, on pourra
utiliser cette variable via
UserForm1.MaVariablePublique = Cells
(Ligne,Colonne)
--
Cela convient-il?
----
Pierre Fauconnier
"C'est lorsqu'il y a un temps mort qu'il faut tuer
le temps..."
(remplacer NOSPAM par pfi pour me répondre. Merci)
---
Michel Gaboly wrote:
Bonsoir,
Il n'est pas possible de définir une variable
Public dans le code
associé à un UserForm.
Il faut donc que la définisses dans un module
standard :
Public NumLigne as Long
Dans le UserForm1, quand la recherche a abouti,
tu rajoutes
NumLigne = Ligne
Dans le UserForm2, tu fais appel à NumLigne.
Selon les circonstances, il peut y avoir +
simple : il n'est
peut-être pas néces- saire d'avoir 2 variables :
dans le UserForm1,
tu peux peut-être utiliser la variable Public
NumLigne directement,
et te passer de Ligne.
Bonjour,
Ta réponse me conforte dans ce que j'avais mis
initialement en pratique.
Mais rien n'y fait : je n'ai rien dans les autres
feuilles
de type Feuilnn.
Je tique sur ta première phrase : peut-être ne l'ai-je
pas
bien comprise.
Tu écris : >Au début d'un module standard :
Or, la structure du projet est la suivante :
- VBAProject(nom-projet)
- Microsoft Excel Objets
- Feuil1(nom_onglet1)
- Feuil2(nom_onglet2)
- .....
- Feuil9(nom_onglet9)
- ThisWorkbook
Quel que soit l'endroit où je mets Public var1 et quel
que
soit l'endroit unique où je définis son contenu (la
variable Me me permets de le vérifier à chaque étape, je
ne retrouve pas ces définitions, dans aucune Feuilnn ?
Mais encore merci pour ton intervention.
Daniel
-----Message d'origine-----
Bonjour,
Une variable fixe, c'est une constante ;-))
Malheureusement, un Array ne peut être défini comme
constante ;-((
Au début d'un module standard :
Public Liste
Dans le Workbook_Open (module ThisWorkbook)
Private Sub Workbook_Open()
Liste = Array("Feuil1", "Feuil2")
' Tes autres instructions éventuelles
End Sub
Ailleurs, par exemple dans le module d'un UserForm
Private Sub UserForm_Click()
MsgBox Liste(0)
End Sub
Bonjour Pierre,
Et merci pour ta réponse.
Mais, j'ai bien mis en tête de module : Dim Public
wshit1.
Et si j'en vois bien une dans les Functions : vide
est
son
contenu !
==> Comment, et je me suis mal exprimé précedemment,
et
où
mettre une seule fois le contenu fixe de cette
variable
pour que celui-ci soit utilisé partout ?
Ex :
Dim Public wshit1
wshit1 = Array
("Nom_Ongle1","Nom_Ongle2","Nom_Ongle3","Nom_Ongle4")
En cas d'ajout d'un ou plusieurs onglets, je complète
wshit1 et relance le tout.
J'ai mis cette définition un peu partout : sans
résultat.
Merci pour ta patience.
Daniel
-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il
faut
la déclarer PUBLIC
au début ( !! ) d'un module standard, c'est-à-dire
AVANT
la première
procédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de
feuille,
de classeur, de
boîte de dialogue ( d'une façon générale dans un
module
de classe) revient à
créer une propriété publique en lecture-écriture
pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les
gens
arrêtent de se battre
en mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre.
Merci)
---
xyzDaniel wrote:
Bonjour à tous,
Où placer les deux Array contenant du texte pour
qu'ils
soient utilisés dans toutes les feuilles d'un
VBAProject,
sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option
PUBLIC
sans
les voir des autres feuilles, y compris dans
Modules
de
Classe ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.
Merci beaucoup pour toutes les interventions.
Daniel
.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
-----Message d'origine-----
Bonjour,
Tu as bien fait de tiquer ;-))
Aucun de ces modules (module attaché à une feuille parti-
culière ou au classeur (ThisWorkbook) n'est un module
de standard. Il s'agit dans les 2 cas de variantes de
modules
de classe.
Utilise le menu "Insertion" pour ajouter 1 module ("tout
court", pas un module de classe) et, en haut de ce module,
définis ta variable publique :
Public Liste
Et tu verra, que tout d'un coup, cela fonctionnera ;-)))
pour + de précisions, voici une discussion d'octobre der-
nier sur ce forum (le premier message est de moi) :
Bonsoir,
Tu joues sur les mots ;-))
Si pour employer la variable, tu es obligé de la
qualifier avec le nom du
UserForm où elle a été définie, ce n'est pas
réellement une variable publique.
Pour ce faire, tu n'as d'ailleurs pas besoin de
variable : tu peux utiliser un
contrôle quelconque du UserForm avec la propriété
Visible ou Enabled à False.
D'autre part, cela ne marche pas :
1 - Crée un nouveau classeur
2 - Bascule dans l'environnement VBA
3 - Insère un module standard, avec ce code :
Option Explicit
Public VeritableVarPublique
Sub Test()
UserForm1.Show
MsgBox "Num : " & UserForm1.Num
MsgBox "VeritableVarPublique : " &
VeritableVarPublique
End Sub
4 - Insère un UserForm avec un CommandButton et ce
code :
Option Explicit
Public Num As Integer
Private Sub UserForm_Initialize()
Num = 1
End Sub
Private Sub CommandButton1_Click()
Num = 2
VeritableVarPublique = 2
Unload Me
End Sub
5 - Exécute ensuite la Sub "Test" du module. Le
UserForm est affiché,
puis 2 messages apparaissent successivement :
Num : 1
puis
VeritableVarPublique : 2
Alors qu'après le clic sur le CommandButton, ces 2
lignes ont été exécutées :
Num = 2
VeritableVarPublique = 2
Pourtant Num est égal à 1 et non à 2
En fait, la dernière valeur de Num (2) n'est plus
accessible après le
"Unload".
Pour afficher Num, la procédure recharge en mémoire
le UserForm
(méthode Load et Non Show). Le code associé à
l'événement Initialize est
exécuté, ce qui explique la valeur obtenue, 1.
Par contre, même après le Unload du UserForm,
VeritableVarPublique
est toujours égale à 2.
La définition d'une variable Public dans un module
standard fonctionne, ce
n'est pas le cas avec le module associé à un
UserForm : le mot-clef Public
est accepté, mais c'est un leurre ;-(((Bonjour
Il est tout à fait possible de déclarer une
variable publique dans un module
de classe, et donc de userform. Cette variable
devient alors une propriété
en lecture-écriture du le userform et on peut
l'appeler d'un code externe
via l'objet userform qui la contient. Cela évite
les variables public dans
un module standard
Dans le code du userform ( par exemple nommé
UserForm1 ), on écrit, en tête
de module et après les éventuelles lignes
Option ...
Public MaVariablePublique as Range ( pour
reprendre l'exemple de
l'initiateur de la ficelle )
Dans le code externe au userform, on pourra
utiliser cette variable via
UserForm1.MaVariablePublique = Cells
(Ligne,Colonne)
--
Cela convient-il?
----
Pierre Fauconnier
"C'est lorsqu'il y a un temps mort qu'il faut tuer
le temps..."
(remplacer NOSPAM par pfi pour me répondre. Merci)
---
Michel Gaboly wrote:Bonsoir,
Il n'est pas possible de définir une variable
Public dans le code
associé à un UserForm.
Il faut donc que la définisses dans un module
standard :
Public NumLigne as Long
Dans le UserForm1, quand la recherche a abouti,
tu rajoutes
NumLigne = Ligne
Dans le UserForm2, tu fais appel à NumLigne.
Selon les circonstances, il peut y avoir +
simple : il n'est
peut-être pas néces- saire d'avoir 2 variables :
dans le UserForm1,
tu peux peut-être utiliser la variable Public
NumLigne directement,
et te passer de Ligne.Bonjour,
Ta réponse me conforte dans ce que j'avais mis
initialement en pratique.
Mais rien n'y fait : je n'ai rien dans les autres
feuilles
de type Feuilnn.
Je tique sur ta première phrase : peut-être ne l'ai-je
pas
bien comprise.
Tu écris : >Au début d'un module standard :
Or, la structure du projet est la suivante :
- VBAProject(nom-projet)
- Microsoft Excel Objets
- Feuil1(nom_onglet1)
- Feuil2(nom_onglet2)
- .....
- Feuil9(nom_onglet9)
- ThisWorkbook
Quel que soit l'endroit où je mets Public var1 et quel
que
soit l'endroit unique où je définis son contenu (la
variable Me me permets de le vérifier à chaque étape, je
ne retrouve pas ces définitions, dans aucune Feuilnn ?
Mais encore merci pour ton intervention.
Daniel-----Message d'origine-----
Bonjour,
Une variable fixe, c'est une constante ;-))
Malheureusement, un Array ne peut être défini comme
constante ;-((
Au début d'un module standard :
Public Liste
Dans le Workbook_Open (module ThisWorkbook)
Private Sub Workbook_Open()
Liste = Array("Feuil1", "Feuil2")
' Tes autres instructions éventuelles
End Sub
Ailleurs, par exemple dans le module d'un UserForm
Private Sub UserForm_Click()
MsgBox Liste(0)
End SubBonjour Pierre,
Et merci pour ta réponse.
Mais, j'ai bien mis en tête de module : Dim Public
wshit1.Et si j'en vois bien une dans les Functions : vide
est
soncontenu !
==> Comment, et je me suis mal exprimé précedemment,
et
oùmettre une seule fois le contenu fixe de cette
variable
pour que celui-ci soit utilisé partout ?
Ex :
Dim Public wshit1
wshit1 = Array
("Nom_Ongle1","Nom_Ongle2","Nom_Ongle3","Nom_Ongle4")
En cas d'ajout d'un ou plusieurs onglets, je complète
wshit1 et relance le tout.
J'ai mis cette définition un peu partout : sans
résultat.Merci pour ta patience.
Daniel-----Message d'origine-----
Bonsoir
Pour qu'une variable soit globale, ou publique, il
faut
la déclarer PUBLICau début ( !! ) d'un module standard, c'est-à-dire
AVANTla premièreprocédure ou fonction de ce module et après les
éventuelles lignes OPTION
Déclarer une variable PUBLIC dans un module de
feuille,
de classeur, deboîte de dialogue ( d'une façon générale dans un
module
de classe) revient àcréer une propriété publique en lecture-écriture
pour
cette classe...
--
Cela convient-il?
----
Pierre Fauconnier
"Si j'étais Dieu, je démissionnerais pour que les
gens
arrêtent de se battreen mon nom." (Le Chat...)
(remplacer NOSPAM par pfi.be pour me répondre.
Merci)
---
xyzDaniel wrote:Bonjour à tous,
Où placer les deux Array contenant du texte pour
qu'ilssoient utilisés dans toutes les feuilles d'un
VBAProject,sans être obligés de les redéfinir sans cesse ?
Je les ai placé un peu partout avec l'option
PUBLIC
sansles voir des autres feuilles, y compris dans
Modules
deClasse ou Modules.
Et je n'ai pas trouvé, rrr, de réponses sur le
Newsgroups.Merci beaucoup pour toutes les interventions.
Daniel
.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com