OVH Cloud OVH Cloud

qui utilise une macro

8 réponses
Avatar
phb56
Bonjour Rai

merci pour ta réponse, elle m'a permis d'avancer.

je bloque encore sur 2 points:
1) je n'arrive pas à récupérer le texte du bouton (il n'a quelques
fois rien à voir avec son nom ou celle de la macro)
Sous ton instruction
If T = msoFormControl And N <> "" Then
j'ai placé
Ws.Shapes(N).Select
C = Selection.Characters.Text
et ça ne fonctionne pas

2) j'ai 2 types de boutons
a) des boutons auxquels j'accède par clic-droit / Affecter une macro:
ceux là apparaissent bien dans la liste

b) des boutons auxquels on n'accède qu'en mode création puis
clic-droit / propriétés
ceux là n'apparaissent pas dans la liste et je ne sais pas comment ils
ont été créés

des pistes ?

8 réponses

Avatar
anomymousA
bonjour,

tes 2 types de boutons peuvent être détectés de la manière suivante:
le 1er type (msoFormControl ou le nombre 8) est du type bouton de controle
généré par la barre d'outils "Formulaires tandis que le 2nd
(msoOLEControlObject ou le nombre 12) est du type Controle Active X.
Pour le 1er type de controles, c'est la propriété FormControlType qui te
permet de déterminer si c'est un bouton ou pas (les constantes suivantes sont
possibles: xlButtonControl, xlCheckBox, xlDropDown, xlEditBox, xlGroupBox,
xlLabel, xlListBox, xlOptionButton, xlScrollBar ou xlSpinner numérotés
succesivement de 0 à 9).
Dans le deuxième type de controle, le ProgID sert à detecter si ce controle
est un bouton de commande. En fonction de quoi, certaines propriétes peuvent
être réalisées, et notamment la propriété Caption qui donne la légende du
bouton

Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = msoFormControl Then
MsgBox "type controle" & s.FormControlType
MsgBox "nom controle" & s.Name
ElseIf s.Type = msoOLEControlObject And s.OLEFormat.Object.ProgId =
"Forms.CommandButton.1" Then
MsgBox s.OLEFormat.Object.Name
MsgBox ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object.Caption
End If
Next

A adapter pour les propriétés en fonction de ce que tu veux récupérer

A+


Bonjour Rai

merci pour ta réponse, elle m'a permis d'avancer.

je bloque encore sur 2 points:
1) je n'arrive pas à récupérer le texte du bouton (il n'a quelques
fois rien à voir avec son nom ou celle de la macro)
Sous ton instruction
If T = msoFormControl And N <> "" Then
j'ai placé
Ws.Shapes(N).Select
C = Selection.Characters.Text
et ça ne fonctionne pas

2) j'ai 2 types de boutons
a) des boutons auxquels j'accède par clic-droit / Affecter une macro:
ceux là apparaissent bien dans la liste

b) des boutons auxquels on n'accède qu'en mode création puis
clic-droit / propriétés
ceux là n'apparaissent pas dans la liste et je ne sais pas comment ils
ont été créés

des pistes ?



Avatar
anomymousA
re,

pour compléter mon envoi précédent, la réucpération de la légende du bouton
de type msoFormControl

Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = msoFormControl Then
If s.FormControlType = 0 Then
ActiveSheet.Shapes(s.Name).Select
texte = Selection.Characters.Text
MsgBox "nom controle" & s.Name & texte
End If
ElseIf s.Type = msoOLEControlObject And s.OLEFormat.Object.ProgId =
"Forms.CommandButton.1" Then
MsgBox s.OLEFormat.Object.Name
MsgBox ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object.Caption
End If
Next



bonjour,

tes 2 types de boutons peuvent être détectés de la manière suivante:
le 1er type (msoFormControl ou le nombre 8) est du type bouton de controle
généré par la barre d'outils "Formulaires tandis que le 2nd
(msoOLEControlObject ou le nombre 12) est du type Controle Active X.
Pour le 1er type de controles, c'est la propriété FormControlType qui te
permet de déterminer si c'est un bouton ou pas (les constantes suivantes sont
possibles: xlButtonControl, xlCheckBox, xlDropDown, xlEditBox, xlGroupBox,
xlLabel, xlListBox, xlOptionButton, xlScrollBar ou xlSpinner numérotés
succesivement de 0 à 9).
Dans le deuxième type de controle, le ProgID sert à detecter si ce controle
est un bouton de commande. En fonction de quoi, certaines propriétes peuvent
être réalisées, et notamment la propriété Caption qui donne la légende du
bouton

Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = msoFormControl Then
MsgBox "type controle" & s.FormControlType
MsgBox "nom controle" & s.Name
ElseIf s.Type = msoOLEControlObject And s.OLEFormat.Object.ProgId =
"Forms.CommandButton.1" Then
MsgBox s.OLEFormat.Object.Name
MsgBox ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object.Caption
End If
Next

