Execution Control et erreur 5

Le
manu
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4802441
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"
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.
manu
Le #4801811
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.
MichDenis
Le #4801511
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"
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.
manu
Le #4801251
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.
MichDenis
Le #4801101
Un fichier exemple illustrant les 2 méthodes :

http://cjoint.com/?ivtVEHicz8



"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.
manu
Le #4669851
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
MichDenis
Le #4798551
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"
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
Publicité
Poster une réponse
Anonyme