OVH Cloud OVH Cloud

Ne pas réinitialiser un USF

18 réponses
Avatar
François
Bonjour à tous,

Je reviens vers vous avec un pb que je n'ai finalement par réussi à
contourner.
Pascal Engelmajer a tenté de m'aider , mais je n'étais sans doute pas assez
clair.
Exemple simplifié :

J'ai une feuille de calcul avec : un champ nommé Zn1 (B6:B11) avec valeurs
A,B,C,D,E
- un bouton sur cette feuille créé avec barre d'outils formulaires qui
appelle un Userform

Ce Userform contient une ListBox reliée à mon Champ nommé Zn1
et un bouton OK .

Le pb est que si je clique sur le bouton de ma feuille de calcul, cela
actionne automatiquement
le Private Sub UserForm_Initialize() alors que le code est "show" et non
"Load"
et moi je voudrais retrouver à l'affichage de mon UserForm la valeur
précédemment
choisie et non la valeur d'initialisation.
XL97 - SR2

Ci-dessous le code du module standard de mon bouton et le code du module USF
--- Module1 ----
Sub ouvrirUSF()
UserForm1.Show
End Sub

--- UserForm1 ---
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
UserForm1.Hide
End Sub

Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub
-----------------
Voilà, au besoin mon fichier pèse 20Ko
Je suis très embêté ;-(

Merci par avance et très bonne journée.
François

10 réponses

1 2
Avatar
michdenis
Bonjour François,

Habituellement, on utilise la commande "Load" (au moment de l'ouverture d'un classeur) pour charger un formulaire en mémoire
(sans l'afficher à l'écran) afin de donner à l'usager "l'impression" de la rapidité du programme au moment opportun. Les
commandes "Show" et "Hide" sont utilisés pour rendre visible ou invisible le formulaire (sans que ce dernier soit déchargé de
la mémoire vive. Cependant, si le formulaire n'est pas en mémoire vive au moment de l'appel de la méthode "Show", il va de
soi que le formulaire devra se charger en mémoire("Load") avant de s'afficher à l'écran. C'est seulement au moment où le
formulaire se charge en mémoire vive que l'événement
Private Sub UserForm_Initialize() est exécuté.

Si tu désires que ton listbox affiche une valeur différente selon le moment de l'appel,

A ) définit dans un module standard, une variable "Public" comme ceci :
Public ValeurListBox as String 'adapte le type de variable selon ce qu'elle doit contenir

B ) Tu tiens à jour le contenu de cette variable ...

C )
Private Sub UserForm_Initialize()
ListBox1.Value = ValeurListBox
End Sub


Salutations!



"François" a écrit dans le message de news:
Bonjour à tous,

Je reviens vers vous avec un pb que je n'ai finalement par réussi à
contourner.
Pascal Engelmajer a tenté de m'aider , mais je n'étais sans doute pas assez
clair.
Exemple simplifié :

J'ai une feuille de calcul avec : un champ nommé Zn1 (B6:B11) avec valeurs
A,B,C,D,E
- un bouton sur cette feuille créé avec barre d'outils formulaires qui
appelle un Userform

Ce Userform contient une ListBox reliée à mon Champ nommé Zn1
et un bouton OK .

Le pb est que si je clique sur le bouton de ma feuille de calcul, cela
actionne automatiquement
le Private Sub UserForm_Initialize() alors que le code est "show" et non
"Load"
et moi je voudrais retrouver à l'affichage de mon UserForm la valeur
précédemment
choisie et non la valeur d'initialisation.
XL97 - SR2

Ci-dessous le code du module standard de mon bouton et le code du module USF
--- Module1 ----
Sub ouvrirUSF()
UserForm1.Show
End Sub

--- UserForm1 ---
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
UserForm1.Hide
End Sub

Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub
-----------------
Voilà, au besoin mon fichier pèse 20Ko
Je suis très embêté ;-(

Merci par avance et très bonne journée.
François
Avatar
François
Bonjour michdenis,

Je te remercie de ton aide.
J'ai essayé .. j'ai échoué

Je te copie ci-dessous:
Le code du Workbook open = qui présélectionne ma listbox à "A"
Le code du module USF
Le code du module standard
Il me semble que le fait de rappeler l'USF à partir d'un module standard
provoque un déchargement de la mémoire et ma variable Public n'a pas
la porté suffisante pour être conservée à l'affichage du USF..

Private Sub Workbook_Open()
ouvrirUSF
End Sub
------------
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
VLB = ListBox1.Value
UserForm1.Hide
End Sub
Private Sub UserForm_Initialize()
ListBox1.Value = VLB
End Sub
-------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub

Sub AfficherUSF() ' attaché à mon bouton de feuille
UserForm1.Show
End Sub

Merci encore de ton aide,
François
--------------------------------------

"michdenis" a écrit dans le message news:
#
Bonjour François,

Habituellement, on utilise la commande "Load" (au moment de l'ouverture
d'un classeur) pour charger un formulaire en mémoire

(sans l'afficher à l'écran) afin de donner à l'usager "l'impression" de la
rapidité du programme au moment opportun. Les

commandes "Show" et "Hide" sont utilisés pour rendre visible ou invisible
le formulaire (sans que ce dernier soit déchargé de

la mémoire vive. Cependant, si le formulaire n'est pas en mémoire vive au
moment de l'appel de la méthode "Show", il va de

soi que le formulaire devra se charger en mémoire("Load") avant de
s'afficher à l'écran. C'est seulement au moment où le

formulaire se charge en mémoire vive que l'événement
Private Sub UserForm_Initialize() est exécuté.

Si tu désires que ton listbox affiche une valeur différente selon le
moment de l'appel,


A ) définit dans un module standard, une variable "Public" comme ceci :
Public ValeurListBox as String 'adapte le type de variable selon
ce qu'elle doit contenir


B ) Tu tiens à jour le contenu de cette variable ...

C )
Private Sub UserForm_Initialize()
ListBox1.Value = ValeurListBox
End Sub


Salutations!



"François" a écrit dans le message de
news:

Bonjour à tous,

