OVH Cloud OVH Cloud

Userform

17 réponses
Avatar
Fabieg
Bonjour,
j'ai crée un masque de saisie sous vba (pour l'instant sans les codes justes
les boites) et je voulais savoir pour que les résultats s'affichent dans une
nouvelle page organisé comment je fais, je dois créer une nouvelle feuille
sous vba?
J'ai dans mon fichier source une colonne qui s'appelle action avec plusieurs
types d'actions qui reviennent (coktail, soirée...), j'ai crée sous vba une
liste modifiable (cboType) comment je fais pour remplir ma liste quel est le
code vba?
Merci d'avance pour votre aide.
Cordialement

7 réponses

1 2
Avatar
Daniel
Tu as oublié le "select" (comme monsieur AnonymousA te l'avais conseillé)
Daniel
"fabieg" a écrit dans le message de news:

ah mince j'ai essayé ça m'affiche erreur d'éxécution 438: Propriété ou
méthode non gérée par cet objet.
Voilà le code que j'ai mis:

Dim d As Range
Sheets("action").Range ("A2:A11")
For Each d In Selection
If WorksheetFunction.CountIf(Selection, d.Value) = 1 Then
ListAction.AddItem d.Value
End If
Next d





Avatar
Daniel
Tu déclares une variable publique dans un module :
Public Var As Variant
Tu l'utilises pour recueillir la valeur de ta liste :
Var = ComboBox1.Value (ou listbox)
et tu la colle lors de l'initialisation de l'autre userform :
TextBox1.Value = Var
Cordialement.
Daniel
"fabieg" a écrit dans le message de news:

Et pour afficher le résultat dans un txtbox d'un autre useform comment
puis-je faire?
Merci de votre aide
"Daniel" a écrit dans le message de news:
u8cIn%
Bonjour.
Si j'ai bien compris, pour remplir ta liste d'après une plage de cellules
:
ComboBox1.RowSource = "Feuil1!A1:A10"
Pour afficher le résultat de la zone de liste :
Range("Feuil2!A1") = ComboBox1.Value
dans le code d'un bouton, par exemple.
Cordialement.
Daniel
"Fabieg" a écrit dans le message de
news:
Bonjour,
j'ai crée un masque de saisie sous vba (pour l'instant sans les codes
justes
les boites) et je voulais savoir pour que les résultats s'affichent dans
une
nouvelle page organisé comment je fais, je dois créer une nouvelle
feuille
sous vba?
J'ai dans mon fichier source une colonne qui s'appelle action avec
plusieurs
types d'actions qui reviennent (coktail, soirée...), j'ai crée sous vba
une
liste modifiable (cboType) comment je fais pour remplir ma liste quel
est le
code vba?
Merci d'avance pour votre aide.
Cordialement










Avatar
anonymousA
l'opération de selection et d'affectation à une variable sont 2 choses
différentes ce que , sans vouloir donner des leçons, j'essayais de dire.
D'ailleurs pour selectionner quelque chose sur une feuille -quand celle ci
est différente de la feuille active-, il faut d'abord activer la feuille en
question .

A+


