

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
3 messages in org.openoffice.fr.progRe: [prog] Fw: [users-fr] Gestion des...| From | Sent On | Attachments |
|---|---|---|
| Alpha BETA | Aug 5, 2004 11:58 pm | |
| Laurent Godard | Aug 6, 2004 12:09 am | |
| Alpha BETA | Aug 6, 2004 2:09 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: [prog] Fw: [users-fr] Gestion des messages d'Alerte Comment faire pour les désactiver? La solution en partie! | Actions... |
|---|---|---|
| From: | Alpha BETA (bet...@free.fr) | |
| Date: | Aug 6, 2004 2:09:20 am | |
| List: | org.openoffice.fr.prog | |
Grâce à Alain Nowak comme à Laurent Godard, j'ai pu résoudre mon problème.
Merci à eux!
J'en représente ici l'historique car je crois que ça devrait aider du monde.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Mon souci :
A la création d'un classseur sxc , récupérant les résultats d'une application
que je gère et dont les données doivent être retravaillées, j'ai besoin de
retirer deux des feuilles du classeur ( par défaut, il est créé 3 feuilles).
J'avais trouvé péniblement une méthode qui me permettait de réaliser cette tâche
mais qui réclamait une confirmation de suppression des feuilles 2 et 3 :
Sub NouvSxcSupp2F
' Suite à la création d'un nouveau classeur supprime les pages 2 et 3 ' variables nécessaires Dim document as object Dim dispatcher as object ' Document = ThisComponent.CurrentController.Frame Dispatcher = CreateUnoService("com.sun.star.frame.DispatchHelper") ' permet d'identifier le type de fichier en cours s'arrête si non calc If right(Thiscomponent.DocumentInfo.MimeType,4)<>"calc" then msgbox ("Cette fonction est spécifique à l'usage de classeur sxc." & _ string(2,13) & " Or vous n'avez pas à faire à un classeur sxc!",48, _ string(23,32) & _ "INTERRUPTION FORCEE DE L'EXECUTION DE LA MACRO NouvSxcSupp2F") Exit Sub End If ' selectionne toutes les feuilles du classeur sauf la première Dim args4(0) as new com.sun.star.beans.PropertyValue args4(0).Name = "Tables" args4(0).Value = Array(1,2) Dispatcher.ExecuteDispatch(Document, ".uno:SelectTables", "", 0, args4()) ' supprime les feuilles sélectionnées Dispatcher.ExecuteDispatch(Document, ".uno:Remove", "", 0, Array()) End Sub
------------------------------------------------------------------------------------------------------------------------------------------------------------------
A ma question , "Alain Nowak" <ano...@starxpert.fr> m'a répondu que :
Avec la méthode utilisant ExecuteDispatch, tu auras toujours le même
comportement que quand l'utilisateur fait la manip à la main. Mais il y a un
autre façon de faire, en manipulant directement les éléments avec l'API UNO.
Dans ton cas, ça donnerait quelque chose du genre (attention, code non testé) :
oSheets = ThisComponent.Sheets
nbFeuilles = oSheets.count
'Supprime toutes les feuilles sauf la première
for cpt=1 to nbFeuilles-1
oSheets.removeByIndex(cpt) ' voir à la fin
de ce mail mon observation
Next
Note : il vaut mieux poser ce type de question sur la liste dédié au
développement prog-fr.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
J'ai donc testé cette méthode et dans le même coup j'ai contacté la liste
développement
Alpha BETA a écrit :
Bonjour à tous,
Sous Microsoft, j'avais l'habitude en manipulant des classeurs excel de
supprimer les messages d'alertes, plutôt que de devoir cliquer sur OK après la
grande question "Etes-vous sûr?".
Sous OO , je n'y arrive pas du tout.
Avec Xray et le guide du programmeur, j'ai mis en évidence quelque chose du
genre :
.SetPropertyValue("ErrorAlertStyle",
com.sun.star.sheet.validationAlertStyle.stop)
Mais cela ne marche pas du moins j'ai pas trouvé le truc
Quelqu'un aurait-il la solution?
------------------------------------------------------------------------------------------------------------------------------------------------------------------- Pour réponse, "Laurent Godard" <list...@wanadoo.fr> m'a écrit :
Bonjour,
Comme Alain te l'a dit sur la liste Users@fr, l'utilisation du dispatch
(qui grossomodo ne reproduit que les evenement issus de l'interface de OOo)
entrainera systematiquement l'apparition des messages, comme si tu faisais la
manipulation en direct à la souris . Alain t'a fourni la macro equivalente pour
la suppression des feuilles sur la liste users.
Bon courage
laurent
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ce qui fait que pour l'instant je ne sais toujours pas comment désactiver ces
foutus messages de confirmation, à moins d'envoyer via VBS une entrée dans OO,
mais ce n'est pas évident.
Toutefois la méthode d'Alain n'est pas une mauvaise idée, bien qu'en l'état elle
NE FONCTIONNE PAS!!! (j'ai testé).
En fait .removeByIndex() n'est pas géré par OO pour les feuilles de classeur
(grâce à Xray 3.0 je suis affirmatif) . Par contre et grâce à Alain j'ai pu le
trouver .removeByname() qui lui fonctionne et ce sans aucune confirmation de
suppression. (Ouf!)
Ensuite c'était tout simple à faire , voici la solution, en attendant qui sait
peut-être mieux....
sub NouvSxcSupp2F
' macro faite le 4/08/04 par Christophe JOYAU T.S.I douanes
' Suite à la création d'un nouveau classeur supprime les pages 2 et 3
' Définie:
' Exécute:
' Modifie:
' Profite:
' Spécial:
' Utilise:
'******************************************************************************
' variables nécessaires
Dim document as object
Dim dispatcher as object
Dim args1(0) as new com.sun.star.beans.PropertyValue
Dim K as integer
' attributions
Document = ThisComponent.CurrentController.Frame
Dispatcher = CreateUnoService("com.sun.star.frame.DispatchHelper")
' permet d'identifier le type de fichier en cours s'arrête si non calc
If right(Thiscomponent.DocumentInfo.MimeType,4)<>"calc" then
msgbox ("Cette fonction est spécifique à l'usage de classeur sxc." & _
string(2,13) & " Or vous n'avez pas à faire à un classeur sxc!",48, _
string(23,32) & _
"INTERRUPTION FORCEE DE L'EXECUTION DE LA MACRO NouvSxcSupp2F")
Exit Sub
End If
' selectionne toutes les feuilles du classeur sauf la première
' première méthode réclamant une confirmation systématique
' que je n'arrive pas à compenser ni par une envoi de touche de type sendkey...
' ni par l'interruption des alertes
'args1(0).Name = "Tables"
'args1(0).Value = Array(1,2)
'Dispatcher.ExecuteDispatch(Document, ".uno:SelectTables", "", 0, args1())
' supprime les feuilles sélectionnées
'Dispatcher.ExecuteDispatch(Document, ".uno:Remove", "", 0, Array())
' renomme la feuille
'args1(0).Name = "Name"
'args1(0).Value = "Travail"
'Dispatcher.ExecuteDispatch(Document, ".uno:RenameTable", "", 0, args1())
' prépare le futur recepteur
'-----------------------------------------------------------------------------------------------------------------
' Voici désormais la solution pour éviter d'avoir à confimer des suppressions
de feuilles
oSheets = ThisComponent.Sheets
SheetNames = oSheets.getElementNames()
For K=LBound(SheetNames) To UBound(SheetNames)-1
osheets.removeByname(SheetNames(K+1))
Next K
'------------------------------------------------------------------------------------------------------------------
' renomme la feuille
'args1(0).Name = "Name"
'args1(0).Value = "Travail"
'Dispatcher.ExecuteDispatch(Document, ".uno:RenameTable", "", 0, args1())
End Sub