Je reviens vers vous avec un pb que je n'ai finalement par réussi à
contourner.
Pascal Engelmajer a tenté de m'aider , mais je n'étais sans doute pas
assez

clair.
Exemple simplifié :

J'ai une feuille de calcul avec : un champ nommé Zn1 (B6:B11) avec valeurs
A,B,C,D,E
- un bouton sur cette feuille créé avec barre d'outils formulaires qui
appelle un Userform

Ce Userform contient une ListBox reliée à mon Champ nommé Zn1
et un bouton OK .

Le pb est que si je clique sur le bouton de ma feuille de calcul, cela
actionne automatiquement
le Private Sub UserForm_Initialize() alors que le code est "show" et non
"Load"
et moi je voudrais retrouver à l'affichage de mon UserForm la valeur
précédemment
choisie et non la valeur d'initialisation.
XL97 - SR2

Ci-dessous le code du module standard de mon bouton et le code du module
USF

--- Module1 ----
Sub ouvrirUSF()
UserForm1.Show
End Sub

--- UserForm1 ---
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
UserForm1.Hide
End Sub

Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub
-----------------
Voilà, au besoin mon fichier pèse 20Ko
Je suis très embêté ;-(

Merci par avance et très bonne journée.
François





Avatar
michdenis
Bonjour François,

Je t'invite à relire ma première réponse ....


Pourquoi utiliser la méthode "Load" suivi de la méthode "Show"
Dans ce cas précis, la méthode Show peut faire le travail
Il me semble t'avoir donné une explication à ma réponse précédente

Comme cette procédure à l'ouverture du classeur, si tu ne désires pas l'afficher immédiatement à l'écran, enlève la ligne de
code :
UserForm1.Show . Cette commande se retrouve dans la macro de ton bouton sur la feuille.

'--------------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub
'--------------------


"ma variable Public n'a pas la porté suffisante pour être conservée à l'affichage du USF.."

Une variable public peut être appelé à partir de n'importe quel module de ton classeur et elle va conserver sa valeur aussi
longtemps que le classeur sera ouvert. Pour ce faire, il faut la déclarer dans un MODULE STANDARD.



Salutations!










"François" a écrit dans le message de news:
Bonjour michdenis,

Je te remercie de ton aide.
J'ai essayé .. j'ai échoué

Je te copie ci-dessous:
Le code du Workbook open = qui présélectionne ma listbox à "A"
Le code du module USF
Le code du module standard
Il me semble que le fait de rappeler l'USF à partir d'un module standard
provoque un déchargement de la mémoire et ma variable Public n'a pas
la porté suffisante pour être conservée à l'affichage du USF..

Private Sub Workbook_Open()
ouvrirUSF
End Sub
------------
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
VLB = ListBox1.Value
UserForm1.Hide
End Sub
Private Sub UserForm_Initialize()
ListBox1.Value = VLB
End Sub
-------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub

Sub AfficherUSF() ' attaché à mon bouton de feuille
UserForm1.Show
End Sub

Merci encore de ton aide,
François
--------------------------------------

"michdenis" a écrit dans le message news:
#
Bonjour François,

Habituellement, on utilise la commande "Load" (au moment de l'ouverture
d'un classeur) pour charger un formulaire en mémoire

(sans l'afficher à l'écran) afin de donner à l'usager "l'impression" de la
rapidité du programme au moment opportun. Les

commandes "Show" et "Hide" sont utilisés pour rendre visible ou invisible
le formulaire (sans que ce dernier soit déchargé de

la mémoire vive. Cependant, si le formulaire n'est pas en mémoire vive au
moment de l'appel de la méthode "Show", il va de

soi que le formulaire devra se charger en mémoire("Load") avant de
s'afficher à l'écran. C'est seulement au moment où le

formulaire se charge en mémoire vive que l'événement
Private Sub UserForm_Initialize() est exécuté.

Si tu désires que ton listbox affiche une valeur différente selon le
moment de l'appel,


A ) définit dans un module standard, une variable "Public" comme ceci :
Public ValeurListBox as String 'adapte le type de variable selon
ce qu'elle doit contenir


B ) Tu tiens à jour le contenu de cette variable ...

C )
Private Sub UserForm_Initialize()
ListBox1.Value = ValeurListBox
End Sub


Salutations!



"François" a écrit dans le message de
news:

Bonjour à tous,

Je reviens vers vous avec un pb que je n'ai finalement par réussi à
contourner.
Pascal Engelmajer a tenté de m'aider , mais je n'étais sans doute pas
assez

clair.
Exemple simplifié :

J'ai une feuille de calcul avec : un champ nommé Zn1 (B6:B11) avec valeurs
A,B,C,D,E
- un bouton sur cette feuille créé avec barre d'outils formulaires qui
appelle un Userform

Ce Userform contient une ListBox reliée à mon Champ nommé Zn1
et un bouton OK .

Le pb est que si je clique sur le bouton de ma feuille de calcul, cela
actionne automatiquement
le Private Sub UserForm_Initialize() alors que le code est "show" et non
"Load"
et moi je voudrais retrouver à l'affichage de mon UserForm la valeur
précédemment
choisie et non la valeur d'initialisation.
XL97 - SR2

Ci-dessous le code du module standard de mon bouton et le code du module
USF

--- Module1 ----
Sub ouvrirUSF()
UserForm1.Show
End Sub

