OVH Cloud OVH Cloud

changer la valeur d'une Zone de texte par VBA

27 réponses
Avatar
Bernard Rey
Bonjour,=20

J'ai "h=E9rit=E9" d'un classeur Excel truff=E9 de Zones de Texte=20
(de la barre d'outils "Contr=F4les") et j'essaye=20
d=E9sep=E9r=E9ment de trouver comment on doit s'y prendre pour=20
en modifier la valeur, via VBA (Excel 2000).

J'ai fait plusieurs essais, du style :

With Workbooks(Classeur).Sheets(Feuille).Shapes(MaZone)
.Characters.Text =3D "NouvelleValeur" 'entre autres
End With

Mais =E7a me r=E9pond toujours "Propri=E9t=E9 ou m=E9thode non g=E9r=E9e =

par cet objet". J'ai beau faire... aucun r=E9sultat ! Grrrr !

Quelqu'un saurait me dire ce qui m'=E9chappe ? Comment=20
attrape-t-on la valeur d'un "TextBox" ??? Merci,

--=20
Bernard Rey - Toulouse

10 réponses

1 2 3
Avatar
Daniel.M
Merci (encore) Alain,

TextFrame!

C'est quand même spécial que, dans le cas où on sélectionne, on n'a pas besoin
d'invoquer explicitement cette attribut mais bon, ça résoud mon interrogation
fondamentale (une question existentielle de moins) :-)

Salutations,

Daniel M.

"Alain CROS" wrote in message
news:
Bonjour.

Les shapes sont assez compliqués.
Il faut écrire :
Workbooks(Classeur).Sheets(Feuille).Shapes(MaZone).TextFrame.Characters.Text "Allo le monde"

Alain CROS.


Avatar
Bernard Rey
Les shapes sont assez compliqués.
Il faut écrire :
Workbooks(Classeur).Sheets(Feuille).Shapes(MaZone).TextFrame.Characters.

Text = "Allo le monde"

Merci Alain, mais ça ne marche pas ça. C'est typiquement ce que j'ai tenté
tout l'après-midi sans succès. J'ai invariablement la même réponse :
"Propriété ou méthode non gérée par cet objet"... Ou alors il y a vraiment
quelque chose qui m'échappe ! Mais quoi ???

--
Bernard Rey - Toulouse


"Daniel.M" a écrit dans le message
de news: #

Claudy,

mais non...tu compliques
sub test

TextBox1.Value = "Remplir le textbox" 'tout simplement :-))
end sub


Bernard ne remplit pas un TextBox mais une Shape.

Et il veut trouver le moyen de remplir le contenu de celle-ci en une seule
instruction qui remplacerait les deux suivantes:

Workbooks(Classeur).Sheets(Feuille).Shapes(MaZone).Select
Selection.Characters.Text = "Allo le monde"

Alors que celle-ci échoue (faudrait qu'on m'explique à moi aussi) :
Workbooks(Classeur).Sheets(Feuille) _
.Shapes(MaZone).Characters.Text = "Allo le monde"

En résumé, pourquoi devoir SELECTionner ?

Salutations,

Daniel M.





.





Avatar
michdenis
Bonsoir Daniel,

Celle-là aussi fonctionne :

Worksheets(1).Shapes("Zone de texte 1").OLEFormat.Object.Text = "allo"



Salutations!


"Daniel.M" a écrit dans le message de news:Ook4%
Merci (encore) Alain,

TextFrame!

C'est quand même spécial que, dans le cas où on sélectionne, on n'a pas besoin
d'invoquer explicitement cette attribut mais bon, ça résoud mon interrogation
fondamentale (une question existentielle de moins) :-)

Salutations,

Daniel M.

"Alain CROS" wrote in message
news:
Bonjour.

Les shapes sont assez compliqués.
Il faut écrire :
Workbooks(Classeur).Sheets(Feuille).Shapes(MaZone).TextFrame.Characters.Text "Allo le monde"

Alain CROS.


Avatar
michdenis
En supplément,

Doit-on sélectionner une zone de texte ou non ? Voici un exemple de code illustrant les 2 façons de faire :

'Sans sélectionner la zone de texte
'à remarquer que dans les 2 procédures que cette
'ligne de code : a = TypeName(T) renvoie : Textbox

Dim T As TextBox
Set T = Worksheets(1).Shapes("Zone de texte 1").OLEFormat.Object
a = TypeName(T)
T.Text = "denis"