A adapter pour les propriétés en fonction de ce que tu veux récupérer

A+


Bonjour Rai

merci pour ta réponse, elle m'a permis d'avancer.

je bloque encore sur 2 points:
1) je n'arrive pas à récupérer le texte du bouton (il n'a quelques
fois rien à voir avec son nom ou celle de la macro)
Sous ton instruction
If T = msoFormControl And N <> "" Then
j'ai placé
Ws.Shapes(N).Select
C = Selection.Characters.Text
et ça ne fonctionne pas

2) j'ai 2 types de boutons
a) des boutons auxquels j'accède par clic-droit / Affecter une macro:
ceux là apparaissent bien dans la liste

b) des boutons auxquels on n'accède qu'en mode création puis
clic-droit / propriétés
ceux là n'apparaissent pas dans la liste et je ne sais pas comment ils
ont été créés

des pistes ?





Avatar
Rai
Salut,

Une chtite question.

j'ai tenté un
texte=s.Characters.Text
mais j'ai l'impression que ça ne marche pas,
qu'il faut impérativement faire un SELECT
puis chercher le Characters.Text de la Selection

Peux-tu confirmer ?
Sais-tu pourquoi ?

Merci d'avance

Rai


re,

pour compléter mon envoi précédent, la réucpération de la légende du bouton
de type msoFormControl

Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = msoFormControl Then
If s.FormControlType = 0 Then
ActiveSheet.Shapes(s.Name).Select
texte = Selection.Characters.Text
MsgBox "nom controle" & s.Name & texte
End If
ElseIf s.Type = msoOLEControlObject And s.OLEFormat.Object.ProgId =
"Forms.CommandButton.1" Then
MsgBox s.OLEFormat.Object.Name
MsgBox ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object.Caption
End If
Next




bonjour,

tes 2 types de boutons peuvent être détectés de la manière suivante:
le 1er type (msoFormControl ou le nombre 8) est du type bouton de controle
généré par la barre d'outils "Formulaires tandis que le 2nd
(msoOLEControlObject ou le nombre 12) est du type Controle Active X.
Pour le 1er type de controles, c'est la propriété FormControlType qui te
permet de déterminer si c'est un bouton ou pas (les constantes suivantes sont
possibles: xlButtonControl, xlCheckBox, xlDropDown, xlEditBox, xlGroupBox,
xlLabel, xlListBox, xlOptionButton, xlScrollBar ou xlSpinner numérotés
succesivement de 0 à 9).
Dans le deuxième type de controle, le ProgID sert à detecter si ce controle
est un bouton de commande. En fonction de quoi, certaines propriétes peuvent
être réalisées, et notamment la propriété Caption qui donne la légende du
bouton

Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = msoFormControl Then
MsgBox "type controle" & s.FormControlType
MsgBox "nom controle" & s.Name
ElseIf s.Type = msoOLEControlObject And s.OLEFormat.Object.ProgId =
"Forms.CommandButton.1" Then
MsgBox s.OLEFormat.Object.Name
MsgBox ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object.Caption
End If
Next

A adapter pour les propriétés en fonction de ce que tu veux récupérer

A+



Bonjour Rai

merci pour ta réponse, elle m'a permis d'avancer.

je bloque encore sur 2 points:
1) je n'arrive pas à récupérer le texte du bouton (il n'a quelques
fois rien à voir avec son nom ou celle de la macro)
Sous ton instruction
If T = msoFormControl And N <> "" Then
j'ai placé
Ws.Shapes(N).Select
C = Selection.Characters.Text
et ça ne fonctionne pas

2) j'ai 2 types de boutons
a) des boutons auxquels j'accède par clic-droit / Affecter une macro:
ceux là apparaissent bien dans la liste

