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

Passage d'une variable entre deux userform

12 réponses
Avatar
Ticker
Bonjour à tous, j'ai un problème simple (enfin, ça dépend pour qui, pour
moi,c'est une mission) mais que je traine depuis quelques jours. Alors
voilà:

J'ai deux userform

Avec la première j'effectue une recherche sur une feuille excel. Cette
recherche me donne une ligne ( Cells(Ligne,Colonne) )

Comment faire pour utiliser "Ligne" dans un autre userform ? J'ai chercher
avec les variables Public (et static) mais je dois mal mis prendre. Comment
faire ?

Merci d'avance pour votre aide précieuse.
Ticker

10 réponses

1 2
Avatar
isabelle
bonjour Ticker,

par quel commande cette ligne est elle récuperé ?

isabelle


Bonjour à tous, j'ai un problème simple (enfin, ça dépend pour qui, pour
moi,c'est une mission) mais que je traine depuis quelques jours. Alors
voilà:

J'ai deux userform

Avec la première j'effectue une recherche sur une feuille excel. Cette
recherche me donne une ligne ( Cells(Ligne,Colonne) )

Comment faire pour utiliser "Ligne" dans un autre userform ? J'ai chercher
avec les variables Public (et static) mais je dois mal mis prendre. Comment
faire ?

Merci d'avance pour votre aide précieuse.
Ticker


Avatar
Michel Gaboly
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 à tous, j'ai un problème simple (enfin, ça dépend pour qui, pour
moi,c'est une mission) mais que je traine depuis quelques jours. Alors
voilà:

J'ai deux userform

Avec la première j'effectue une recherche sur une feuille excel. Cette
recherche me donne une ligne ( Cells(Ligne,Colonne) )

Comment faire pour utiliser "Ligne" dans un autre userform ? J'ai chercher
avec les variables Public (et static) mais je dois mal mis prendre. Comment
faire ?

Merci d'avance pour votre aide précieuse.
Ticker


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
padbra
Yep,
Mon niveau VBA est assez limité et je n'utilise pas les userForm, mais ne
serait-il pas possible d'utiliser une cellule de feuille de calcul pour
stocker/modifier/recupérer cette variable entre plusieurs userForm ?????

--
--
padbra
--
"Ticker" a écrit dans le message news:
#
Bonjour à tous, j'ai un problème simple (enfin, ça dépend pour qui, pour
moi,c'est une mission) mais que je traine depuis quelques jours. Alors
voilà:

J'ai deux userform

Avec la première j'effectue une recherche sur une feuille excel. Cette
recherche me donne une ligne ( Cells(Ligne,Colonne) )

Comment faire pour utiliser "Ligne" dans un autre userform ? J'ai chercher
avec les variables Public (et static) mais je dois mal mis prendre.
Comment

faire ?

Merci d'avance pour votre aide précieuse.
Ticker




Avatar
Ticker
Si,c'est tout à fait possible de le faire, mais je pense que ce n'est pas
une methode très "propre", et puis surtout, j'aimerai par la suite passer
mon programme en VB donc, j'évite au maximum ce genre de chose.

Merci pour vos réponses


"padbra" a écrit dans le message de news:

Yep,
Mon niveau VBA est assez limité et je n'utilise pas les userForm, mais ne
serait-il pas possible d'utiliser une cellule de feuille de calcul pour
stocker/modifier/recupérer cette variable entre plusieurs userForm ?????

--
--
padbra
--
"Ticker" a écrit dans le message news:
#
Bonjour à tous, j'ai un problème simple (enfin, ça dépend pour qui, pour
moi,c'est une mission) mais que je traine depuis quelques jours. Alors
voilà:

J'ai deux userform

Avec la première j'effectue une recherche sur une feuille excel. Cette
recherche me donne une ligne ( Cells(Ligne,Colonne) )

Comment faire pour utiliser "Ligne" dans un autre userform ? J'ai
chercher


avec les variables Public (et static) mais je dois mal mis prendre.
Comment

faire ?

Merci d'avance pour votre aide précieuse.
Ticker








Avatar
Pierre CFI
bonjour
tu déclares ta variable Public dans un module a part

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Ticker" a écrit dans le message de news: #
Si,c'est tout à fait possible de le faire, mais je pense que ce n'est pas
une methode très "propre", et puis surtout, j'aimerai par la suite passer
mon programme en VB donc, j'évite au maximum ce genre de chose.

Merci pour vos réponses


"padbra" a écrit dans le message de news:

Yep,
Mon niveau VBA est assez limité et je n'utilise pas les userForm, mais ne
serait-il pas possible d'utiliser une cellule de feuille de calcul pour
stocker/modifier/recupérer cette variable entre plusieurs userForm ?????