Tu as oublié le "select" (comme monsieur AnonymousA te l'avais conseillé)
Daniel
"fabieg" a écrit dans le message de news:

ah mince j'ai essayé ça m'affiche erreur d'éxécution 438: Propriété ou
méthode non gérée par cet objet.
Voilà le code que j'ai mis:

Dim d As Range
Sheets("action").Range ("A2:A11")
For Each d In Selection
If WorksheetFunction.CountIf(Selection, d.Value) = 1 Then
ListAction.AddItem d.Value
End If
Next d










Avatar
anonymousA
re,

au risque de paraitre cassepieds , là encore, il n'est pas nécessaire de
créer une variable publique. En général ,d'ailleurs, il vaut mieux eviter
autant que possible celles-ci.
En effet, si on suppose que on a 2 UF, le 1er s'appelant UF1 et le second
UF2. le 1er possède un textbox appelé texbox1 et un commandbutton appelé
commandbutton1. le second UF possède un textbox appelé textbox1.
Pour que ce dernier recoive la valeur du textbox1 de UF1, il suffit d'écrire
dans la procédure evenementielle du CommandButton1 (p.e) de UF1 la proc
suivante.

Private Sub CommandButton1_Click()

UserForm2.TextBox1.Text = UserForm1.TextBox1.Text
UserForm2.Show
Unload Me (ou me.hide si on veut que le UF1 soit juste caché)

End Sub

On voit bien qu'il n'a pas été nécessaire de créer une variable publique et
que UF2.textbox2 conserve bien la valeur de UF1.textbox1 même si UF1 est
fermé. Enfin, la préocédure initialize de UF2 n'affectera en rien la valeur
de UF2.textbox1 sauf si on y insere un ordre contraire .

A+


Tu déclares une variable publique dans un module :
Public Var As Variant
Tu l'utilises pour recueillir la valeur de ta liste :
Var = ComboBox1.Value (ou listbox)
et tu la colle lors de l'initialisation de l'autre userform :
TextBox1.Value = Var
Cordialement.
Daniel
"fabieg" a écrit dans le message de news:

Et pour afficher le résultat dans un txtbox d'un autre useform comment
puis-je faire?
Merci de votre aide
"Daniel" a écrit dans le message de news:
u8cIn%
Bonjour.
Si j'ai bien compris, pour remplir ta liste d'après une plage de cellules
:
ComboBox1.RowSource = "Feuil1!A1:A10"
Pour afficher le résultat de la zone de liste :
Range("Feuil2!A1") = ComboBox1.Value
dans le code d'un bouton, par exemple.
Cordialement.
Daniel
"Fabieg" a écrit dans le message de
news:
Bonjour,
j'ai crée un masque de saisie sous vba (pour l'instant sans les codes
justes
les boites) et je voulais savoir pour que les résultats s'affichent dans
une
nouvelle page organisé comment je fais, je dois créer une nouvelle
feuille
sous vba?
J'ai dans mon fichier source une colonne qui s'appelle action avec
plusieurs
types d'actions qui reviennent (coktail, soirée...), j'ai crée sous vba
une
liste modifiable (cboType) comment je fais pour remplir ma liste quel
est le
code vba?
Merci d'avance pour votre aide.
Cordialement















Avatar
Daniel
Bonsoir.
Sans rancune. J'avais bien compris ta remarque (elle est très en vogue ces
derniers jours), et elle est parfaitement justifiée. J'ai juste trouvé drôle
que tu déconseilles le select et que l'erreur dans le code provienne
justement de là.
Cordialement.
Daniel
"anonymousA" a écrit dans le message
de news:
l'opération de selection et d'affectation à une variable sont 2 choses
différentes ce que , sans vouloir donner des leçons, j'essayais de dire.
D'ailleurs pour selectionner quelque chose sur une feuille -quand celle ci
est différente de la feuille active-, il faut d'abord activer la feuille
en
question .

A+


Avatar
Daniel
Certes.
Pourquoi tu n'aimes pas les variables publiques ?
Daniel
"anonymousA" a écrit dans le message
de news:
re,

au risque de paraitre cassepieds , là encore, il n'est pas nécessaire de
créer une variable publique. En général ,d'ailleurs, il vaut mieux eviter
autant que possible celles-ci.
En effet, si on suppose que on a 2 UF, le 1er s'appelant UF1 et le second
UF2. le 1er possède un textbox appelé texbox1 et un commandbutton appelé
commandbutton1. le second UF possède un textbox appelé textbox1.
Pour que ce dernier recoive la valeur du textbox1 de UF1, il suffit
d'écrire
dans la procédure evenementielle du CommandButton1 (p.e) de UF1 la proc
suivante.

Private Sub CommandButton1_Click()

UserForm2.TextBox1.Text = UserForm1.TextBox1.Text
UserForm2.Show
Unload Me (ou me.hide si on veut que le UF1 soit juste caché)

End Sub

On voit bien qu'il n'a pas été nécessaire de créer une variable publique
et
que UF2.textbox2 conserve bien la valeur de UF1.textbox1 même si UF1 est
fermé. Enfin, la préocédure initialize de UF2 n'affectera en rien la
valeur
de UF2.textbox1 sauf si on y insere un ordre contraire .

A+


Tu déclares une variable publique dans un module :
Public Var As Variant
Tu l'utilises pour recueillir la valeur de ta liste :
Var = ComboBox1.Value (ou listbox)
et tu la colle lors de l'initialisation de l'autre userform :
TextBox1.Value = Var
Cordialement.
Daniel
"fabieg" a écrit dans le message de news:

Et pour afficher le résultat dans un txtbox d'un autre useform comment
puis-je faire?
Merci de votre aide
"Daniel" a écrit dans le message de news:
u8cIn%
Bonjour.
Si j'ai bien compris, pour remplir ta liste d'après une plage de
cellules
:
ComboBox1.RowSource = "Feuil1!A1:A10"
Pour afficher le résultat de la zone de liste :
Range("Feuil2!A1") = ComboBox1.Value
dans le code d'un bouton, par exemple.
Cordialement.
Daniel
"Fabieg" a écrit dans le message de
news:
Bonjour,
j'ai crée un masque de saisie sous vba (pour l'instant sans les codes
justes
les boites) et je voulais savoir pour que les résultats s'affichent
dans
une
nouvelle page organisé comment je fais, je dois créer une nouvelle
feuille
sous vba?
J'ai dans mon fichier source une colonne qui s'appelle action avec
plusieurs
types d'actions qui reviennent (coktail, soirée...), j'ai crée sous
vba
une
liste modifiable (cboType) comment je fais pour remplir ma liste quel
est le
code vba?
Merci d'avance pour votre aide.
Cordialement

















Avatar
anonymousA
re,

les variables publiques peuvent être dangereuses car elles peuvent être
modifiées partout dans le code rendant donc leurs valeurs sans une
grande rigueur imprévisibles notamment dans le cas de procédures de
taille importante. Par ailleurs, elles sont par principe contraires à
une bonne pratique de programmation qu'est l'encapsulation (barbarisme
francais hérité de l'américain ) .
Pour écrire celà, je ne fais qu'emprunter les termes d'auteurs reconnus
dans la communauté Excel , à savoir Bullen, Bovey et Green dans leur
ouvrage recemment paru ( Professional Excel Developpement).

A+

Certes.
Pourquoi tu n'aimes pas les variables publiques ?
Daniel
"anonymousA" a écrit dans le message
de news:

re,

au risque de paraitre cassepieds , là encore, il n'est pas nécessaire de
créer une variable publique. En général ,d'ailleurs, il vaut mieux eviter
autant que possible celles-ci.
En effet, si on suppose que on a 2 UF, le 1er s'appelant UF1 et le second
UF2. le 1er possède un textbox appelé texbox1 et un commandbutton appelé
commandbutton1. le second UF possède un textbox appelé textbox1.
Pour que ce dernier recoive la valeur du textbox1 de UF1, il suffit
d'écrire
dans la procédure evenementielle du CommandButton1 (p.e) de UF1 la proc
suivante.

Private Sub CommandButton1_Click()

UserForm2.TextBox1.Text = UserForm1.TextBox1.Text
UserForm2.Show
Unload Me (ou me.hide si on veut que le UF1 soit juste caché)

End Sub

On voit bien qu'il n'a pas été nécessaire de créer une variable publique
et
que UF2.textbox2 conserve bien la valeur de UF1.textbox1 même si UF1 est
fermé. Enfin, la préocédure initialize de UF2 n'affectera en rien la
valeur
de UF2.textbox1 sauf si on y insere un ordre contraire .

A+



Tu déclares une variable publique dans un module :
Public Var As Variant
Tu l'utilises pour recueillir la valeur de ta liste :
Var = ComboBox1.Value (ou listbox)
et tu la colle lors de l'initialisation de l'autre userform :
TextBox1.Value = Var
Cordialement.
Daniel
"fabieg" a écrit dans le message de news:


Et pour afficher le résultat dans un txtbox d'un autre useform comment
puis-je faire?
Merci de votre aide
"Daniel" a écrit dans le message de news:
u8cIn%

Bonjour.
Si j'ai bien compris, pour remplir ta liste d'après une plage de
cellules
:
ComboBox1.RowSource = "Feuil1!A1:A10"
Pour afficher le résultat de la zone de liste :
Range("Feuil2!A1") = ComboBox1.Value
dans le code d'un bouton, par exemple.
Cordialement.
Daniel
"Fabieg" a écrit dans le message de
news:

Bonjour,
j'ai crée un masque de saisie sous vba (pour l'instant sans les codes
justes
les boites) et je voulais savoir pour que les résultats s'affichent
dans
une
nouvelle page organisé comment je fais, je dois créer une nouvelle
feuille
sous vba?
J'ai dans mon fichier source une colonne qui s'appelle action avec
plusieurs
types d'actions qui reviennent (coktail, soirée...), j'ai crée sous
vba
une
liste modifiable (cboType) comment je fais pour remplir ma liste quel
est le
code vba?
Merci d'avance pour votre aide.
Cordialement



















1 2