Userforms: faire que des captions définies de manières dynamiques (Usf initialise) deviennent permanentes

Le
Florent Bedecarrats
Bonjour à tous,

Je fais mes premières armes en userforms et VBA en préparant un
questionnaire très long (Merci à excelabo et à ce forum pour tous les tips
qui m'ont bien aidé). J'ai défini les captions de mes labels, optionbuttons
et check boxes en fonction d'un tableau grâce à une (très longue) macro du
type:

Private Sub UserForm_Initialize()
La1Qu1_01.Caption = Range("V2_01En1_01QuLa1")
Ch1Qu1_01.Caption = Range("V2_01En1_01QuCh1")
Op1Qu1_01.Caption = Range("V2_01En1_01QuOp1")

End Sub

Je voudrais désormais "fixer" de manières permanentes ces captions en
fonction de ces mêmes valeurs. Je suppose que je dois tranformer le
UserForm_Initialize() par quelque chose, mais je ne trouve pas.

Quelqu'un peut-il m'aider?

Bien à vous,

Florent
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #4747861
Bonsoir.
Tu peux coder la propriété "Caption" dans les propriétés de tes contrôles.
(clic droit sur un contrôle, clic sur "propriétés")
Cordialement.
Daniel
"Florent Bedecarrats" news: %
Bonjour à tous,

Je fais mes premières armes en userforms et VBA en préparant un
questionnaire très long (Merci à excelabo et à ce forum pour tous les tips
qui m'ont bien aidé). J'ai défini les captions de mes labels,
optionbuttons et check boxes en fonction d'un tableau grâce à une (très
longue) macro du type:

Private Sub UserForm_Initialize()
La1Qu1_01.Caption = Range("V2_01En1_01QuLa1")
Ch1Qu1_01.Caption = Range("V2_01En1_01QuCh1")
Op1Qu1_01.Caption = Range("V2_01En1_01QuOp1")
...
End Sub

Je voudrais désormais "fixer" de manières permanentes ces captions en
fonction de ces mêmes valeurs. Je suppose que je dois tranformer le
UserForm_Initialize() par quelque chose, mais je ne trouve pas.

Quelqu'un peut-il m'aider?

Bien à vous,

Florent




Michel Gaboly
Le #4747781
Bonsoir Florent,

A chaque classeur, est associé un projet VBA, avec de composants de nat ure diverse (feuilles de calcul, modules,
userforms, ...)

Les composants de type UserForm donnent accès, via leur propriété " Designer", à un objet permettant de modifier de façon
permanente les propriétés du UserForm.

Voici un exemple de code :

Sub MAJDTest()
Dim UF As String, VBC As vbcomponent
UF = "DTest"
Set VBC = ThisWorkbook.VBProject.VBComponents(UF)
With VBC.designer
.Controls("Lab1").Caption = Range("TxtLab1")
.Controls("OB1").Caption = Range("TxtOB1")
.Controls("CB1").Caption = Range("TxtCB1")
End With
End Sub

Dans cet exemple, j'ai utilisé :

1 Label, nommé "Lab1",
1 OptionButton, nommé "OB1",
1 CheckBox, nommé "CB1",

et 3 cellules nommées "TxtLab1", "TxtOB1" et "TxtCB1" contenant les tex tes à utiliser comme Caption pour les 3 contrôles.

Pour que la Sub fonctionne, il faut qu'elle soit dans un module appartena nt au classeur à modifier, puisqu'on utilise
ThisWorkbook :

Set VBC = ThisWorkbook.VBProject.VBComponents(UF)

Une adaptation est aisée en stockant le nom du classeur (et celui du Us erForm) dans des cellules, comme les textes à
utiliser.

Par ailleurs, dans l'environnement Visual Basic, il faut aller dans les r éférences (menu Outils), et cocher "Microsoft
Visual Basic for Applications Extensibility 5.3".

NB - Le numéro de version (5.3) peut varier : sur Mac, il n'y en a pas, il faut cocher "Microsoft Visual Basic for
Applications Extensibility".

Enfin, avec Excel 2003 (et peut-être 2002), il faut aller (dans l'envir onnement Excel, pas VBA) dans le menu "Outils",
piuis dans le sous-menu "Macros" et choisir "Sécurité...". Une fenê tre aparaît ; il faut sélectionner l'onglet "Editeurs
approuvés" et cocher la case "Faire confiance au projet Visual Basic".

Si on oublie cette étape, la Sub ne s'exécute pas et un message infor me l'utilisateur que "le projet n'est pas fiable.".
Il s'agit d'une protection contre les virus écrits en VBA.

Sous Excel 2007, l'interface est différente : le plus simple est d'affi cher l'onglet "Développeur" et de cliquer sur
l'icône "Sécurité des macros" de la zone "Code". Il faut alors coch er "Accès approuvé au modèle d'objet du projet VBA".


Fichier test : http://cjoint.com/?jnaYwLNeGa


Bonjour à tous,

Je fais mes premières armes en userforms et VBA en préparant un
questionnaire très long (Merci à excelabo et à ce forum pour tous les tips
qui m'ont bien aidé). J'ai défini les captions de mes labels, optio nbuttons
et check boxes en fonction d'un tableau grâce à une (très longue) macro du
type:

Private Sub UserForm_Initialize()
La1Qu1_01.Caption = Range("V2_01En1_01QuLa1")
Ch1Qu1_01.Caption = Range("V2_01En1_01QuCh1")
Op1Qu1_01.Caption = Range("V2_01En1_01QuOp1")
...
End Sub

Je voudrais désormais "fixer" de manières permanentes ces captions en
fonction de ces mêmes valeurs. Je suppose que je dois tranformer le
UserForm_Initialize() par quelque chose, mais je ne trouve pas.

Quelqu'un peut-il m'aider?

Bien à vous,

Florent





--
Cordialement,

Michel Gaboly
www.gaboly.com

Florent Bedecarrats
Le #4699101
Merci infiniement Michel!!! Ca marche parfaitement!
Par ailleurs j'ai déjà eu l'occasion de faire un tour sur ton site, il est
très complet. Félicitations.
Bien le bonjour depuis la Bolivie!
Florent


"Michel Gaboly" eBPML%
Bonsoir Florent,

A chaque classeur, est associé un projet VBA, avec de composants de nature
diverse (feuilles de calcul, modules,
userforms, ...)

Les composants de type UserForm donnent accès, via leur propriété
"Designer", à un objet permettant de modifier de façon
permanente les propriétés du UserForm.

Voici un exemple de code :

Sub MAJDTest()
Dim UF As String, VBC As vbcomponent
UF = "DTest"
Set VBC = ThisWorkbook.VBProject.VBComponents(UF)
With VBC.designer
.Controls("Lab1").Caption = Range("TxtLab1")
.Controls("OB1").Caption = Range("TxtOB1")
.Controls("CB1").Caption = Range("TxtCB1")
End With
End Sub

Dans cet exemple, j'ai utilisé :

1 Label, nommé "Lab1",
1 OptionButton, nommé "OB1",
1 CheckBox, nommé "CB1",

et 3 cellules nommées "TxtLab1", "TxtOB1" et "TxtCB1" contenant les textes à
utiliser comme Caption pour les 3 contrôles.

Pour que la Sub fonctionne, il faut qu'elle soit dans un module appartenant
au classeur à modifier, puisqu'on utilise
ThisWorkbook :

Set VBC = ThisWorkbook.VBProject.VBComponents(UF)

Une adaptation est aisée en stockant le nom du classeur (et celui du
UserForm) dans des cellules, comme les textes à
utiliser.

Par ailleurs, dans l'environnement Visual Basic, il faut aller dans les
références (menu Outils), et cocher "Microsoft
Visual Basic for Applications Extensibility 5.3".

NB - Le numéro de version (5.3) peut varier : sur Mac, il n'y en a pas, il
faut cocher "Microsoft Visual Basic for
Applications Extensibility".

Enfin, avec Excel 2003 (et peut-être 2002), il faut aller (dans
l'environnement Excel, pas VBA) dans le menu "Outils",
piuis dans le sous-menu "Macros" et choisir "Sécurité...". Une fenêtre
aparaît ; il faut sélectionner l'onglet "Editeurs
approuvés" et cocher la case "Faire confiance au projet Visual Basic".

Si on oublie cette étape, la Sub ne s'exécute pas et un message informe
l'utilisateur que "le projet n'est pas fiable.".
Il s'agit d'une protection contre les virus écrits en VBA.

Sous Excel 2007, l'interface est différente : le plus simple est d'afficher
l'onglet "Développeur" et de cliquer sur
l'icône "Sécurité des macros" de la zone "Code". Il faut alors cocher "Accès
approuvé au modèle d'objet du projet VBA".


Fichier test : http://cjoint.com/?jnaYwLNeGa


Bonjour à tous,

Je fais mes premières armes en userforms et VBA en préparant un
questionnaire très long (Merci à excelabo et à ce forum pour tous les tips
qui m'ont bien aidé). J'ai défini les captions de mes labels,
optionbuttons et check boxes en fonction d'un tableau grâce à une (très
longue) macro du type:

Private Sub UserForm_Initialize()
La1Qu1_01.Caption = Range("V2_01En1_01QuLa1")
Ch1Qu1_01.Caption = Range("V2_01En1_01QuCh1")
Op1Qu1_01.Caption = Range("V2_01En1_01QuOp1")
...
End Sub

Je voudrais désormais "fixer" de manières permanentes ces captions en
fonction de ces mêmes valeurs. Je suppose que je dois tranformer le
UserForm_Initialize() par quelque chose, mais je ne trouve pas.

Quelqu'un peut-il m'aider?

Bien à vous,

Florent





--
Cordialement,

Michel Gaboly
www.gaboly.com

Florent Bedecarrats
Le #4699081
Merci Daniel, mais il y a plus de 600 composants dans mon userform dont je
dois changer les captions, et ce en 3 langues. Mais Michel Gaboly ma donné
une solution qui convenait parfaitement à mes besoins.
Merci en tout cas et bonne journée!
Florent


"Daniel.C" Ok8%
Bonsoir.
Tu peux coder la propriété "Caption" dans les propriétés de tes contrôles.
(clic droit sur un contrôle, clic sur "propriétés")
Cordialement.
Daniel
"Florent Bedecarrats" de news: %
Bonjour à tous,

Je fais mes premières armes en userforms et VBA en préparant un
questionnaire très long (Merci à excelabo et à ce forum pour tous les
tips qui m'ont bien aidé). J'ai défini les captions de mes labels,
optionbuttons et check boxes en fonction d'un tableau grâce à une (très
longue) macro du type:

Private Sub UserForm_Initialize()
La1Qu1_01.Caption = Range("V2_01En1_01QuLa1")
Ch1Qu1_01.Caption = Range("V2_01En1_01QuCh1")
Op1Qu1_01.Caption = Range("V2_01En1_01QuOp1")
...
End Sub

Je voudrais désormais "fixer" de manières permanentes ces captions en
fonction de ces mêmes valeurs. Je suppose que je dois tranformer le
UserForm_Initialize() par quelque chose, mais je ne trouve pas.

Quelqu'un peut-il m'aider?

Bien à vous,

Florent









Michel Gaboly
Le #4698681
De rien, c'était avec plaisir.

Tu as de la chance d'avoir les Andes à proximité !

Merci infiniement Michel!!! Ca marche parfaitement!
Par ailleurs j'ai déjà eu l'occasion de faire un tour sur ton site, il est
très complet. Félicitations.
Bien le bonjour depuis la Bolivie!
Florent




--
Cordialement,

Michel Gaboly
www.gaboly.com

Philippe.R
Le #4698601
Bonsoir Michel,
Tiens, tiens...
Toi aussi !
;o)))
--
Avec plaisir
Philippe.R
"Michel Gaboly" news:
De rien, c'était avec plaisir.

Tu as de la chance d'avoir les Andes à proximité !

Merci infiniement Michel!!! Ca marche parfaitement!
Par ailleurs j'ai déjà eu l'occasion de faire un tour sur ton site, il est
très complet. Félicitations.
Bien le bonjour depuis la Bolivie!
Florent




--
Cordialement,

Michel Gaboly
www.gaboly.com

Michel Gaboly
Le #4745391
Salut Philippe,

;-))

PS - Je n'étais pas venu depuis quelques jours, et je viens seulement d e lire ton message.

Bonsoir Michel,
Tiens, tiens...
Toi aussi !
;o)))



--
Cordialement,

Michel Gaboly
www.gaboly.com

Publicité
Poster une réponse
Anonyme