b) des boutons auxquels on n'accède qu'en mode création puis
clic-droit / propriétés
ceux là n'apparaissent pas dans la liste et je ne sais pas comment ils
ont été créés

des pistes ?







Avatar
Alain CROS
Bonjour

Sans sélectionner le control

' ActiveSheet.Shapes(S.Name).Select
' Texte = Selection.Characters.Text
MsgBox "nom controle: " & S.Name & " " & S.TextFrame.Characters.Text

Alain CROS

"Rai" a écrit dans le message de news:
Salut,

Une chtite question.

j'ai tenté un
texte=s.Characters.Text
mais j'ai l'impression que ça ne marche pas,
qu'il faut impérativement faire un SELECT
puis chercher le Characters.Text de la Selection

Peux-tu confirmer ?
Sais-tu pourquoi ?

Merci d'avance

Rai


re,

pour compléter mon envoi précédent, la réucpération de la légende du bouton
de type msoFormControl

Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = msoFormControl Then
If s.FormControlType = 0 Then
ActiveSheet.Shapes(s.Name).Select
texte = Selection.Characters.Text
MsgBox "nom controle" & s.Name & texte
End If
ElseIf s.Type = msoOLEControlObject And s.OLEFormat.Object.ProgId > > "Forms.CommandButton.1" Then
MsgBox s.OLEFormat.Object.Name
MsgBox ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object.Caption
End If
Next




bonjour,

tes 2 types de boutons peuvent être détectés de la manière suivante:
le 1er type (msoFormControl ou le nombre 8) est du type bouton de controle
généré par la barre d'outils "Formulaires tandis que le 2nd
(msoOLEControlObject ou le nombre 12) est du type Controle Active X.
Pour le 1er type de controles, c'est la propriété FormControlType qui te
permet de déterminer si c'est un bouton ou pas (les constantes suivantes sont
possibles: xlButtonControl, xlCheckBox, xlDropDown, xlEditBox, xlGroupBox,
xlLabel, xlListBox, xlOptionButton, xlScrollBar ou xlSpinner numérotés
succesivement de 0 à 9).
Dans le deuxième type de controle, le ProgID sert à detecter si ce controle
est un bouton de commande. En fonction de quoi, certaines propriétes peuvent
être réalisées, et notamment la propriété Caption qui donne la légende du
bouton

Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = msoFormControl Then
MsgBox "type controle" & s.FormControlType
MsgBox "nom controle" & s.Name
ElseIf s.Type = msoOLEControlObject And s.OLEFormat.Object.ProgId > >>"Forms.CommandButton.1" Then
MsgBox s.OLEFormat.Object.Name
MsgBox ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object.Caption
End If
Next

A adapter pour les propriétés en fonction de ce que tu veux récupérer

A+



Bonjour Rai

merci pour ta réponse, elle m'a permis d'avancer.

je bloque encore sur 2 points:
1) je n'arrive pas à récupérer le texte du bouton (il n'a quelques
fois rien à voir avec son nom ou celle de la macro)
Sous ton instruction
If T = msoFormControl And N <> "" Then
j'ai placé
Ws.Shapes(N).Select
C = Selection.Characters.Text
et ça ne fonctionne pas

2) j'ai 2 types de boutons
a) des boutons auxquels j'accède par clic-droit / Affecter une macro:
ceux là apparaissent bien dans la liste

b) des boutons auxquels on n'accède qu'en mode création puis
clic-droit / propriétés
ceux là n'apparaissent pas dans la liste et je ne sais pas comment ils
ont été créés

des pistes ?









Avatar
anomymousA
bonjour,

oui, je confirme.
c'est d'ailleurs assez étrange puisque ca invalide la transitivité si
habituelle pourtant dans VBA.C'est d'ailleurs d'autant plus étrange que dans
la définition de Characters, ce dernier objet ne s'applique normalement pas
aux objets shapes en tout cas dans les définitions de l'explorateur d'objets
et d'ailleurs l'intellisense ne te le porpose pas. Et pourtant il le fait
après sélection du shape.
Au final, je ne sais cependant pas pourquoi il faut absolument selectionner.


A+



Salut,

Une chtite question.

j'ai tenté un
texte=s.Characters.Text
mais j'ai l'impression que ça ne marche pas,
qu'il faut impérativement faire un SELECT
puis chercher le Characters.Text de la Selection

