[Résolu] [Calc] Interrompre un évènement de personnalisation
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- Fraîchement OOthentifié
- Messages : 5
- Inscription : 06 juin 2013 08:23
[Résolu] [Calc] Interrompre un évènement de personnalisation
Bonjour
Dans un calc, je veux faire un contrôle avant enregistrement par macro du contenu de la feuille. J'ai donc affecté une macro à l'évènement 'Enregistrement le document'.
Si l'information n'est pas correcte, je voudrais que la sauvegarde ne se fasse pas. Comment peut-on arrêter l'évènement ?
Par avance, merci
Dans un calc, je veux faire un contrôle avant enregistrement par macro du contenu de la feuille. J'ai donc affecté une macro à l'évènement 'Enregistrement le document'.
Si l'information n'est pas correcte, je voudrais que la sauvegarde ne se fasse pas. Comment peut-on arrêter l'évènement ?
Par avance, merci
Dernière modification par lawrence le 05 juil. 2013 01:20, modifié 1 fois.
Raison : Ajout de la Balise [Résolu] et de la coche verte
Raison : Ajout de la Balise [Résolu] et de la coche verte
OpenOffice 3.3 windows 7
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Interrompre un évènement de personnalisation
Salut,
L'instruction Exit est ton amie.
Regarde l'aide F1 sur le sujet et les exemples sur le forum.
L'instruction Exit est ton amie.
Regarde l'aide F1 sur le sujet et les exemples sur le forum.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Améliorez AOO et votez pour les issues
-
- Fraîchement OOthentifié
- Messages : 5
- Inscription : 06 juin 2013 08:23
Re: [Calc] Interrompre un évènement de personnalisation
Merci pour la réponse et désolé pour la balise.
J'ai mis Exit dans ma macro, mais l'évènement d'enregistrement s'effectue quand même.
J'ai mis Exit dans ma macro, mais l'évènement d'enregistrement s'effectue quand même.
OpenOffice 3.3 windows 7
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Interrompre un évènement de personnalisation
Effectivement, l'événement lance la macro puis exécute l'action.
Il faut donc intercepter l'enregistrement au niveau du Dispatcher.
Mais là, c'est une autre paire de manche.
Quelques ressources en anglais : http://wiki.openoffice.org/wiki/Documen ... terception
Une traduction est la bienvenue qui sera à publier ensuite dans la partie Enrichissez la documentation
Il faut donc intercepter l'enregistrement au niveau du Dispatcher.
Mais là, c'est une autre paire de manche.
Quelques ressources en anglais : http://wiki.openoffice.org/wiki/Documen ... terception
Une traduction est la bienvenue qui sera à publier ensuite dans la partie Enrichissez la documentation
-
- ManitOOu
- Messages : 3028
- Inscription : 30 avr. 2011 23:08
- Localisation : Casablanca (Maroc)
Re: [Calc] Interrompre un évènement de personnalisation
Bonjour,
Houla... Je pense avoir un bon niveau en anglais et en informatique, mais je dois reconnaître que là, je suis un peu dépassé
Il serait plus évident, pour le fichier en question (pas pour Calc bien sûr ), de rediriger les commandes d'enregistrement normales (menus, raccourcis et boutons) vers une macro qui ferait la vérification et, selon le cas, l'enregistrement. Ou carrément les inhiber/supprimer et déclencher la macro par un bouton.
Houla... Je pense avoir un bon niveau en anglais et en informatique, mais je dois reconnaître que là, je suis un peu dépassé
Il serait plus évident, pour le fichier en question (pas pour Calc bien sûr ), de rediriger les commandes d'enregistrement normales (menus, raccourcis et boutons) vers une macro qui ferait la vérification et, selon le cas, l'enregistrement. Ou carrément les inhiber/supprimer et déclencher la macro par un bouton.
Ajout : Précision, les raccourcis ne peuvent pas être commodément modifiés au niveau du document... |
À bientôt
LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.
Et la sauvegarde incrémentée, c'est sympa !
LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.
Et la sauvegarde incrémentée, c'est sympa !
-
- Fraîchement OOthentifié
- Messages : 5
- Inscription : 06 juin 2013 08:23
Re: [Calc] Interrompre un évènement de personnalisation
Bonjour,
Merci pour vos réponses. Je vois donc qu'il n'y a pas de solution simple.
J'avais bien pensé à la sulotion proposé par alhazred, mais il reste le problème de la fermeture par la croix. Si l'utilisateur choisit enregistrer sur le message affiché, la sauvegarde classique va se faire sans passer par la macro.
Merci pour vos réponses. Je vois donc qu'il n'y a pas de solution simple.
J'avais bien pensé à la sulotion proposé par alhazred, mais il reste le problème de la fermeture par la croix. Si l'utilisateur choisit enregistrer sur le message affiché, la sauvegarde classique va se faire sans passer par la macro.
OpenOffice 3.3 windows 7
-
- InconditiOOnnel
- Messages : 839
- Inscription : 10 janv. 2009 08:05
Re: [Calc] Interrompre un évènement de personnalisation
Bonjour,
ayant une grade habitude de rencontrer des obstacles incontournables pour moi, je propose de le contourner en rechargeant l'ancienne version si la vérification n'est pas satisfaisante. Il suffit pour cela de:
on peut peut-être aussi utiliser un modèle qui, justement, permet d'éviter les modifications malencontreuses (mais alors, on aurait quelque(s) document(s) inutile(s) encombrant le disque dur).
Pas le temps de tester tout ça ce dimanche soir.
Par ailleurs, Spyre m'avait indiqué il y a quelques temps déjà, la façon de modifier les raccourcis pour seulement le document en cours. je ne retrouve pas son message, mais je peux fournir ma version de ses indications à tout demandeur.
A plus, Joël
ayant une grade habitude de rencontrer des obstacles incontournables pour moi, je propose de le contourner en rechargeant l'ancienne version si la vérification n'est pas satisfaisante. Il suffit pour cela de:
Code : Tout sélectionner
ThisComponent.setModified(False) ' pour éviter une demande de confirmation
Dispatcher = CreateUnoService("com.sun.star.frame.DispatchHelper")
Dispatcher.ExecuteDispatch(oFrame, ".uno:Reload, "", 0, Array())
Pas le temps de tester tout ça ce dimanche soir.
Par ailleurs, Spyre m'avait indiqué il y a quelques temps déjà, la façon de modifier les raccourcis pour seulement le document en cours. je ne retrouve pas son message, mais je peux fournir ma version de ses indications à tout demandeur.
A plus, Joël
A jour de LibreOffice et de Ubuntu
-
- Fraîchement OOthentifié
- Messages : 5
- Inscription : 06 juin 2013 08:23
Re: [Calc] Interrompre un évènement de personnalisation
Bonjour
Merci Joël, mais ta solution me parait un peu radical, car on perd toutes les modifs depuis le dernier enregistrement. Je pense que je vais faire une croix sur cette option.
Par contre Joël, la fonction de modifier les raccourcis pour seulement le document en cours pourrait m'intéresser. Peux-tu me fournir la version comme tu l'as proposé ? Par avance, merci.
Merci Joël, mais ta solution me parait un peu radical, car on perd toutes les modifs depuis le dernier enregistrement. Je pense que je vais faire une croix sur cette option.
Par contre Joël, la fonction de modifier les raccourcis pour seulement le document en cours pourrait m'intéresser. Peux-tu me fournir la version comme tu l'as proposé ? Par avance, merci.
OpenOffice 3.3 windows 7
-
- InconditiOOnnel
- Messages : 839
- Inscription : 10 janv. 2009 08:05
Re: [Calc] Interrompre un évènement de personnalisation
Bonjour,
ma solution n'est pas si radicale que cela: 1) on sauvegarde la version modifiée 2) on recharge la version précédente 3) on remet la version modifiée (et on fait le ménage sur le disque dur) 4) on laisse le processus initié par l'utilisateur suivre son cours: mais là, c'est vraiment du bidouillage!
Pour l'affectation de nouvelles touches de raccourcis pour le document en cours, je joins le code comme convenu
Toutefois, je me demande s'il ne vaudrait pas mieux ouvrir un nouveau fil puisque ce code n'a pas de rapport avec le titre de la question.
A plus, Joël
ma solution n'est pas si radicale que cela: 1) on sauvegarde la version modifiée 2) on recharge la version précédente 3) on remet la version modifiée (et on fait le ménage sur le disque dur) 4) on laisse le processus initié par l'utilisateur suivre son cours: mais là, c'est vraiment du bidouillage!
Pour l'affectation de nouvelles touches de raccourcis pour le document en cours, je joins le code comme convenu
Code : Tout sélectionner
' Code très largement inspiré d'une réponse faite par Spyre sur le forum, réponse que je ne retrouve plus!
oDocShortCutMgr = ThisComponent.getUIConfigurationManager.getShortCutManager 'raccourcis au niveau document
For I = 0 To UBound(jdMacros)
jdMacros(I) = "vnd.sun.star.script:JDMath.MetMath." & jdMacros(I) & "?language=Basic&location=application"
'jdMacros(I) contient la macro à déclencher par raccourci
'jdLettres(I) contient le code de la touche affectée au raccourci
'par exemple jdLettres(0) = com.sun.star.awt.Key.A pour la lettre "A"
With aKeyEvent
.KeyCode = jdLettres(I)
End With
On Error Resume Next ' CommandByKeyEvent renvoie une erreur si aKeyEvent n'est pas affectée
sLocCommand = oDocShortCutMgr.getCommandByKeyEvent(aKeyEvent)
On Error GoTo 0
Select Case sLocCommand
Case ""
oDocShortCutMgr.setKeyEvent(aKeyEvent, jdMacros(I))
Case jdMacros(I) ' aKeyEvent est déjà affectée à notre commande
Case Else ' aKeyEvent est déjà affectée à une autre commande
oDocShortCutMgr.removeKeyEvent(aKeyEvent)
oDocShortCutMgr.setKeyEvent(aKeyEvent, jdMacros(I))
End Select
sLocCommand = "" ' ne se remet pas toujours à "" à cause du On Error
Next
Ajout : la modification des raccourcis n'est pas enregistrée avec le document: il faut donc les réaffecter à chaque ouverture du documet |
Ajout : à 17h12: j'ai ajouté une ligne au code pour définir la variable objet oDocShortCutMgr malheureusement zapée dans le copier-coller |
Dernière modification par joel275 le 10 juin 2013 15:14, modifié 1 fois.
A jour de LibreOffice et de Ubuntu
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Interrompre un évènement de personnalisation
Sur la base du travail de ms777 qui l'a lui-même piqué à Paolo Montavi sur le forum anglophone.
Le classeur ci-dessous empêche la sauvegarde tant qu'une cellule n'a pas la bonne valeur. A utiliser avec prudence car tous les cas ne sont pas gérés et on a vite de se retrouver avec un logiciel hors de contrôle.
Le classeur ci-dessous empêche la sauvegarde tant qu'une cellule n'a pas la bonne valeur. A utiliser avec prudence car tous les cas ne sont pas gérés et on a vite de se retrouver avec un logiciel hors de contrôle.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- InconditiOOnnel
- Messages : 839
- Inscription : 10 janv. 2009 08:05
Re: [Calc] Interrompre un évènement de personnalisation
Bonjour,
Super!! Mais, euh!, comment dire? Sans vouloir abuser, quelques commentaires explicatifs (même beaucoup) seraient les bienvenus.
A plus, Joël
Super!! Mais, euh!, comment dire? Sans vouloir abuser, quelques commentaires explicatifs (même beaucoup) seraient les bienvenus.
A plus, Joël
A jour de LibreOffice et de Ubuntu
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Interrompre un évènement de personnalisation
Oui, je l'ai mentionné plus haut, une francisation de la documentation du Wiki est à faire.joel275 a écrit :Sans vouloir abuser, quelques commentaires explicatifs (même beaucoup) seraient les bienvenus.
Le travail est en cours : http://forum.openoffice.org/fr/forum/vi ... 37&t=39081
-
- Fraîchement OOthentifié
- Messages : 5
- Inscription : 06 juin 2013 08:23
Re: [Calc] Interrompre un évènement de personnalisation
Merci à Joël, pour son extrait de code et merci à Dude pour le fichier d'exemple. Je vais étudié tout ça tranquillement.
OpenOffice 3.3 windows 7