--- UserForm1 ---
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
UserForm1.Hide
End Sub

Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub
-----------------
Voilà, au besoin mon fichier pèse 20Ko
Je suis très embêté ;-(

Merci par avance et très bonne journée.
François





Avatar
François
Je suis désolé de t'importuner par ma maladresse.
J'ai bien lu ta première réponse.
(J'avais remis le load à tout hasard car je n'arrivais pas à mes fins..)
Par contre j'ai bien déclaré ma variable dans un module standard
c'est celui qui contient la macro de mon bouton de feuille.
et quand je trace par F8, que je rappelle mon USF avec mon bouton
de feuille, ma variable est vide quand j'arrive dans
Private Sub UserForm_Initialize
Pourrais-je t'envoyer mon classeur (20k) ?

bien à toi,
François
---------------------

"michdenis" a écrit dans le message news:

Bonjour François,

Je t'invite à relire ma première réponse ....


Pourquoi utiliser la méthode "Load" suivi de la méthode "Show"
Dans ce cas précis, la méthode Show peut faire le travail
Il me semble t'avoir donné une explication à ma réponse précédente

Comme cette procédure à l'ouverture du classeur, si tu ne désires pas
l'afficher immédiatement à l'écran, enlève la ligne de

code :
UserForm1.Show . Cette commande se retrouve dans la macro de ton bouton
sur la feuille.


'--------------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub
'--------------------


"ma variable Public n'a pas la porté suffisante pour être conservée à
l'affichage du USF.."


Une variable public peut être appelé à partir de n'importe quel module de
ton classeur et elle va conserver sa valeur aussi

longtemps que le classeur sera ouvert. Pour ce faire, il faut la déclarer
dans un MODULE STANDARD.




Salutations!










"François" a écrit dans le message de
news:

Bonjour michdenis,

Je te remercie de ton aide.
J'ai essayé .. j'ai échoué

Je te copie ci-dessous:
Le code du Workbook open = qui présélectionne ma listbox à "A"
Le code du module USF
Le code du module standard
Il me semble que le fait de rappeler l'USF à partir d'un module standard
provoque un déchargement de la mémoire et ma variable Public n'a pas
la porté suffisante pour être conservée à l'affichage du USF..

Private Sub Workbook_Open()
ouvrirUSF
End Sub
------------
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
VLB = ListBox1.Value
UserForm1.Hide
End Sub
Private Sub UserForm_Initialize()
ListBox1.Value = VLB
End Sub
-------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub

Sub AfficherUSF() ' attaché à mon bouton de feuille
UserForm1.Show
End Sub

Merci encore de ton aide,
François
--------------------------------------

"michdenis" a écrit dans le message news:
#
Bonjour François,

Habituellement, on utilise la commande "Load" (au moment de l'ouverture
d'un classeur) pour charger un formulaire en mémoire

(sans l'afficher à l'écran) afin de donner à l'usager "l'impression" de
la


rapidité du programme au moment opportun. Les
commandes "Show" et "Hide" sont utilisés pour rendre visible ou
invisible


le formulaire (sans que ce dernier soit déchargé de
la mémoire vive. Cependant, si le formulaire n'est pas en mémoire vive
au


moment de l'appel de la méthode "Show", il va de
soi que le formulaire devra se charger en mémoire("Load") avant de
s'afficher à l'écran. C'est seulement au moment où le

formulaire se charge en mémoire vive que l'événement
Private Sub UserForm_Initialize() est exécuté.

Si tu désires que ton listbox affiche une valeur différente selon le
moment de l'appel,


A ) définit dans un module standard, une variable "Public" comme ceci :
Public ValeurListBox as String 'adapte le type de variable selon
ce qu'elle doit contenir


B ) Tu tiens à jour le contenu de cette variable ...

C )
Private Sub UserForm_Initialize()
ListBox1.Value = ValeurListBox
End Sub


Salutations!



"François" a écrit dans le message de
news:

Bonjour à tous,

Je reviens vers vous avec un pb que je n'ai finalement par réussi à
contourner.
Pascal Engelmajer a tenté de m'aider , mais je n'étais sans doute pas
assez

clair.
Exemple simplifié :

J'ai une feuille de calcul avec : un champ nommé Zn1 (B6:B11) avec
valeurs


A,B,C,D,E
- un bouton sur cette feuille créé avec barre d'outils formulaires qui
appelle un Userform

Ce Userform contient une ListBox reliée à mon Champ nommé Zn1
et un bouton OK .

Le pb est que si je clique sur le bouton de ma feuille de calcul, cela
actionne automatiquement
le Private Sub UserForm_Initialize() alors que le code est "show" et non
"Load"
et moi je voudrais retrouver à l'affichage de mon UserForm la valeur
précédemment
choisie et non la valeur d'initialisation.
XL97 - SR2

Ci-dessous le code du module standard de mon bouton et le code du module
USF

--- Module1 ----
Sub ouvrirUSF()
UserForm1.Show
End Sub

--- UserForm1 ---
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
UserForm1.Hide
End Sub

Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub
-----------------
Voilà, au besoin mon fichier pèse 20Ko
Je suis très embêté ;-(

Merci par avance et très bonne journée.
François










Avatar
Pascal Engelmajer
Salut François,
je veux bien regarder ton classeur...
car je ne comprends pas ce qui ne marche pas...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"François" a écrit dans le message de news:
OZt4#
Je suis désolé de t'importuner par ma maladresse.
J'ai bien lu ta première réponse.
(J'avais remis le load à tout hasard car je n'arrivais pas à mes fins..)
Par contre j'ai bien déclaré ma variable dans un module standard
c'est celui qui contient la macro de mon bouton de feuille.
et quand je trace par F8, que je rappelle mon USF avec mon bouton
de feuille, ma variable est vide quand j'arrive dans
Private Sub UserForm_Initialize
Pourrais-je t'envoyer mon classeur (20k) ?

bien à toi,
François
---------------------

"michdenis" a écrit dans le message news:

Bonjour François,

Je t'invite à relire ma première réponse ....


Pourquoi utiliser la méthode "Load" suivi de la méthode "Show"
Dans ce cas précis, la méthode Show peut faire le travail
Il me semble t'avoir donné une explication à ma réponse précédente

Comme cette procédure à l'ouverture du classeur, si tu ne désires pas
l'afficher immédiatement à l'écran, enlève la ligne de

code :
UserForm1.Show . Cette commande se retrouve dans la macro de ton bouton
sur la feuille.


'--------------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub
'--------------------


"ma variable Public n'a pas la porté suffisante pour être conservée à
l'affichage du USF.."


Une variable public peut être appelé à partir de n'importe quel module
de


ton classeur et elle va conserver sa valeur aussi
longtemps que le classeur sera ouvert. Pour ce faire, il faut la
déclarer


dans un MODULE STANDARD.



Salutations!










"François" a écrit dans le message de
news:

Bonjour michdenis,

Je te remercie de ton aide.
J'ai essayé .. j'ai échoué

Je te copie ci-dessous:
Le code du Workbook open = qui présélectionne ma listbox à "A"
Le code du module USF
Le code du module standard
Il me semble que le fait de rappeler l'USF à partir d'un module standard
provoque un déchargement de la mémoire et ma variable Public n'a pas
la porté suffisante pour être conservée à l'affichage du USF..

Private Sub Workbook_Open()
ouvrirUSF
End Sub
------------
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
VLB = ListBox1.Value
UserForm1.Hide
End Sub
Private Sub UserForm_Initialize()
ListBox1.Value = VLB
End Sub
-------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub

Sub AfficherUSF() ' attaché à mon bouton de feuille
UserForm1.Show
End Sub

Merci encore de ton aide,
François
--------------------------------------

"michdenis" a écrit dans le message news:
#
Bonjour François,

Habituellement, on utilise la commande "Load" (au moment de
l'ouverture



d'un classeur) pour charger un formulaire en mémoire
(sans l'afficher à l'écran) afin de donner à l'usager "l'impression"
de



la
rapidité du programme au moment opportun. Les
commandes "Show" et "Hide" sont utilisés pour rendre visible ou
invisible


le formulaire (sans que ce dernier soit déchargé de
la mémoire vive. Cependant, si le formulaire n'est pas en mémoire vive
au


moment de l'appel de la méthode "Show", il va de
soi que le formulaire devra se charger en mémoire("Load") avant de
s'afficher à l'écran. C'est seulement au moment où le

formulaire se charge en mémoire vive que l'événement
Private Sub UserForm_Initialize() est exécuté.

Si tu désires que ton listbox affiche une valeur différente selon le
moment de l'appel,


A ) définit dans un module standard, une variable "Public" comme ceci
:



Public ValeurListBox as String 'adapte le type de variable
selon



ce qu'elle doit contenir

B ) Tu tiens à jour le contenu de cette variable ...

C )
Private Sub UserForm_Initialize()
ListBox1.Value = ValeurListBox
End Sub


