OVH Cloud OVH Cloud

qui utilise une macro

1 réponse
Avatar
phb56
Bonjour,

S.OLEFormat.Object.Name renvoie un nom du genre CommandButton1 qui est
le nom qui apparait dans la barre de formule lorsque le bouton est
sélectionné (=INCORPORER("Forms.CommandButton.1";"")) mais pas le
nom spécifié dans sa propriété Name (ex: btMonBouton) et repris
pour le nom de la procédure associée (ex: btMonBouton_Click)

Je ne trouve pas comment accèder à cette propriété.
Comment fais-tu pour trouver toutes ces infos ? L'aide, l'intellisence
et l'explorateur d'objets ne me proposent rien derrière Object.
C'est peut être que je suis en Excel97 ? C'est mieux documenté sur
les versions suivantes ?

1 réponse

Avatar
anomymousA
bonjour,

extrait de l'aide VBA sur les objets OLEObject (tu peux aussi regarder
l'aide sur "Utilisation des contrôles ActiveX dans uen feuille") :

Un contrôle ActiveX d'une feuille possède deux noms : le nom de la forme qui
contient le contrôle d'une part, que vous pouvez visualiser dans la zone Nom
lorsque la feuille est affichée, et le nom de code du contrôle d'autre part,
qui apparaît dans la cellule affichée à droite de (Nom) dans la fenêtre
Propriétés. Lorsque vous ajoutez un contrôle à une feuille pour la première
fois, le nom de la forme est identique au nom de code. Toutefois, la
modification de l'un de ces deux noms n'entraîne pas automatiquement la
modification de l'autre.

Vous utilisez le nom de code d'un contrôle dans les noms de ses procédures
événementielles. Toutefois, lorsque vous renvoyez un contrôle à partir de la
collection Shapes ou OLEObjects d'une feuille, vous devez utiliser le nom de
la forme et pas le nom de code pour faire référence au contrôle. Supposons,
par exemple, que vous ayez ajouté une case à cocher à une feuille et que
CheckBox1 soit à la fois le nom par défaut de la forme et le nom de code par
défaut. Si vous modifiez ensuite le nom de code du contrôle en tapant
chkFinished à côté de (Nom) dans la fenêtre Propriétés, vous devez utiliser
chkFinished dans les noms de procédures événementielles, mais continuer à
utiliser CheckBox1 pour renvoyer le contrôle à partir de la collection Shapes
ou OLEObject, comme l'illustre l'exemple suivant.

Private Sub chkFinished_Click()
ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1
End Sub

En réalité, ce n'est pas si clair que veut bien le dire l'aide VBA. Si je
nommes mon bouton CBTATA dans la zone Nom de la feuille, automatiquement, la
propriété nom du controle devient aussi CBTATA et vice et versa.
On dirait donc que nos amis de SEATTLE m'induisent en erreur ou peut-être
est-ce une réminiscence d'anciennes versions qui ne sont plus valides à
partir d'Excel 2000.

Par ailleurs, il n'y a pas au moins en Excel 2000, d'intellisense attaché à
Object.

a+


Bonjour,

S.OLEFormat.Object.Name renvoie un nom du genre CommandButton1 qui est
le nom qui apparait dans la barre de formule lorsque le bouton est
sélectionné (=INCORPORER("Forms.CommandButton.1";"")) mais pas le
nom spécifié dans sa propriété Name (ex: btMonBouton) et repris
pour le nom de la procédure associée (ex: btMonBouton_Click)

Je ne trouve pas comment accèder à cette propriété.
Comment fais-tu pour trouver toutes ces infos ? L'aide, l'intellisence
et l'explorateur d'objets ne me proposent rien derrière Object.
C'est peut être que je suis en Excel97 ? C'est mieux documenté sur
les versions suivantes ?