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

Execution Control et erreur 5

7 réponses
Avatar
manu
Bonjour,

Voici le pb que je rencontre et sur lequel isabelle a tent=E9 de m'aider
en vain:

En clickant sur un Shape rattach=E9 au module ci-dessous, un utilisateur
acc=E8de directement au r=E9glages "Couleurs et traits" de ce derrnier:

Public Sub FOND_Click()

Dim ShpFOND As Shape

ActiveSheet.Unprotect
Set ShpFOND =3D ActiveSheet.Shapes(Application.Caller)
ShpFOND.Select
Application.CommandBars("Worksheet Menu Bar").Controls("Format").
_
Controls("&Forme automatique...").Execute
'je ne sais dailleurs pas comment d=E9sactiver les autres onglets
ActiveSheet.Protect

End Sub

Mais la ligne Application.CommandBars me pose pb.
En effet, lorsque je n'ai pas "initi=E9" Excel =E0 ce menu...

en clickant avec ma souris sur le menu "Format" puis "Forme
automatique"

.=2E.Cette ligne de code cr=E9=E9 une erreur.

C'est vraiment =E9nervant, merci bcp si vous pouvez m'aider.

7 réponses

Avatar
MichDenis
Remplace la commande :

| Application.CommandBars("Worksheet Menu Bar").Controls("Format"). _
| Controls("&Forme automatique...").Execute

Par :

Application.CommandBars.FindControl(ID:x6).Execute

Cette commande ouvre ou ouvrira la fenêtre "Format automatique" seulement
et seulement si c'est une cellule qui est sélectionnée et non pas un objet comme
un graphe ou bouton de commande car la mise en forme s'adresse à une plage
de cellule. La cellule sélectionnée dans la feuille active doit être l'une des cellules
du tableau à mettre en forme.

Et pour tester que l'item sélectionné est bien une plage de cellules :