Salutations!



"François" a écrit dans le message de
news:

Bonjour à tous,

Je reviens vers vous avec un pb que je n'ai finalement par réussi à
contourner.
Pascal Engelmajer a tenté de m'aider , mais je n'étais sans doute pas
assez

clair.
Exemple simplifié :

J'ai une feuille de calcul avec : un champ nommé Zn1 (B6:B11) avec
valeurs


A,B,C,D,E
- un bouton sur cette feuille créé avec barre d'outils formulaires qui
appelle un Userform

Ce Userform contient une ListBox reliée à mon Champ nommé Zn1
et un bouton OK .

Le pb est que si je clique sur le bouton de ma feuille de calcul, cela
actionne automatiquement
le Private Sub UserForm_Initialize() alors que le code est "show" et
non



"Load"
et moi je voudrais retrouver à l'affichage de mon UserForm la valeur
précédemment
choisie et non la valeur d'initialisation.
XL97 - SR2

Ci-dessous le code du module standard de mon bouton et le code du
module



USF
--- Module1 ----
Sub ouvrirUSF()
UserForm1.Show
End Sub

--- UserForm1 ---
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
UserForm1.Hide
End Sub

Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub
-----------------
Voilà, au besoin mon fichier pèse 20Ko
Je suis très embêté ;-(

Merci par avance et très bonne journée.
François














Avatar
François
Bonjour Pascal,

C'est très sympa!
Bien à toi,
François
------------------------
"Pascal Engelmajer" a écrit dans le
message news:
Salut François,
je veux bien regarder ton classeur...
car je ne comprends pas ce qui ne marche pas...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"François" a écrit dans le message de news:
OZt4#
Je suis désolé de t'importuner par ma maladresse.
J'ai bien lu ta première réponse.
(J'avais remis le load à tout hasard car je n'arrivais pas à mes fins..)
Par contre j'ai bien déclaré ma variable dans un module standard
c'est celui qui contient la macro de mon bouton de feuille.
et quand je trace par F8, que je rappelle mon USF avec mon bouton
de feuille, ma variable est vide quand j'arrive dans
Private Sub UserForm_Initialize
Pourrais-je t'envoyer mon classeur (20k) ?

bien à toi,
François
---------------------

"michdenis" a écrit dans le message news:

Bonjour François,

Je t'invite à relire ma première réponse ....


Pourquoi utiliser la méthode "Load" suivi de la méthode "Show"
Dans ce cas précis, la méthode Show peut faire le travail
Il me semble t'avoir donné une explication à ma réponse précédente

Comme cette procédure à l'ouverture du classeur, si tu ne désires pas
l'afficher immédiatement à l'écran, enlève la ligne de

code :
UserForm1.Show . Cette commande se retrouve dans la macro de ton
bouton



sur la feuille.

'--------------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub
'--------------------


"ma variable Public n'a pas la porté suffisante pour être conservée à
l'affichage du USF.."


Une variable public peut être appelé à partir de n'importe quel module
de


ton classeur et elle va conserver sa valeur aussi
longtemps que le classeur sera ouvert. Pour ce faire, il faut la
déclarer


dans un MODULE STANDARD.



Salutations!










"François" a écrit dans le message de
news:

Bonjour michdenis,

Je te remercie de ton aide.
J'ai essayé .. j'ai échoué

Je te copie ci-dessous:
Le code du Workbook open = qui présélectionne ma listbox à "A"
Le code du module USF
Le code du module standard
Il me semble que le fait de rappeler l'USF à partir d'un module
standard



provoque un déchargement de la mémoire et ma variable Public n'a pas
la porté suffisante pour être conservée à l'affichage du USF..

Private Sub Workbook_Open()
ouvrirUSF
End Sub
------------
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
VLB = ListBox1.Value
UserForm1.Hide
End Sub
Private Sub UserForm_Initialize()
ListBox1.Value = VLB
End Sub
-------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub

Sub AfficherUSF() ' attaché à mon bouton de feuille
UserForm1.Show
End Sub

Merci encore de ton aide,
François
--------------------------------------

"michdenis" a écrit dans le message news:
#
Bonjour François,

Habituellement, on utilise la commande "Load" (au moment de
l'ouverture



d'un classeur) pour charger un formulaire en mémoire
(sans l'afficher à l'écran) afin de donner à l'usager "l'impression"
de



la
rapidité du programme au moment opportun. Les
commandes "Show" et "Hide" sont utilisés pour rendre visible ou
invisible


le formulaire (sans que ce dernier soit déchargé de
la mémoire vive. Cependant, si le formulaire n'est pas en mémoire
vive




au
moment de l'appel de la méthode "Show", il va de
soi que le formulaire devra se charger en mémoire("Load") avant de
s'afficher à l'écran. C'est seulement au moment où le

formulaire se charge en mémoire vive que l'événement
Private Sub UserForm_Initialize() est exécuté.

Si tu désires que ton listbox affiche une valeur différente selon le
moment de l'appel,


A ) définit dans un module standard, une variable "Public" comme
ceci




:
Public ValeurListBox as String 'adapte le type de variable
selon



ce qu'elle doit contenir

B ) Tu tiens à jour le contenu de cette variable ...

C )
Private Sub UserForm_Initialize()
ListBox1.Value = ValeurListBox
End Sub


