Modification définitive label.caption

Bonjour,

J'aimerais modifier le caption d'un label définitivement, c'est à dire que j'ai créé un bouton qui ouvre un userform dans lequel on remplit des textbox qui vont venir remplacer les captions de labels d'un autre userform.

Voici mon code :

Private Sub CommandButton1_Click()
'les deux userforms que j'utilise s'appelllent modif_infos et Tour_de_terrain

Sheets("Template").Range("A10").Value = modif_infos.modifinfo1.Value 'ici on enregistre ce que l'utilisateur a tapé sur une feuille excel car j'ai vu qu'il fallait fermer les usf afin de modifier les captions des labels
Sheets("Template").Range("B10").Value = modif_infos.modifinfo2.Value
Sheets("Template").Range("C10").Value = modif_infos.modifinfo3.Value
Sheets("Template").Range("D10").Value = modif_infos.modifinfo4.Value

Unload modif_infos 'du coup je ferme les deux userforms
Unload Tour_de_terrain

ThisWorkbook.VBProject.VBComponents("Tour_de_terrain").Designer.Controls("info1").Caption = Sheets("Template").Range("A10").Value 'ensuite je tente de modifier les captions et c'est ici que j'ai une erreur (erreur 91 : variable objet ou variable du bloc with non défini)
ThisWorkbook.VBProject.VBComponents("Tour_de_terrain").Designer.Controls("info2").Caption = Sheets("Template").Range("B10").Value
ThisWorkbook.VBProject.VBComponents("Tour_de_terrain").Designer.Controls("info3").Caption = Sheets("Template").Range("C10").Value
ThisWorkbook.VBProject.VBComponents("Tour_de_terrain").Designer.Controls("info4").Caption = Sheets("Template").Range("D10").Value

Tour_de_terrain.Show 'je réouvre le usf concerné

End Sub

Merci pour vos précieux conseils !!

PS : je rajoute mon fichier test pour ceux qui ne liraient pas toute la conversation

44classeur1.xlsm (18.09 Ko)

j'ai trouvé le problème mais pas la solution, le problème vient du fait que je ferme le userform avant la fin du code, par contre je ne sais pas comment faire du coup.

En réalité, lorsque je lance le code depuis une macro seule, sans passer par un userform cela fonctionne. Or cela ne me convient pas, il faut que l'utilisateur rentre les infos à modifier dans un userform et que en cliquant sur OK celui-ci modifie les données des labels du second userform.

Bonjour,

Je viens de faire un test rapide (mais forcément dans un fichier simplifié, puisque tu n'en as pas joint.

Je ne sais pas où tu as "vu qu'il fallait fermer les usf afin de modifier les captions des labels"? Les résultats des petits tests que je viens de faire ne le confirment pas, ce me semble!?

Bonjour,

As-tu pensé à mettre des conditions si

If X = 1 Then

'...

ElseIf X = 2 Then

'...

ElseIf X = 4 Then

'...

Else

'...

End If

si.. les valeurs ont été été modifié alors..

aussi non

If Sheets("Template").Range("A10").Value = modif_infos.modifinfo1.Value Then
Elseif Sheets("Template").Range("B10").Value = modif_infos.modifinfo2.Value Then
Elseif Sheets("Template").Range("C10").Value = modif_infos.modifinfo3.Value Then
Elseif Sheets("Template").Range("D10").Value = modif_infos.modifinfo4.Value Then
Unload modif_infos 'du coup je ferme les deux userforms
Unload Tour_de_terrain
'etc..
'...
End if

--dur sans fichier pour moi mais à essayer

crdlt,

André

Je vous ai créé un fichier presque identique au mien où j'ai enlevé les détails inutiles et les infos confidentielles, je retrouve la même erreur, cela devrait vous aider à y voir plus clair.

Merci pour votre aide en tout cas.

*******Modifier les propriétés d'un objet CommandButton contenu dans un UserForm.

Celui ci ne doit pas être en cours d'affichage.

'Change la couleur de fond du CommandButton

ThisWorkbook.VBProject.VBComponents("UserForm1"). _

Designer.Controls("CommandButton1").BackColor = RGB(225, 0, 0)*****

28classeur1.xlsm (18.09 Ko)

Re-bonjour,

Veux-tu essayer ce qui suit:

Private Sub CommandButton1_Click()

UserForm1.Label1.Caption = TextBox1.Value

'Sheets("Feuil1").Range("A10").Value = modifications.TextBox1.Value
'Sheets("Feuil1").Range("B10").Value = modifications.TextBox2.Value
Unload modifications
'Unload UserForm1
'ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls("Label1").Caption = Sheets("Feuil1").Range("A10").Value
'ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls("Label2").Caption = Sheets("Feuil1").Range("B10").Value

UserForm1.Show

End Sub

Re,

Par keypress il fallait passé de ton usf1

crdlt,

André

Merci pour vos tentatives mais cela ne fonctionne pas.

U. Milité, cela ne modifie pas définitivement le caption du label, lorsque l'on le ferme et le réouvre le caption est celui de départ.

Et Andre13 je n'ai jamais utilisé keypress donc je ne sais ce que cela fait mais dans ton fichier le caption du label1 n'est pas modifié lorsque je clique sur le bouton.

Re,

oups, me suis trompé, c'est dans l' USF1 que tu veux modifiés les labels

je suis parti sur autre chose moi

désolé

Effectivement !

Pas de souci, c'est gentil quand même d'avoir essayé ^^

Re,

Un truc comme çà

à tester

Tu y es presque, reste le problème principale, les captions des labels sont renommés (Label1 et Label2) lorsque l'on ferme et réouvre le userform1.

Re,

en supprimant le caption de l'USF1 directement

en espérant que c'est cela qu'il fallait faire

crdlt,

André

Non ce n'est pas cela, essayez de modifier le caption en utilisant le usf et les boutons, vous verrez qu'une fois l'opération terminée, si vous fermez les usf et que vous cliquez sur le bouton sur la feuille, le usf s'ouvre avec des labels vides. D'ailleurs je ne comprend pas pourquoi est ce que cela aurait changé qqch que les labels soient vides au départ.

Re,

Je ne comprend plus pourtant j'ai Excel 2007 et cela fonctionne

Note : faut regarder les images du bas vers le haut

000a5 000a4 000a2 000a1

Jusque la tout va bien mais ensuite essaie de fermer ce Userform1 en cliquant sur la croix en haut à droite puis de refaire ta première étape (cliquer sur le bouton qui est sur la feuille) et tu verras que les captions sont vides, ce que je veux faire c'est "enregistrer ce que je tape dans les textbox, dans les labels, et ce définitivement, jusqu'à ce que je les changes grâce à ce que l'on essaye de créer.

PS : c'est pour cela qu'il faut passer par un code du type :

ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls("Label1").Caption = Sheets("Feuil1").Range("A10").Value

et non pas : UserForm1.Label1.Caption = Sheets("Feuil1").Range("A10").Value

Re,

ok je regarde çà

j'espère que c'est ok

EDIT : je viens de lire la fin de ton dernier message je re-regarde

Ca aurait pu être un bon moyen de contourner le problème mais j'ai besoin que le userform1 se ferme et se réouvre donc il me faut le cadre avec la croix et tout.

C'est bon à savoir en tout cas, je ne connaissais pas, merci.

PS : je te répond demain pour la suite

Re,

Bon, je prend note si je trouve te posterai

ci-joint, cela copie sur la feuil1

crdlt,

André

bonjour

hum je voie pas a quoi ca peux servir mes bon

A+

Maurice

Rechercher des sujets similaires à "modification definitive label caption"