Worksheets(1).Shapes("Zone de texte 1").Select
a = TypeName(Selection)
Selection.Text = "coucou"


Salutations!




"michdenis" a écrit dans le message de news:
Bonsoir Daniel,

Celle-là aussi fonctionne :

Worksheets(1).Shapes("Zone de texte 1").OLEFormat.Object.Text = "allo"



Salutations!


"Daniel.M" a écrit dans le message de news:Ook4%
Merci (encore) Alain,

TextFrame!

C'est quand même spécial que, dans le cas où on sélectionne, on n'a pas besoin
d'invoquer explicitement cette attribut mais bon, ça résoud mon interrogation
fondamentale (une question existentielle de moins) :-)

Salutations,

Daniel M.

"Alain CROS" wrote in message
news:
Bonjour.

Les shapes sont assez compliqués.
Il faut écrire :
Workbooks(Classeur).Sheets(Feuille).Shapes(MaZone).TextFrame.Characters.Text "Allo le monde"

Alain CROS.


Avatar
Bernard Rey
Doit-on sélectionner une zone de texte ou non ? Voici un
exemple de code illustrant les 2 façons de faire :


Est-ce parce que j'utilise Excel 2000 ? En tout cas,
aucune de ces méthodes ne fonctionne :

Dim T As TextBox
Set T = Worksheets(1).Shapes("MaZone").OLEFormat.Object


Là, j'obtiens une "Incompatibilité de type" !

a = TypeName(T)
T.Text = "denis"



Worksheets(1).Shapes("MaZone").Select


Cette fois, la Zone de Texte est bien sélectionnée

a = TypeName(Selection)


Réponse : a = "OLEObject" (jusqu'ici tout va bien)

Selection.Text = "coucou"


Message "Propriété ou Méthode non gérée par cet objet",
bref, comme d'hab :-/


Celle-là aussi fonctionne :

Worksheets(1).Shapes("MaZone").OLEFormat.Object.Text
= "allo"


La routine : "Propriété ou Méthode non gérée par cet objet"

Merci tout de même de ces essais.


En fait, la seule syntaxe qui fonctionne (du moins dans
mon cas) est celle proposée par Frédéric :

Sheets("MaFeuille").TextBox1.Value = "ce qu'on veut"

Note : cette syntaxe est tout de même étonnante, puisque
"TextBox1" est le nom effectif du contrôle. Il semble
impossible de le remplacer par une variable, comme ici
(échec garanti chez moi) :

MaVariable = "TextBox1"
Sheets("MaFeuille").MaVariable.Value = "n'importe"

Mais bon, c'est juste la curiosité. Au moins j'arrive à
faire remplir le formulaire en automatique, maintenant, je
ne vais pas me plaindre, c'était tout de même le but...

Encore merci à tous les intervenants, et toutes mes
excuses pour mon insistance naïve...

--
Bernard Rey - Toulouse

Avatar
Alain CROS
Bonjour.

Essaye comme ça.
Workbooks(Classeur).Sheets(Feuille).Shapes(MaZone).OLEFormat.Object.Object.Text = "NouvelleValeur"

Alain CROS.

"Bernard Rey" a écrit dans le message de news: e57f01c3f0ec$78f053f0$
Les shapes sont assez compliqués.
Il faut écrire :
Workbooks(Classeur).Sheets(Feuille).Shapes(MaZone).TextFrame.Characters.

Text = "Allo le monde"

Merci Alain, mais ça ne marche pas ça. C'est typiquement ce que j'ai tenté
tout l'après-midi sans succès. J'ai invariablement la même réponse :
"Propriété ou méthode non gérée par cet objet"... Ou alors il y a vraiment
quelque chose qui m'échappe ! Mais quoi ???

--
Bernard Rey - Toulouse


"Daniel.M" a écrit dans le message
de news: #

Claudy,

mais non...tu compliques
sub test

TextBox1.Value = "Remplir le textbox" 'tout simplement :-))
end sub


Bernard ne remplit pas un TextBox mais une Shape.

Et il veut trouver le moyen de remplir le contenu de celle-ci en une seule
instruction qui remplacerait les deux suivantes:

Workbooks(Classeur).Sheets(Feuille).Shapes(MaZone).Select
Selection.Characters.Text = "Allo le monde"

Alors que celle-ci échoue (faudrait qu'on m'explique à moi aussi) :
Workbooks(Classeur).Sheets(Feuille) _
.Shapes(MaZone).Characters.Text = "Allo le monde"

En résumé, pourquoi devoir SELECTionner ?

Salutations,

Daniel M.





.





Avatar
Bernard Rey
Essaye comme ça :
Workbooks(Classeur).Sheets(Feuille).Shapes
(MaZone).OLEFormat.Object.Object.Text = "NouvelleValeur"


Oui Alain ! Merci ! Comme ça ça marche. De plus, ça a
l'avantage (par rapport à la méthode indiquée par
Frédéric) de ne pas nécessiter l'activation du classeur.
Pas que ce soit dramatique, mais par certains côtés, c'est
tout de même plus "propre" comme ça ;-)