Salutations!



"François" a écrit dans le message de
news:

Bonjour à tous,

Je reviens vers vous avec un pb que je n'ai finalement par réussi à
contourner.
Pascal Engelmajer a tenté de m'aider , mais je n'étais sans doute
pas




assez
clair.
Exemple simplifié :

J'ai une feuille de calcul avec : un champ nommé Zn1 (B6:B11) avec
valeurs


A,B,C,D,E
- un bouton sur cette feuille créé avec barre d'outils formulaires
qui




appelle un Userform

Ce Userform contient une ListBox reliée à mon Champ nommé Zn1
et un bouton OK .

Le pb est que si je clique sur le bouton de ma feuille de calcul,
cela




actionne automatiquement
le Private Sub UserForm_Initialize() alors que le code est "show" et
non



"Load"
et moi je voudrais retrouver à l'affichage de mon UserForm la valeur
précédemment
choisie et non la valeur d'initialisation.
XL97 - SR2

Ci-dessous le code du module standard de mon bouton et le code du
module



USF
--- Module1 ----
Sub ouvrirUSF()
UserForm1.Show
End Sub

--- UserForm1 ---
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
UserForm1.Hide
End Sub

Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub
-----------------
Voilà, au besoin mon fichier pèse 20Ko
Je suis très embêté ;-(

Merci par avance et très bonne journée.
François


















Avatar
Ellimac
Bonjour,

Dans ton Initialize il te suffit de récupérer la valeur de
C6.
Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub

Camille

-----Message d'origine-----
Je suis désolé de t'importuner par ma maladresse.
J'ai bien lu ta première réponse.
(J'avais remis le load à tout hasard car je n'arrivais
pas à mes fins..)

Par contre j'ai bien déclaré ma variable dans un module
standard

c'est celui qui contient la macro de mon bouton de
feuille.

et quand je trace par F8, que je rappelle mon USF avec
mon bouton

de feuille, ma variable est vide quand j'arrive dans
Private Sub UserForm_Initialize
Pourrais-je t'envoyer mon classeur (20k) ?

bien à toi,
François
---------------------

"michdenis" a écrit dans le
message news:


Bonjour François,

Je t'invite à relire ma première réponse ....


Pourquoi utiliser la méthode "Load" suivi de la
méthode "Show"


Dans ce cas précis, la méthode Show peut faire le
travail


Il me semble t'avoir donné une explication à ma réponse
précédente



Comme cette procédure à l'ouverture du classeur, si tu
ne désires pas


l'afficher immédiatement à l'écran, enlève la ligne de
code :
UserForm1.Show . Cette commande se retrouve dans la
macro de ton bouton


sur la feuille.

'--------------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub
'--------------------


"ma variable Public n'a pas la porté suffisante pour
être conservée à


l'affichage du USF.."

Une variable public peut être appelé à partir de
n'importe quel module de


ton classeur et elle va conserver sa valeur aussi
longtemps que le classeur sera ouvert. Pour ce faire,
il faut la déclarer


dans un MODULE STANDARD.



Salutations!










"François" a écrit dans le message de
news:

Bonjour michdenis,

Je te remercie de ton aide.
J'ai essayé .. j'ai échoué

Je te copie ci-dessous:
Le code du Workbook open = qui présélectionne ma
listbox à "A"


Le code du module USF
Le code du module standard
Il me semble que le fait de rappeler l'USF à partir
d'un module standard


provoque un déchargement de la mémoire et ma variable
Public n'a pas


la porté suffisante pour être conservée à l'affichage
du USF..



Private Sub Workbook_Open()
ouvrirUSF
End Sub
------------
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
VLB = ListBox1.Value
UserForm1.Hide
End Sub
Private Sub UserForm_Initialize()
ListBox1.Value = VLB
End Sub
-------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub

Sub AfficherUSF() ' attaché à mon bouton de feuille
UserForm1.Show
End Sub

Merci encore de ton aide,
François
--------------------------------------

"michdenis" a écrit dans le
message news:


#
Bonjour François,

Habituellement, on utilise la commande "Load" (au
moment de l'ouverture



d'un classeur) pour charger un formulaire en mémoire
(sans l'afficher à l'écran) afin de donner à
l'usager "l'impression" de



la
rapidité du programme au moment opportun. Les
commandes "Show" et "Hide" sont utilisés pour rendre
visible ou



invisible
le formulaire (sans que ce dernier soit déchargé de
la mémoire vive. Cependant, si le formulaire n'est
pas en mémoire vive



au
moment de l'appel de la méthode "Show", il va de
soi que le formulaire devra se charger en mémoire
("Load") avant de



s'afficher à l'écran. C'est seulement au moment où le
formulaire se charge en mémoire vive que l'événement
Private Sub UserForm_Initialize() est exécuté.

Si tu désires que ton listbox affiche une valeur
différente selon le



moment de l'appel,

A ) définit dans un module standard, une
variable "Public" comme ceci :



Public ValeurListBox as String 'adapte le
type de variable selon



ce qu'elle doit contenir

B ) Tu tiens à jour le contenu de cette variable ...

C )
Private Sub UserForm_Initialize()
ListBox1.Value = ValeurListBox
End Sub