--
--
padbra
--
"Ticker" a écrit dans le message news:
#
Bonjour à tous, j'ai un problème simple (enfin, ça dépend pour qui, pour
moi,c'est une mission) mais que je traine depuis quelques jours. Alors
voilà:

J'ai deux userform

Avec la première j'effectue une recherche sur une feuille excel. Cette
recherche me donne une ligne ( Cells(Ligne,Colonne) )

Comment faire pour utiliser "Ligne" dans un autre userform ? J'ai
chercher


avec les variables Public (et static) mais je dois mal mis prendre.
Comment

faire ?

Merci d'avance pour votre aide précieuse.
Ticker












Avatar
Pierre Fauconnier
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 à tous, j'ai un problème simple (enfin, ça dépend pour qui,
pour moi,c'est une mission) mais que je traine depuis quelques
jours. Alors voilà:

J'ai deux userform

Avec la première j'effectue une recherche sur une feuille excel.
Cette recherche me donne une ligne ( Cells(Ligne,Colonne) )

Comment faire pour utiliser "Ligne" dans un autre userform ? J'ai
chercher avec les variables Public (et static) mais je dois mal mis
prendre. Comment faire ?

Merci d'avance pour votre aide précieuse.
Ticker




Avatar
Pierre Fauconnier
Petite correction

Dans le code externe, on aura

SET UserForm1.MaVariablePublique = Cells(Ligne, Colonne)

puisque MaVariablePublique est typée As Range

Mille excuses

Pierre


Pierre Fauconnier wrote:
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)



---
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 à tous, j'ai un problème simple (enfin, ça dépend pour qui,
pour moi,c'est une mission) mais que je traine depuis quelques
jours. Alors voilà:

J'ai deux userform

Avec la première j'effectue une recherche sur une feuille excel.
Cette recherche me donne une ligne ( Cells(Ligne,Colonne) )

Comment faire pour utiliser "Ligne" dans un autre userform ? J'ai
chercher avec les variables Public (et static) mais je dois mal mis
prendre. Comment faire ?

Merci d'avance pour votre aide précieuse.
Ticker






Avatar
Pierre CFI
../..
oui, oui, mais, bon, je préfére regrouper mes variables dans un module nommé MesVar, comme çà je les ai à l'oeil :o))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Pierre Fauconnier" a écrit dans le message de news: #6#
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 à tous, j'ai un problème simple (enfin, ça dépend pour qui,
pour moi,c'est une mission) mais que je traine depuis quelques
jours. Alors voilà:

J'ai deux userform

Avec la première j'effectue une recherche sur une feuille excel.
Cette recherche me donne une ligne ( Cells(Ligne,Colonne) )

Comment faire pour utiliser "Ligne" dans un autre userform ? J'ai
chercher avec les variables Public (et static) mais je dois mal mis
prendre. Comment faire ?

Merci d'avance pour votre aide précieuse.
Ticker








Avatar
Michel Gaboly
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 à tous, j'ai un problème simple (enfin, ça dépend pour qui,
pour moi,c'est une mission) mais que je traine depuis quelques
jours. Alors voilà:

J'ai deux userform

Avec la première j'effectue une recherche sur une feuille excel.
Cette recherche me donne une ligne ( Cells(Ligne,Colonne) )

Comment faire pour utiliser "Ligne" dans un autre userform ? J'ai
chercher avec les variables Public (et static) mais je dois mal mis
prendre. Comment faire ?

Merci d'avance pour votre aide précieuse.
Ticker




--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
Pierre Fauconnier
Bonsoir Michel

Tu joues sur les mots ;-))


En effet ... ;-)

J'aurais dû écrire : "Il est possible de passer une variable à un
userform..."
Personnellement, je préfère ma méthode... ;-), car elle permet de rendre un
userform autonome par rapport à un module standard, et donc d'être recopiée
dans un nouveau projet vba sans devoir tenir compte d'un module standard qui
lui permet de fonctionner...

Ce n'était évidemment pas une agression... ;-)

Bonne soirée

Pierre

Michel Gaboly wrote:
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 à tous, j'ai un problème simple (enfin, ça dépend pour qui,
pour moi,c'est une mission) mais que je traine depuis quelques
jours. Alors voilà:

J'ai deux userform

Avec la première j'effectue une recherche sur une feuille excel.
Cette recherche me donne une ligne ( Cells(Ligne,Colonne) )

Comment faire pour utiliser "Ligne" dans un autre userform ? J'ai
chercher avec les variables Public (et static) mais je dois mal mis
prendre. Comment faire ?

Merci d'avance pour votre aide précieuse.
Ticker








1 2