Peux-tu confirmer ?
Sais-tu pourquoi ?

Merci d'avance

Rai


re,

pour compléter mon envoi précédent, la réucpération de la légende du bouton
de type msoFormControl

Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = msoFormControl Then
If s.FormControlType = 0 Then
ActiveSheet.Shapes(s.Name).Select
texte = Selection.Characters.Text
MsgBox "nom controle" & s.Name & texte
End If
ElseIf s.Type = msoOLEControlObject And s.OLEFormat.Object.ProgId =
"Forms.CommandButton.1" Then
MsgBox s.OLEFormat.Object.Name
MsgBox ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object.Caption
End If
Next




bonjour,

tes 2 types de boutons peuvent être détectés de la manière suivante:
le 1er type (msoFormControl ou le nombre 8) est du type bouton de controle
généré par la barre d'outils "Formulaires tandis que le 2nd
(msoOLEControlObject ou le nombre 12) est du type Controle Active X.
Pour le 1er type de controles, c'est la propriété FormControlType qui te
permet de déterminer si c'est un bouton ou pas (les constantes suivantes sont
possibles: xlButtonControl, xlCheckBox, xlDropDown, xlEditBox, xlGroupBox,
xlLabel, xlListBox, xlOptionButton, xlScrollBar ou xlSpinner numérotés
succesivement de 0 à 9).
Dans le deuxième type de controle, le ProgID sert à detecter si ce controle
est un bouton de commande. En fonction de quoi, certaines propriétes peuvent
être réalisées, et notamment la propriété Caption qui donne la légende du
bouton

Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = msoFormControl Then
MsgBox "type controle" & s.FormControlType
MsgBox "nom controle" & s.Name
ElseIf s.Type = msoOLEControlObject And s.OLEFormat.Object.ProgId =
"Forms.CommandButton.1" Then
MsgBox s.OLEFormat.Object.Name
MsgBox ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object.Caption
End If
Next

A adapter pour les propriétés en fonction de ce que tu veux récupérer

A+



Bonjour Rai

merci pour ta réponse, elle m'a permis d'avancer.

je bloque encore sur 2 points:
1) je n'arrive pas à récupérer le texte du bouton (il n'a quelques
fois rien à voir avec son nom ou celle de la macro)
Sous ton instruction
If T = msoFormControl And N <> "" Then
j'ai placé
Ws.Shapes(N).Select
C = Selection.Characters.Text
et ça ne fonctionne pas

2) j'ai 2 types de boutons
a) des boutons auxquels j'accède par clic-droit / Affecter une macro:
ceux là apparaissent bien dans la liste

b) des boutons auxquels on n'accède qu'en mode création puis
clic-droit / propriétés
ceux là n'apparaissent pas dans la liste et je ne sais pas comment ils
ont été créés

des pistes ?










Avatar
Rai
Merci à vous 2 pour vos éclaircissements éclairés.
C'est bien seimple, j'ai l'impression d'en apprendre tous les jours.

Bonne soirée

Rai

bonjour,

oui, je confirme.
c'est d'ailleurs assez étrange puisque ca invalide la transitivité si
habituelle pourtant dans VBA.C'est d'ailleurs d'autant plus étrange que dans
la définition de Characters, ce dernier objet ne s'applique normalement pas
aux objets shapes en tout cas dans les définitions de l'explorateur d'objets
et d'ailleurs l'intellisense ne te le porpose pas. Et pourtant il le fait
après sélection du shape.
Au final, je ne sais cependant pas pourquoi il faut absolument selectionner.


A+




Salut,

Une chtite question.

j'ai tenté un
texte=s.Characters.Text
mais j'ai l'impression que ça ne marche pas,
qu'il faut impérativement faire un SELECT
puis chercher le Characters.Text de la Selection

Peux-tu confirmer ?
Sais-tu pourquoi ?

Merci d'avance

Rai




Avatar
anonymousA
bonjour,

on apprend toujours quelquechose avec toi, Alain.
Explique moi cependant quelque chose.
Pourquoi dans l'aide VBA, est-il stipulé que certaines propriétés sont
en lecture seule ( je m'y étais déjà fié , je crois pour le changement
du codename par Properties de VBComponent et il me semble que tu m'avais
corrigé sur ce point) alors qu'en réalité on peut écrire quelque chose
à la place.
As-tu une idée ou ai-je un problème de compréhension ?