Salutations!



"François" a écrit dans le message de
news:

Bonjour à tous,

Je reviens vers vous avec un pb que je n'ai
finalement par réussi à



contourner.
Pascal Engelmajer a tenté de m'aider , mais je
n'étais sans doute pas



assez
clair.
Exemple simplifié :

J'ai une feuille de calcul avec : un champ nommé Zn1
(B6:B11) avec



valeurs
A,B,C,D,E
- un bouton sur cette feuille créé avec barre
d'outils formulaires qui



appelle un Userform

Ce Userform contient une ListBox reliée à mon Champ
nommé Zn1



et un bouton OK .

Le pb est que si je clique sur le bouton de ma
feuille de calcul, cela



actionne automatiquement
le Private Sub UserForm_Initialize() alors que le
code est "show" et non



"Load"
et moi je voudrais retrouver à l'affichage de mon
UserForm la valeur



précédemment
choisie et non la valeur d'initialisation.
XL97 - SR2

Ci-dessous le code du module standard de mon bouton
et le code du module



USF
--- Module1 ----
Sub ouvrirUSF()
UserForm1.Show
End Sub

--- UserForm1 ---
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
UserForm1.Hide
End Sub

Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub
-----------------
Voilà, au besoin mon fichier pèse 20Ko
Je suis très embêté ;-(

Merci par avance et très bonne journée.
François










.





Avatar
François
Bonjour Camille,

Merci pour ta proposition.
Je souhaite initialiser à l'ouverture mais en cours d'utilisation mémoriser
la précédente sélection.
C'est vrai que je peux passer par une alimentation de cellules pour
conserver
l'état de mes variables, mais j'avoue ne pas comprendre pourquoi le hide et
show
provoque un déchargement-rechargement du UserForm en mémoire.
En outre je n'arrive pas à contourner le pb avec des variables "Public" qui
chez moi
ne se conservent pas!
J'ai peut être un pb avec mon Excel...
J'ai envoyé mon classeur à Pascal, je ferai un feedback
Merci encore
François
-------------

"Ellimac" a écrit dans le message
news: 830801c3e9a2$259dd3e0$
Bonjour,

Dans ton Initialize il te suffit de récupérer la valeur de
C6.
Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub

Camille

-----Message d'origine-----
Je suis désolé de t'importuner par ma maladresse.
J'ai bien lu ta première réponse.
(J'avais remis le load à tout hasard car je n'arrivais
pas à mes fins..)

Par contre j'ai bien déclaré ma variable dans un module
standard

c'est celui qui contient la macro de mon bouton de
feuille.

et quand je trace par F8, que je rappelle mon USF avec
mon bouton

de feuille, ma variable est vide quand j'arrive dans
Private Sub UserForm_Initialize
Pourrais-je t'envoyer mon classeur (20k) ?

bien à toi,
François
---------------------

"michdenis" a écrit dans le
message news:


Bonjour François,

Je t'invite à relire ma première réponse ....


Pourquoi utiliser la méthode "Load" suivi de la
méthode "Show"


Dans ce cas précis, la méthode Show peut faire le
travail


Il me semble t'avoir donné une explication à ma réponse
précédente



Comme cette procédure à l'ouverture du classeur, si tu
ne désires pas


l'afficher immédiatement à l'écran, enlève la ligne de
code :
UserForm1.Show . Cette commande se retrouve dans la
macro de ton bouton


sur la feuille.

'--------------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub
'--------------------


"ma variable Public n'a pas la porté suffisante pour
être conservée à


l'affichage du USF.."

Une variable public peut être appelé à partir de
n'importe quel module de


ton classeur et elle va conserver sa valeur aussi
longtemps que le classeur sera ouvert. Pour ce faire,
il faut la déclarer


dans un MODULE STANDARD.



Salutations!










"François" a écrit dans le message de
news:

Bonjour michdenis,

Je te remercie de ton aide.
J'ai essayé .. j'ai échoué

Je te copie ci-dessous:
Le code du Workbook open = qui présélectionne ma
listbox à "A"


Le code du module USF
Le code du module standard
Il me semble que le fait de rappeler l'USF à partir
d'un module standard


provoque un déchargement de la mémoire et ma variable
Public n'a pas


la porté suffisante pour être conservée à l'affichage
du USF..



Private Sub Workbook_Open()
ouvrirUSF
End Sub
------------
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
VLB = ListBox1.Value
UserForm1.Hide
End Sub
Private Sub UserForm_Initialize()
ListBox1.Value = VLB
End Sub
-------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub

Sub AfficherUSF() ' attaché à mon bouton de feuille
UserForm1.Show
End Sub

Merci encore de ton aide,
François
--------------------------------------

"michdenis" a écrit dans le
message news:


#
Bonjour François,

Habituellement, on utilise la commande "Load" (au
moment de l'ouverture



d'un classeur) pour charger un formulaire en mémoire
(sans l'afficher à l'écran) afin de donner à
l'usager "l'impression" de



la
rapidité du programme au moment opportun. Les
commandes "Show" et "Hide" sont utilisés pour rendre
visible ou



invisible
le formulaire (sans que ce dernier soit déchargé de
la mémoire vive. Cependant, si le formulaire n'est
pas en mémoire vive



au
moment de l'appel de la méthode "Show", il va de
soi que le formulaire devra se charger en mémoire
("Load") avant de



s'afficher à l'écran. C'est seulement au moment où le
formulaire se charge en mémoire vive que l'événement
Private Sub UserForm_Initialize() est exécuté.

Si tu désires que ton listbox affiche une valeur
différente selon le



moment de l'appel,

A ) définit dans un module standard, une
variable "Public" comme ceci :



Public ValeurListBox as String 'adapte le
type de variable selon



ce qu'elle doit contenir

B ) Tu tiens à jour le contenu de cette variable ...

C )
Private Sub UserForm_Initialize()
ListBox1.Value = ValeurListBox
End Sub


Salutations!



"François" a écrit dans le message de
news:

Bonjour à tous,

