Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2012, 19h09   #1
Membre à l'essai
 
Homme Jean François Denes
Amateur
Inscription : juin 2010
Messages : 42
Détails du profil
Informations personnelles :
Nom : Homme Jean François Denes
Localisation : France

Informations professionnelles :
Activité : Amateur

Informations forums :
Inscription : juin 2010
Messages : 42
Points : 22
Points : 22
Par défaut Call Back pour

Bonjour,

Je suis en train de développer un ruban avec l'assistant de ARKHAM46 .
Mes Callbacks sont préfacés Ruban_ au lieu de Ribbon_

Dans le sub " Ruban_OnAction" j’appelle le SetRibbonTabFocus qui s'exécute correctement,

Code :
1
2
3
4
5
6
7
8
9
 
 
 Sub Ruban_OnAction(control As IRibbonControl)
...
    Select Case control.ID
...
           Case "Test"
                  Call SetRibbonTabFocus("Divers")
....
...
mais après exécution et selection du tab "divers", (comme demandé par l'appel au callback) le message Microsoft Office
Citation:
Access ne peut pas exécuter la macro ou la fonction callback "Ruban_OnAction"
s'affiche sans que je puisse l'intercepter sauf à utiliser
Code :
DoCmd.SetWarnings False
qui empêche l'affichage du message.

(Microsoft Office 12.0 Object Library est bien sélecté)

Y a-t-il quelque chose à faire pour éviter ce message autre que supprimer le warning ? de plus, ce message trahi-t-il une erreur de programmation?

Merci
JFDAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 18h50   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

Une piste possible ...

La signature de la fonction de rappel diffère selon le type du contrôle qui est à l'origine de l'appel.
Contrôle type button:
Code :
Sub OnAction(control As IRibbonControl)
Contrôle type checkBox:
Code :
Sub OnAction(control As IRibbonControl, pressed As Boolean)
Contrôle type dropDown:
Code :
Sub OnAction(control As IRibbonControl, selectedId As String, selectedIndex As Integer)
Contrôle type gallery:
Code :
Sub OnAction(control As IRibbonControl, selectedId As String, selectedIndex As Integer)
Contrôle type toggleButton:
Code :
Sub OnAction(control As IRibbonControl, pressed As Boolean)
Ta sub Ruban_OnAction est valable pour des boutons.
Mais si, par exemple, c'est une case à cocher (checkBox) qui l'appelle tu as le message d'erreur :
Citation:
Microsoft Office Access ne peut pas exécuter la macro ou fonction callback « nom_de_la_callback_appelée ».
Assurez-vous que celle-ci existe et que ses paramètres sont valides.
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 09h36   #3
Membre à l'essai
 
Homme Jean François Denes
Amateur
Inscription : juin 2010
Messages : 42
Détails du profil
Informations personnelles :
Nom : Homme Jean François Denes
Localisation : France

Informations professionnelles :
Activité : Amateur

Informations forums :
Inscription : juin 2010
Messages : 42
Points : 22
Points : 22
Merci,

Mais dans le cas cité il s'agit d'une réponse à un Contrôle type button.

Dans la mesure où avec le switch du SetWarnings à False, le "problème" semble contourné.

Reste la question est-ce une erreur de ma part ou un "bug" ?

JF Denes
JFDAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 19h12   #4
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

J'ai fait un essai en utilisant la fonction SetRibbonTabFocus d'Arkham46.
Je n'ai pas de message d'erreur.
Si tu veux jeter une œil : tstRibbonOnAction.zip

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2012, 11h17   #5
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 104
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 104
Points : 8 731
Points : 8 731
Bonjour,

Tu ne créer pas un appel de ce sub sur activation de l'onglet, ce qui te donnerais un circulaire de la fonction ?
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2012, 15h03   #6
Membre à l'essai
 
Homme Jean François Denes
Amateur
Inscription : juin 2010
Messages : 42
Détails du profil
Informations personnelles :
Nom : Homme Jean François Denes
Localisation : France

Informations professionnelles :
Activité : Amateur

Informations forums :
Inscription : juin 2010
Messages : 42
Points : 22
Points : 22
Bonjour,

Et Merci à LedZepII et Dolphy35,
  • Pour Dolphy35, non il n'y a pas de référence circulaire, qui aurait sans doute donné un blocage en attendant Ctl Pause je suppose
  • LedZeppII,

L'exemple est parfait pour ce test,
Je l'ai installé dans ma config d'Office 2007/System7,
Le switch des onglets marche, le bouton fait bien "Clic"... malheureusement je reçois toujours le même message, en appuyant sur la case à cocher dans "Mon 2ème Onglet"!
J'ai cru avoir trouvé car dans le code la case n'était pas testée, tout fier, j'ai donc rajouté le code pour cbxTab1-Gp1-001. Mais même cause, même punition,

Ci dessous le code rajouté : de fait actuellement inutile car le programme s’arrête avant et ne va pas jusque là. Il ne rentre pas dans la procédure.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
' Sur Action
Sub ribTest_onAction(control As IRibbonControl)
Select Case control.ID
    Case "btnTab1-Gp1-001"
         Call SetRibbonTabFocus("Mon 2e Onglet")
    Case "btnTab2-Gp1-001"
         Call SetRibbonTabFocus("Mon Onglet")
    Case "btnTab2-Gp1-002"
         MsgBox "Clic", , control.ID
    Case "cbxTab1-Gp1-001"
         MsgBox "Clac", , control.ID
End Select
End Sub
J'ai joins une copie d'écran en fichier attaché, car je n'arrive pas a intégrer l'image dans le texte avec l'icône "insérer une image"

Je suppose donc qu'il s'agit d'un problème d'installation d'Access (ou Office ?) si cela marche dans d'autres configurations.
Images attachées
Type de fichier : gif Bug Ruban.gif (35,1 Ko, 3 affichages)
JFDAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2012, 15h28   #7
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

Désolé, j'ai laissé dans ma base exemple, une erreur créée volontairement.
A savoir, assigner à une case à cocher une fonction de rappel onAction destinée à des boutons.
Cela produit une erreur car la sub attendue pour le onAction d'une case à cocher a un argument supplémentaire.
C'était l'objet de ma première réponse.

En résumé, concernant ma base exemple.
Ce qui ne fonctionne pas :
Code xml :
1
2
                <button id="btnTab1-Gp1-001" label="Mon 2e Onglet" onAction="ribTest_onAction" />
                <checkBox id="cbxTab1-Gp1-001" label="Case à cocher" onAction="ribTest_onAction" />
Code :
1
2
3
4
5
6
7
8
' Sur Action
Sub ribTest_onAction(control As IRibbonControl)
Select Case control.ID
    Case "btnTab1-Gp1-001"
         Call SetRibbonTabFocus("Mon 2e Onglet")
    ' ...
End Select
End Sub
Ça ne fonctionne pas car j'ai une seule sub onAction pour des boutons et des cases à cocher.

Ce qui fonctionne :
Code xml :
1
2
                <button id="btnTab1-Gp1-001" label="Mon 2e Onglet" onAction="ribTest_onAction" />
                <checkBox id="cbxTab1-Gp1-001" label="Case à cocher" onAction="ribTest_onActionCbx" />
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
' Sur Action
Sub ribTest_onAction(control As IRibbonControl)
Select Case control.ID
    Case "btnTab1-Gp1-001"
         Call SetRibbonTabFocus("Mon 2e Onglet")
    ' ...
End Select
End Sub
 
' Sur Action Case à cocher
Sub ribTest_onActionCbx(control As IRibbonControl, pressed As Boolean)
Select Case control.ID
    Case "cbxTab1-Gp1-001"
         MsgBox "Pressed = " & pressed, , control.ID
End Select
End Sub
J'ai une sub onAction pour répondre au boutons et une autre sub onAction pour répondre aux cases à cocher.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2012, 15h54   #8
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
J'ai modifié la base exemple : tstRibbonOnAction.zip
Il y a maintenant une case à cocher qui fonctionne et une qui génère l'erreur, objet de cette discussion.
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2012, 08h52   #9
Membre à l'essai
 
Homme Jean François Denes
Amateur
Inscription : juin 2010
Messages : 42
Détails du profil
Informations personnelles :
Nom : Homme Jean François Denes
Localisation : France

Informations professionnelles :
Activité : Amateur

Informations forums :
Inscription : juin 2010
Messages : 42
Points : 22
Points : 22
Merci pour le temps passé et la pédagogie de la réponse!

JF Denes
JFDAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h29.


 
 
 
 
Partenaires

Hébergement Web