Encore merci (et encore merci à tous) !


--
Bernard Rey - Toulouse

Avatar
michdenis
Bonjour Bernard,

Le code que j'ai donné s'applique à une zone de texte ( zone de texte en provenance de la barre d'outils dessin ), si ton
"Textbox" est issu de la boîte à outils Contrôle, Alain Cross t'a donné un exemple de la ligne de code à utiliser.


Salutations!


"Bernard Rey" a écrit dans le message de news:eeef01c3f148$83f3fb10$
Doit-on sélectionner une zone de texte ou non ? Voici un
exemple de code illustrant les 2 façons de faire :


Est-ce parce que j'utilise Excel 2000 ? En tout cas,
aucune de ces méthodes ne fonctionne :

Dim T As TextBox
Set T = Worksheets(1).Shapes("MaZone").OLEFormat.Object


Là, j'obtiens une "Incompatibilité de type" !

a = TypeName(T)
T.Text = "denis"



Worksheets(1).Shapes("MaZone").Select


Cette fois, la Zone de Texte est bien sélectionnée

a = TypeName(Selection)


Réponse : a = "OLEObject" (jusqu'ici tout va bien)

Selection.Text = "coucou"


Message "Propriété ou Méthode non gérée par cet objet",
bref, comme d'hab :-/


Celle-là aussi fonctionne :

Worksheets(1).Shapes("MaZone").OLEFormat.Object.Text
= "allo"


La routine : "Propriété ou Méthode non gérée par cet objet"

Merci tout de même de ces essais.


En fait, la seule syntaxe qui fonctionne (du moins dans
mon cas) est celle proposée par Frédéric :

Sheets("MaFeuille").TextBox1.Value = "ce qu'on veut"

Note : cette syntaxe est tout de même étonnante, puisque
"TextBox1" est le nom effectif du contrôle. Il semble
impossible de le remplacer par une variable, comme ici
(échec garanti chez moi) :

MaVariable = "TextBox1"
Sheets("MaFeuille").MaVariable.Value = "n'importe"

Mais bon, c'est juste la curiosité. Au moins j'arrive à
faire remplir le formulaire en automatique, maintenant, je
ne vais pas me plaindre, c'était tout de même le but...

Encore merci à tous les intervenants, et toutes mes
excuses pour mon insistance naïve...

--
Bernard Rey - Toulouse

Avatar
Daniel.M
Alain,


Workbooks(Classeur).Sheets(Feuille).Shapes(MaZone).OLEFormat.Object.Object.Text

= "NouvelleValeur"

2 fois Object!?!
Taboire! Il va me falloir un cours sur la hierarchie des objets Excel! Surtout
en ce qui concerne les Shapes.

Merci bien,

Daniel M.

Avatar
Alain CROS
Bonjour.

Comme je le disais, les shapes sont assez compliqués.
Pour le cours, je crois qu'il faudra encore attendre.
Apparemment, les objets OLE issus de la barre d'outils Commande sont tous rassemblés dans un seul objet comportant de nombreux sous
objets.

Par contre, Taboire ?, c'est un HS spécial JPS ?

Alain CROS.

"Daniel.M" a écrit dans le message de news:
Alain,


Workbooks(Classeur).Sheets(Feuille).Shapes(MaZone).OLEFormat.Object.Object.Text

= "NouvelleValeur"

2 fois Object!?!
Taboire! Il va me falloir un cours sur la hierarchie des objets Excel! Surtout
en ce qui concerne les Shapes.

Merci bien,

Daniel M.






1 2 3