Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Aide pour modif simple d'une ligne de code

4 réponses
Avatar
sophie
Bonsoir,

J'aurais besoin d'aide pour pouvoir faire évoluer cette ligne de code
ci-dessous.

ActiveSheet.Shapes("Rectangle 3").Select

Au lieu que la macro s'exécute pour "rectangle3", il faudrait qu'elle
s'exécute pour la forme automatique qui est sélectionnée.

Merci
Sophie

4 réponses

Avatar
michdenis
Bonjour Sophie,

As-tu essayé ceci :

Attention : Un rectangle qui est issu de la barre d'outils "Dessin" fait parti d'un regroupement appelé MsoTextbox.
si le contrôle est issu de la barre de dessin mais à partir de la commande "Formes automatiques", le regroupement s'appelle :
MsoAutoShape.
Dans ce dernier cas, l'exemple donné ne s'applique pas aux connecteurs pas exemple, car ils n'ont pas la propriété "Text".

Il faut alors activer la bonne ligne définissant la variable T
'-------------------------
Dim T As MsoShapeType
' T = msoAutoShape
T = msoTextBox

With ActiveSheet
If TypeName(Selection) <> "Range" Then
With .Shapes(Selection.Name)
If .Type = T Then
'Exemple : inscrire toto dans le contrôle
.OLEFormat.Object.Text = "toto"
End If
End With
End If
End With
'-------------------------


Salutations!



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

J'aurais besoin d'aide pour pouvoir faire évoluer cette ligne de code
ci-dessous.

ActiveSheet.Shapes("Rectangle 3").Select

Au lieu que la macro s'exécute pour "rectangle3", il faudrait qu'elle
s'exécute pour la forme automatique qui est sélectionnée.

Merci
Sophie
Avatar
sophie
Bonjour,

Je te remercie pour le code et surtout tes explications. Cela fonctionne.
Par contre, je me sens très bête mais je n'arrive pas comprendre l'exemple
en mettant TOTO dans le contrôle. Où puis-je mettre un nom sur ma forme et
quel action?

Bonne journée
Sophie
"michdenis" a écrit dans le message de news:

Bonjour Sophie,

As-tu essayé ceci :

Attention : Un rectangle qui est issu de la barre d'outils "Dessin" fait
parti d'un regroupement appelé MsoTextbox.
si le contrôle est issu de la barre de dessin mais à partir de la commande
"Formes automatiques", le regroupement s'appelle :
MsoAutoShape.
Dans ce dernier cas, l'exemple donné ne s'applique pas aux connecteurs pas
exemple, car ils n'ont pas la propriété "Text".

Il faut alors activer la bonne ligne définissant la variable T
'-------------------------
Dim T As MsoShapeType
' T = msoAutoShape
T = msoTextBox

With ActiveSheet
If TypeName(Selection) <> "Range" Then
With .Shapes(Selection.Name)
If .Type = T Then
'Exemple : inscrire toto dans le contrôle
.OLEFormat.Object.Text = "toto"
End If
End With
End If
End With
'-------------------------


Salutations!



"sophie" a écrit dans le message de news:

Bonsoir,

J'aurais besoin d'aide pour pouvoir faire évoluer cette ligne de code
ci-dessous.

ActiveSheet.Shapes("Rectangle 3").Select

Au lieu que la macro s'exécute pour "rectangle3", il faudrait qu'elle
s'exécute pour la forme automatique qui est sélectionnée.

Merci
Sophie





Avatar
anonymousA
Bonjour,

Dans l'exemple qui t'est donné, enlève le commentaire à ' T =
msoAutoShape et mets en commentaire l'instruction T = msoTextBox. Dans
ces conditions , la proc communiquée renverra toto dans le rectangle
sélectionné.
En effet, le rectangle obtenu depuis la barre d'outils dessin qu'il soit
issu de cette barre par le controle qui le symbolise ou par le sous-menu
Formes automatiques est de type msoAutoshape ( ou 1 ).
Par contre, si ce que tu appelles Rectangle ( mais ca m'étonnerait car
ton instruction Shapes("Rectangle 3") laisse supposer qu'il s'agit bien
d'un rectangle et non d'une zone de texte plutot dénominée
automatiquement par Excel Text Box N°x) est une zone de texte (de type
msoTextBox ( ou 17 )), alors il faut laisser telle quelle la proc
communiquée par Mich Denis.

