Rensigner des TextBox ou Label dans une feuille

G

G'Claire

Guest
Bonsoir les Exéliens et Exéliennes,

Dans un classeur je rempli des cellules par ce code :

With Sheets("Tool_Entete")

.Range("C48") =résultat.TextBoxCableurs 'TexteBox Cableurs susceptibles de faire le produit
.Range("E12") = "'" & résultat.TextBoxReferenceProduit 'TexteBox Référence produit
.Range("J12") = résultat.TextBoxVersion 'TextBox Version
.Range("E14") =résultat.TextBoxDesignationProduit 'TextBox Désignation produit
.Range("O58") = "'" & résultat.ComboBoxMatricule 'ComboBox N° de Matricule
.Range("G58") = résultat.TextBoxPrenomNomOperateur 'TextBox Nom & Prénom
.Range("Q4") = résultat.TextBoxCasierModif 'TextBox N° de casier
.Range("Q14") = "'" & résultat.TextBoxDateEnregistrement 'TextBox date d'enregistrement
.Range("P12") = "'" & résultat.TextBoxSociete 'TextBox Société Interlocuteur
.Range("N12") =résultat.TextBoxIndice 'TextBox Indice
.Range("P13") =résultat.ComboBoxClients 'TextBox Indice

End With

Quel est le code pour remplir des Labels ou des TextBox dans une feuille, car je préfèrerai cette solution de remplissage plutôt que de remplir des cellules pour des raison de mise en forme de ma feuille.

Il me semble que cela parle de Shape mais je n'en suis pas sur

Je vous remercie d'avance, G'Claire
 
L

LaurentTBT

Guest
Re: Renseigner des TextBox ou Label dans une feuille

Bonsoir à tous, bonsoir Jacques.

Bon, je ne sais pas ce qui s'est passé, mais mon message n'est pas passé. Alors je me le retappe. Evidemment, il était long!

2 possibilités selon que tu utilises les contrôles de la boite à outil contrôles de VBA, où les contrôles de la boite à outils Formulaires.

1- Boite à outils contrôles
Tu utilises tes contrôles exactement comme dans un userform, sauf que ces contrôles, au lieu d'appartenir à un userform, appartiennent à ta feuille:

With Sheets("Tool_Entete")

.Label1 =résultat.TextBoxCableurs
.TextBox1= "'" & résultat.TextBoxReferenceProduit
.Label2= résultat.TextBoxVersion
...etc
End With

Ah oui, au fait, par clic droit sur le contrôle sur ta feuille, tu as accés à Propriétés, ce qui t'ouvre une fenêtre exactement comme celle des propriétés sous VBA, et tu donnes notamment à ton contrôle le nom que tu veux.

En plus, si tu vas dans le code de ta feuille sous VBA, tu verras que tu auras accès aux procédures événementielles de chacun des contrôles insérés sur cette feuille (exactement comme avec un userform!)

2- Boite à outil formulaire
L'enregistreur de macro donne, lorsque l'on remplit un label par exemple:

Activesheet.Shapes("Label1").select
Selection.characters.Text="Blablabla"

Problème: tu ne connais pas le nom (pas de boite de propriétés disponibles pourle contrôle comme pour les controles VBA). En revanche, dans ta feuille, si tu sélectionnes ton contrôle, tu peux lui donner un nom dans la zone de nom de ta feuille excel (comme quand on donne un nom à une plage de cellule). Bizarrement, par défaut, le nom était "Etiquette 1", alors que dans le code, c'était "Label1". Mais tu peux lui donner n'importe quel nom. Je te conseille de donner un nom très explicite.

Maintenant, passer par une sélection n'est pas très élégant. Or c'est indispensable, car Activesheet.Shapes("Label1").characters.Text="Blablabla" provoque une erreur.

Reste une solution pour éviter de sélectionner successivement tous les contrôles: passer par une variable objet.

Ce qui donne pour toi:

Dim Contrôle as shape

With Sheets("Tool_Entete")
Set Contrôle=.shapes("TonContrôle1")
Contrôle.TextFrame.Characters.Text = =résultat.TextBoxCableurs
Set Contrôle=.shapes("TonContrôle2")
Contrôle.TextFrame.Characters.Text == "'" & résultat.TextBoxReferenceProduit
Set Contrôle=.shapes("TonContrôle3")
Contrôle.TextFrame.Characters.Text == résultat.TextBoxVersion
...etc
End With

Voilà. Reste à faire ton choix.
La première solution est plus simple et ouvre des perspectives intéressantes (procédures événementielles, modification des propriétés des contrôles)
Mais ces contrôles provoquent des Bugs sous Mac. Alors pour penser à Jean-Marie, si le fichier doit être utilisé sous Mac, il faut opter pour la seconde solution.

Allez, j'espère que cette fois, mon long monologue ne passera pas à la trappe!

Bonne soirée à tous.
Laurent.
 
G

G'Claire

Guest
Laurent, le forum

Merci pour ton petit message, Lol.

J'avais bien essayé avec Shape, et cela me créer une erreur, tu me confirme, cela me rassure quelque part.

Bon, j'ai essayée ta première méthode cela fonctionne impeccable, tu t'en aurai douté, re Lol.

Je te remercie encore, G'Claire
 

Discussions similaires

Statistiques des forums

Discussions
313 101
Messages
2 095 281
Membres
106 241
dernier inscrit
JonathanFourrier