If TypeName(Selection) = "Range" Then
'Choisis une cellule du tableau de la feuille active à formater
Range("G25").Select
Application.CommandBars.FindControl(ID:x6).Execute
Else
MsgBox "L'objet sélectionné """ & TypeName(Selection) & _
""" n'est pas une plage de cellule valide."
End If

Dans ta procédure, tu sélectionnes un objet just' avant l'appel de la procédure :
ShpFOND.Select

Il ne faut pas te surprendre que tu aies des difficultés !!!!




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

Bonjour,

Voici le pb que je rencontre et sur lequel isabelle a tenté de m'aider
en vain:

En clickant sur un Shape rattaché au module ci-dessous, un utilisateur
accède directement au réglages "Couleurs et traits" de ce derrnier:

Public Sub FOND_Click()

Dim ShpFOND As Shape

ActiveSheet.Unprotect
Set ShpFOND = ActiveSheet.Shapes(Application.Caller)
ShpFOND.Select
Application.CommandBars("Worksheet Menu Bar").Controls("Format").
_
Controls("&Forme automatique...").Execute
'je ne sais dailleurs pas comment désactiver les autres onglets
ActiveSheet.Protect

End Sub

Mais la ligne Application.CommandBars me pose pb.
En effet, lorsque je n'ai pas "initié" Excel à ce menu...

en clickant avec ma souris sur le menu "Format" puis "Forme
automatique"

...Cette ligne de code créé une erreur.

C'est vraiment énervant, merci bcp si vous pouvez m'aider.
Avatar
manu
Bonjour Denis,

Control utilisé: Application.CommandBars("Worksheet Menu
Bar").Controls("Format").Controls("&Forme automatique...").

Le Control en question si tu regardes bien son libellé s'adresse bien
à une forme automatique et je ne cherche pas à règler le format d'une
Range.
D'ailleurs, la ligne la procédure fonctionne bien ...MAIS à la seule
condition d'avoir initialement effectué la manip à la souris !!!

Par contre, en utilisant la commande FindControl pour lister
l'ensemble des Control d'Excel, je n'arrive pas à trouver son ID et ça
c toujours ce même pb mais vu sous un autre angle.
Avatar
MichDenis
Ok, nous ne parlions pas de la même commande :

Le ID de la commande est : 791
la propriété caption est : "&Forme automatique..."

2 façons d'appeler la boîte de dialogue

a)
(cette manière de faire doit être appelé à partir de l'interface
de la feuille de calcul et non de la fenêtre VBA)
SendKeys "^{1}"
Shapes("NomDeLobject").Select


b) Celle que je préfère
Shapes("NomDeLobject").Select
Application.CommandBars.FindControl(ID:y1).Execute




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

Bonjour Denis,

Control utilisé: Application.CommandBars("Worksheet Menu
Bar").Controls("Format").Controls("&Forme automatique...").

Le Control en question si tu regardes bien son libellé s'adresse bien
à une forme automatique et je ne cherche pas à règler le format d'une
Range.
D'ailleurs, la ligne la procédure fonctionne bien ...MAIS à la seule
condition d'avoir initialement effectué la manip à la souris !!!

Par contre, en utilisant la commande FindControl pour lister
l'ensemble des Control d'Excel, je n'arrive pas à trouver son ID et ça
c toujours ce même pb mais vu sous un autre angle.
Avatar
manu
Merci Denis,

Mais avec l'instruction
Application.CommandBars.FindControl(ID:y1).Execute
Ca donne toujours la même erreur si je n'ai pas effectué la manip à la
souris au moins une fois depuis le dernier démarrage d'Excel.

Public Sub Modification_FOND(ShpFOND As Shape)

Dim Cel As Range

ActiveSheet.Unprotect
ShpFOND.Select

'*****1ère METHODE...ca marche pas
' With Selection
' Application.CommandBars("Worksheet Menu Bar"). _
' Controls("Format").Controls("&Forme automatique...").Execute
' End With

'*****2ème METHODE...ca marche pas non plus
' Application.CommandBars.FindControl(ID:y1).Execute

'*****3ème METHODE...ca marche pas du tout
SendKeys "^{1}"

ActiveSheet.Protect

End Sub

C très gentil à toi de t'être penché sur le pb.
Avatar
MichDenis
Un fichier exemple illustrant les 2 méthodes :

http://cjoint.com/?ivtVEHicz8



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

Merci Denis,

Mais avec l'instruction
Application.CommandBars.FindControl(ID:y1).Execute
Ca donne toujours la même erreur si je n'ai pas effectué la manip à la
souris au moins une fois depuis le dernier démarrage d'Excel.

Public Sub Modification_FOND(ShpFOND As Shape)

Dim Cel As Range

ActiveSheet.Unprotect
ShpFOND.Select

'*****1ère METHODE...ca marche pas
' With Selection
' Application.CommandBars("Worksheet Menu Bar"). _
' Controls("Format").Controls("&Forme automatique...").Execute
' End With

'*****2ème METHODE...ca marche pas non plus
' Application.CommandBars.FindControl(ID:y1).Execute

'*****3ème METHODE...ca marche pas du tout
SendKeys "^{1}"

ActiveSheet.Protect

End Sub

C très gentil à toi de t'être penché sur le pb.
Avatar
manu
Merci Denis,

J'ai bien pris note des 2 méthodes possibles.
Tu pourras d'ailleurs remarquer si tu effectues la série d'action
suivante ya plantage:
1/Lancer Excel
2/Ouvrir ton Classeur exemple
3/Clickez sur Méthode B

Bon WE
Avatar
MichDenis
Si tu as mis ta version Microsoft Office à jour....et que tu
continues à observer l'instabilité de la commande, c'est
que tu fais fasse à un "bug"... à part la commande lancée
par "Sendkeys" telle que je t'ai proposée, il n'y a pas
énormément de solutions qui s'offrent à toi !

Tu peux faire part de ce bug à Microsoft et pour te remercier
on t'offrira un de leurs plus beaux sourires.

;-))





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

Merci Denis,

J'ai bien pris note des 2 méthodes possibles.
Tu pourras d'ailleurs remarquer si tu effectues la série d'action
suivante ya plantage:
1/Lancer Excel
2/Ouvrir ton Classeur exemple
3/Clickez sur Méthode B

Bon WE