Je reviens vers vous avec un pb que je n'ai
finalement par réussi à



contourner.
Pascal Engelmajer a tenté de m'aider , mais je
n'étais sans doute pas



assez
clair.
Exemple simplifié :

J'ai une feuille de calcul avec : un champ nommé Zn1
(B6:B11) avec



valeurs
A,B,C,D,E
- un bouton sur cette feuille créé avec barre
d'outils formulaires qui



appelle un Userform

Ce Userform contient une ListBox reliée à mon Champ
nommé Zn1



et un bouton OK .

Le pb est que si je clique sur le bouton de ma
feuille de calcul, cela



actionne automatiquement
le Private Sub UserForm_Initialize() alors que le
code est "show" et non



"Load"
et moi je voudrais retrouver à l'affichage de mon
UserForm la valeur



précédemment
choisie et non la valeur d'initialisation.
XL97 - SR2

Ci-dessous le code du module standard de mon bouton
et le code du module



USF
--- Module1 ----
Sub ouvrirUSF()
UserForm1.Show
End Sub

--- UserForm1 ---
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
UserForm1.Hide
End Sub

Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub
-----------------
Voilà, au besoin mon fichier pèse 20Ko
Je suis très embêté ;-(

Merci par avance et très bonne journée.
François










.





Avatar
François
Bonjour Pascal,

as-tu reçu mon fichier ?

très cordialement,
François
------

"Pascal Engelmajer" a écrit dans le
message news:
Salut François,
je veux bien regarder ton classeur...
car je ne comprends pas ce qui ne marche pas...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"François" a écrit dans le message de news:
OZt4#
Je suis désolé de t'importuner par ma maladresse.
J'ai bien lu ta première réponse.
(J'avais remis le load à tout hasard car je n'arrivais pas à mes fins..)
Par contre j'ai bien déclaré ma variable dans un module standard
c'est celui qui contient la macro de mon bouton de feuille.
et quand je trace par F8, que je rappelle mon USF avec mon bouton
de feuille, ma variable est vide quand j'arrive dans
Private Sub UserForm_Initialize
Pourrais-je t'envoyer mon classeur (20k) ?

bien à toi,
François
---------------------

"michdenis" a écrit dans le message news:

Bonjour François,

Je t'invite à relire ma première réponse ....


Pourquoi utiliser la méthode "Load" suivi de la méthode "Show"
Dans ce cas précis, la méthode Show peut faire le travail
Il me semble t'avoir donné une explication à ma réponse précédente

Comme cette procédure à l'ouverture du classeur, si tu ne désires pas
l'afficher immédiatement à l'écran, enlève la ligne de

code :
UserForm1.Show . Cette commande se retrouve dans la macro de ton
bouton



sur la feuille.

'--------------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub
'--------------------


"ma variable Public n'a pas la porté suffisante pour être conservée à
l'affichage du USF.."


Une variable public peut être appelé à partir de n'importe quel module
de


ton classeur et elle va conserver sa valeur aussi
longtemps que le classeur sera ouvert. Pour ce faire, il faut la
déclarer


dans un MODULE STANDARD.



Salutations!










"François" a écrit dans le message de
news:

Bonjour michdenis,

Je te remercie de ton aide.
J'ai essayé .. j'ai échoué

Je te copie ci-dessous:
Le code du Workbook open = qui présélectionne ma listbox à "A"
Le code du module USF
Le code du module standard
Il me semble que le fait de rappeler l'USF à partir d'un module
standard



provoque un déchargement de la mémoire et ma variable Public n'a pas
la porté suffisante pour être conservée à l'affichage du USF..

Private Sub Workbook_Open()
ouvrirUSF
End Sub
------------
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
VLB = ListBox1.Value
UserForm1.Hide
End Sub
Private Sub UserForm_Initialize()
ListBox1.Value = VLB
End Sub
-------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub

Sub AfficherUSF() ' attaché à mon bouton de feuille
UserForm1.Show
End Sub

Merci encore de ton aide,
François
--------------------------------------

"michdenis" a écrit dans le message news:
#
Bonjour François,

Habituellement, on utilise la commande "Load" (au moment de
l'ouverture



d'un classeur) pour charger un formulaire en mémoire
(sans l'afficher à l'écran) afin de donner à l'usager "l'impression"
de



la
rapidité du programme au moment opportun. Les
commandes "Show" et "Hide" sont utilisés pour rendre visible ou
invisible


le formulaire (sans que ce dernier soit déchargé de
la mémoire vive. Cependant, si le formulaire n'est pas en mémoire
vive




au
moment de l'appel de la méthode "Show", il va de
soi que le formulaire devra se charger en mémoire("Load") avant de
s'afficher à l'écran. C'est seulement au moment où le

formulaire se charge en mémoire vive que l'événement
Private Sub UserForm_Initialize() est exécuté.

Si tu désires que ton listbox affiche une valeur différente selon le
moment de l'appel,


A ) définit dans un module standard, une variable "Public" comme
ceci




:
Public ValeurListBox as String 'adapte le type de variable
selon



ce qu'elle doit contenir

B ) Tu tiens à jour le contenu de cette variable ...

C )
Private Sub UserForm_Initialize()
ListBox1.Value = ValeurListBox
End Sub


Salutations!



"François" a écrit dans le message de
news:

Bonjour à tous,

Je reviens vers vous avec un pb que je n'ai finalement par réussi à
contourner.
Pascal Engelmajer a tenté de m'aider , mais je n'étais sans doute
pas




assez
clair.
Exemple simplifié :

J'ai une feuille de calcul avec : un champ nommé Zn1 (B6:B11) avec
valeurs


A,B,C,D,E
- un bouton sur cette feuille créé avec barre d'outils formulaires
qui




appelle un Userform

Ce Userform contient une ListBox reliée à mon Champ nommé Zn1
et un bouton OK .

Le pb est que si je clique sur le bouton de ma feuille de calcul,
cela




actionne automatiquement
le Private Sub UserForm_Initialize() alors que le code est "show" et
non



"Load"
et moi je voudrais retrouver à l'affichage de mon UserForm la valeur
précédemment
choisie et non la valeur d'initialisation.
XL97 - SR2