A+

Bonjour,

Je te remercie pour le code et surtout tes explications. Cela fonctionne.
Par contre, je me sens très bête mais je n'arrive pas comprendre l'exemple
en mettant TOTO dans le contrôle. Où puis-je mettre un nom sur ma forme et
quel action?

Bonne journée
Sophie
"michdenis" a écrit dans le message de news:


Bonjour Sophie,

As-tu essayé ceci :

Attention : Un rectangle qui est issu de la barre d'outils "Dessin" fait
parti d'un regroupement appelé MsoTextbox.
si le contrôle est issu de la barre de dessin mais à partir de la commande
"Formes automatiques", le regroupement s'appelle :
MsoAutoShape.
Dans ce dernier cas, l'exemple donné ne s'applique pas aux connecteurs pas
exemple, car ils n'ont pas la propriété "Text".

Il faut alors activer la bonne ligne définissant la variable T
'-------------------------
Dim T As MsoShapeType
' T = msoAutoShape
T = msoTextBox

With ActiveSheet
If TypeName(Selection) <> "Range" Then
With .Shapes(Selection.Name)
If .Type = T Then
'Exemple : inscrire toto dans le contrôle
.OLEFormat.Object.Text = "toto"
End If
End With
End If
End With
'-------------------------


Salutations!



"sophie" a écrit dans le message de news:

Bonsoir,

J'aurais besoin d'aide pour pouvoir faire évoluer cette ligne de code
ci-dessous.

ActiveSheet.Shapes("Rectangle 3").Select

Au lieu que la macro s'exécute pour "rectangle3", il faudrait qu'elle
s'exécute pour la forme automatique qui est sélectionnée.

Merci
Sophie










Avatar
michdenis
Bonjour Sophie,

Insérer toto dans le contrôle "Rectangle" était simplement un exemple de ce qui est possible de réaliser avec le petit bout de code.
Si tu disais ce que tu veux faire avec ces contrôles, il y probablement moyen d'intervenir sans avoir à les sélectionner directement
!


Salutations!



"sophie" a écrit dans le message de news: %
Bonjour,

Je te remercie pour le code et surtout tes explications. Cela fonctionne.
Par contre, je me sens très bête mais je n'arrive pas comprendre l'exemple
en mettant TOTO dans le contrôle. Où puis-je mettre un nom sur ma forme et
quel action?

Bonne journée
Sophie
"michdenis" a écrit dans le message de news:

Bonjour Sophie,

As-tu essayé ceci :

Attention : Un rectangle qui est issu de la barre d'outils "Dessin" fait
parti d'un regroupement appelé MsoTextbox.
si le contrôle est issu de la barre de dessin mais à partir de la commande
"Formes automatiques", le regroupement s'appelle :
MsoAutoShape.
Dans ce dernier cas, l'exemple donné ne s'applique pas aux connecteurs pas
exemple, car ils n'ont pas la propriété "Text".

Il faut alors activer la bonne ligne définissant la variable T
'-------------------------
Dim T As MsoShapeType
' T = msoAutoShape
T = msoTextBox

With ActiveSheet
If TypeName(Selection) <> "Range" Then
With .Shapes(Selection.Name)
If .Type = T Then
'Exemple : inscrire toto dans le contrôle
.OLEFormat.Object.Text = "toto"
End If
End With
End If
End With
'-------------------------


Salutations!



"sophie" a écrit dans le message de news:

Bonsoir,

J'aurais besoin d'aide pour pouvoir faire évoluer cette ligne de code
ci-dessous.

ActiveSheet.Shapes("Rectangle 3").Select

Au lieu que la macro s'exécute pour "rectangle3", il faudrait qu'elle
s'exécute pour la forme automatique qui est sélectionnée.

Merci
Sophie