A+

Bonjour

Sans sélectionner le control

' ActiveSheet.Shapes(S.Name).Select
' Texte = Selection.Characters.Text
MsgBox "nom controle: " & S.Name & " " & S.TextFrame.Characters.Text

Alain CROS

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

Salut,

Une chtite question.

j'ai tenté un
texte=s.Characters.Text
mais j'ai l'impression que ça ne marche pas,
qu'il faut impérativement faire un SELECT
puis chercher le Characters.Text de la Selection

Peux-tu confirmer ?
Sais-tu pourquoi ?

Merci d'avance

Rai



re,

pour compléter mon envoi précédent, la réucpération de la légende du bouton
de type msoFormControl

Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = msoFormControl Then
If s.FormControlType = 0 Then
ActiveSheet.Shapes(s.Name).Select
texte = Selection.Characters.Text
MsgBox "nom controle" & s.Name & texte
End If
ElseIf s.Type = msoOLEControlObject And s.OLEFormat.Object.ProgId >>>"Forms.CommandButton.1" Then
MsgBox s.OLEFormat.Object.Name
MsgBox ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object.Caption
End If
Next





bonjour,

tes 2 types de boutons peuvent être détectés de la manière suivante:
le 1er type (msoFormControl ou le nombre 8) est du type bouton de controle
généré par la barre d'outils "Formulaires tandis que le 2nd
(msoOLEControlObject ou le nombre 12) est du type Controle Active X.
Pour le 1er type de controles, c'est la propriété FormControlType qui te
permet de déterminer si c'est un bouton ou pas (les constantes suivantes sont
possibles: xlButtonControl, xlCheckBox, xlDropDown, xlEditBox, xlGroupBox,
xlLabel, xlListBox, xlOptionButton, xlScrollBar ou xlSpinner numérotés
succesivement de 0 à 9).
Dans le deuxième type de controle, le ProgID sert à detecter si ce controle
est un bouton de commande. En fonction de quoi, certaines propriétes peuvent
être réalisées, et notamment la propriété Caption qui donne la légende du
bouton

Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = msoFormControl Then
MsgBox "type controle" & s.FormControlType
MsgBox "nom controle" & s.Name
ElseIf s.Type = msoOLEControlObject And s.OLEFormat.Object.ProgId >>>>"Forms.CommandButton.1" Then
MsgBox s.OLEFormat.Object.Name
MsgBox ActiveSheet.OLEObjects(s.OLEFormat.Object.Name).Object.Caption
End If
Next

A adapter pour les propriétés en fonction de ce que tu veux récupérer

A+




Bonjour Rai

merci pour ta réponse, elle m'a permis d'avancer.

je bloque encore sur 2 points:
1) je n'arrive pas à récupérer le texte du bouton (il n'a quelques
fois rien à voir avec son nom ou celle de la macro)
Sous ton instruction
If T = msoFormControl And N <> "" Then
j'ai placé
Ws.Shapes(N).Select
C = Selection.Characters.Text
et ça ne fonctionne pas

2) j'ai 2 types de boutons
a) des boutons auxquels j'accède par clic-droit / Affecter une macro:
ceux là apparaissent bien dans la liste

b) des boutons auxquels on n'accède qu'en mode création puis
clic-droit / propriétés
ceux là n'apparaissent pas dans la liste et je ne sais pas comment ils
ont été créés

des pistes ?














Avatar
Alain CROS
Bonjour

Pas de réponse précise. Pour le CodeName, ce n'est pas la même propriété:
CodeName d'une part, _CodeName d'autre part.
Ce que je peux dire d'autre, F1, consulter ce groupe et certains sites ...
Dans l'explorateur d'objets, Click Droit, Afficher les membres masquées.

Alain CROS

"anonymousA" a écrit dans le message de news: 41fe9b73$0$19423$
bonjour,

on apprend toujours quelquechose avec toi, Alain.
Explique moi cependant quelque chose.
Pourquoi dans l'aide VBA, est-il stipulé que certaines propriétés sont
en lecture seule ( je m'y étais déjà fié , je crois pour le changement
du codename par Properties de VBComponent et il me semble que tu m'avais
corrigé sur ce point) alors qu'en réalité on peut écrire quelque chose
à la place.
As-tu une idée ou ai-je un problème de compréhension ?


A+