Ci-dessous le code du module standard de mon bouton et le code du
module



USF
--- Module1 ----
Sub ouvrirUSF()
UserForm1.Show
End Sub

--- UserForm1 ---
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
UserForm1.Hide
End Sub

Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub
-----------------
Voilà, au besoin mon fichier pèse 20Ko
Je suis très embêté ;-(

Merci par avance et très bonne journée.
François


















Avatar
Pascal Engelmajer
Salut,
je n'en ai pas souvenir.
je filtre les mail l'objet etait-il explicite ?
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"François" a écrit dans le message de news:
uD236B#
Bonjour Pascal,

as-tu reçu mon fichier ?

très cordialement,
François
------

"Pascal Engelmajer" a écrit dans le
message news:
Salut François,
je veux bien regarder ton classeur...
car je ne comprends pas ce qui ne marche pas...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"François" a écrit dans le message de news:
OZt4#
Je suis désolé de t'importuner par ma maladresse.
J'ai bien lu ta première réponse.
(J'avais remis le load à tout hasard car je n'arrivais pas à mes
fins..)



Par contre j'ai bien déclaré ma variable dans un module standard
c'est celui qui contient la macro de mon bouton de feuille.
et quand je trace par F8, que je rappelle mon USF avec mon bouton
de feuille, ma variable est vide quand j'arrive dans
Private Sub UserForm_Initialize
Pourrais-je t'envoyer mon classeur (20k) ?

bien à toi,
François
---------------------

"michdenis" a écrit dans le message news:

Bonjour François,

Je t'invite à relire ma première réponse ....


Pourquoi utiliser la méthode "Load" suivi de la méthode "Show"
Dans ce cas précis, la méthode Show peut faire le travail
Il me semble t'avoir donné une explication à ma réponse précédente

Comme cette procédure à l'ouverture du classeur, si tu ne désires
pas




l'afficher immédiatement à l'écran, enlève la ligne de
code :
UserForm1.Show . Cette commande se retrouve dans la macro de ton
bouton



sur la feuille.

'--------------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub
'--------------------


"ma variable Public n'a pas la porté suffisante pour être conservée
à




l'affichage du USF.."

Une variable public peut être appelé à partir de n'importe quel
module




de
ton classeur et elle va conserver sa valeur aussi
longtemps que le classeur sera ouvert. Pour ce faire, il faut la
déclarer


dans un MODULE STANDARD.



Salutations!










"François" a écrit dans le message de
news:

Bonjour michdenis,

Je te remercie de ton aide.
J'ai essayé .. j'ai échoué

Je te copie ci-dessous:
Le code du Workbook open = qui présélectionne ma listbox à "A"
Le code du module USF
Le code du module standard
Il me semble que le fait de rappeler l'USF à partir d'un module
standard



provoque un déchargement de la mémoire et ma variable Public n'a pas
la porté suffisante pour être conservée à l'affichage du USF..

Private Sub Workbook_Open()
ouvrirUSF
End Sub
------------
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
VLB = ListBox1.Value
UserForm1.Hide
End Sub
Private Sub UserForm_Initialize()
ListBox1.Value = VLB
End Sub
-------------
Sub ouvrirUSF()
VLB = "A"
Load UserForm1
UserForm1.Show
End Sub

Sub AfficherUSF() ' attaché à mon bouton de feuille
UserForm1.Show
End Sub

Merci encore de ton aide,
François
--------------------------------------

"michdenis" a écrit dans le message news:
#
Bonjour François,

Habituellement, on utilise la commande "Load" (au moment de
l'ouverture



d'un classeur) pour charger un formulaire en mémoire
(sans l'afficher à l'écran) afin de donner à l'usager
"l'impression"





de
la
rapidité du programme au moment opportun. Les
commandes "Show" et "Hide" sont utilisés pour rendre visible ou
invisible


le formulaire (sans que ce dernier soit déchargé de
la mémoire vive. Cependant, si le formulaire n'est pas en mémoire
vive




au
moment de l'appel de la méthode "Show", il va de
soi que le formulaire devra se charger en mémoire("Load") avant de
s'afficher à l'écran. C'est seulement au moment où le

formulaire se charge en mémoire vive que l'événement
Private Sub UserForm_Initialize() est exécuté.

Si tu désires que ton listbox affiche une valeur différente selon
le





moment de l'appel,

A ) définit dans un module standard, une variable "Public" comme
ceci




:
Public ValeurListBox as String 'adapte le type de variable
selon



ce qu'elle doit contenir

B ) Tu tiens à jour le contenu de cette variable ...

C )
Private Sub UserForm_Initialize()
ListBox1.Value = ValeurListBox
End Sub


Salutations!



"François" a écrit dans le message de
news:

Bonjour à tous,

Je reviens vers vous avec un pb que je n'ai finalement par réussi
à





contourner.
Pascal Engelmajer a tenté de m'aider , mais je n'étais sans doute
pas




assez
clair.
Exemple simplifié :

J'ai une feuille de calcul avec : un champ nommé Zn1 (B6:B11) avec
valeurs


A,B,C,D,E
- un bouton sur cette feuille créé avec barre d'outils formulaires
qui




appelle un Userform

Ce Userform contient une ListBox reliée à mon Champ nommé Zn1
et un bouton OK .

Le pb est que si je clique sur le bouton de ma feuille de calcul,
cela




actionne automatiquement
le Private Sub UserForm_Initialize() alors que le code est "show"
et





non
"Load"
et moi je voudrais retrouver à l'affichage de mon UserForm la
valeur





précédemment
choisie et non la valeur d'initialisation.
XL97 - SR2

Ci-dessous le code du module standard de mon bouton et le code du
module



USF
--- Module1 ----
Sub ouvrirUSF()
UserForm1.Show
End Sub

--- UserForm1 ---
Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("c6") = ListBox1.Value
UserForm1.Hide
End Sub

Private Sub UserForm_Initialize()
ListBox1.Value = Sheets("Feuil1").Range("B6").Value
End Sub
-----------------
Voilà, au besoin mon fichier pèse 20Ko
Je suis très embêté ;-(

Merci par avance et très bonne journée.
François






















1 2