LibreOffice : Macro pour un bouton qui supprime plusieurs zones [Résolu]

Signaler
Messages postés
7
Date d'inscription
mercredi 14 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021
-
Messages postés
7
Date d'inscription
mercredi 14 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021
-
Bonjour,

Comme l'indique le titre, je recherche une macro que je pourrais assigner à un bouton, pour effacer le contenu de plusieurs sélections de cellules continues. Pour être précis, ici les zones seraient : Q7:Q5000 et T7:T5000

J'ai bien trouvé (en cherchant sur internet) plusieurs macro, mais impossible de les décrypter et de me les approprier dans mon cas de figure.

Toutefois j'ai bien réussi à en trouver une qui supprime une seule sélection (ça fonctionne nickel)… et la voici :

Sub EffaceSelection
Dim oSheet As Object, oRange As Object

oSheet = thisComponent.Sheets.getByName("Mercuriale")
oRange = oSheet.GetCellRangeByName ("Q7:Q5000")
oRange.clearContents(com.sun.star.sheet.CellFlags.VALUE OR _
com.sun.star.sheet.CellFlags.STRING OR _
com.sun.star.sheet.CellFlags.FORMULA)
End Sub


Mais si je rajoute une seconde sélection (voir ci-dessous) : seule la première est prise en compte : de Q7 à Q5000.

Sub EffaceSelection
Dim oSheet As Object, oRange As Object

oSheet = thisComponent.Sheets.getByName("Mercuriale")
oRange = oSheet.GetCellRangeByName ("Q7:Q5000","T7:T5000")
oRange.clearContents(com.sun.star.sheet.CellFlags.VALUE OR _
com.sun.star.sheet.CellFlags.STRING OR _
com.sun.star.sheet.CellFlags.FORMULA)
End Sub


Je suppose que mon erreur doit être de l'ordre de la syntaxe, sur la façon de séparer les différentes zones ? Mais j'ai beau tester avec une virgule, point-virgule, avec et sans espace… impossible.
À moins que cette formule ne puisse pas être adaptée pour plusieurs sélections ?

Merci d'avance à ceux qui prendront un moment pour m'aider :)


Configuration: Macintosh / Firefox 88.0

4 réponses

Messages postés
2340
Date d'inscription
lundi 2 juillet 2018
Statut
Membre
Dernière intervention
10 juin 2021
409
Bonsoir
macro a tester

Sub EffaceSelection
Dim oSheet As Object, oRange As Object

oSheet = thisComponent.Sheets.getByName("Mercuriale")
oRange = oSheet.GetCellRangeByName ("Q7:Q5000")
oRange.clearContents(com.sun.star.sheet.CellFlags.VALUE OR _
com.sun.star.sheet.CellFlags.STRING OR _
com.sun.star.sheet.CellFlags.FORMULA

oSheet = thisComponent.Sheets.getByName("Mercuriale")
oRange = oSheet.GetCellRangeByName ("T7:T5000")
oRange.clearContents(com.sun.star.sheet.CellFlags.VALUE OR _
com.sun.star.sheet.CellFlags.STRING OR _
com.sun.star.sheet.CellFlags.FORMULA

End Sub


Cordialement

Messages postés
7
Date d'inscription
mercredi 14 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

Merci beaucoup JCB40 ... c'est tout simplement parfait !!

Un grand merci aussi à ce forum, ça fait 2 fois qu'on m'aide sur un blocage de ce type... et vous ne vous rendez pas compte à quel point ça me change la vie :)

Je passe le sujet en "Résolu"
Merci encore JCB40 !!
Messages postés
7
Date d'inscription
mercredi 14 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

Aïe… un détail important me sape le morale par contre :/

La Macro qui fonctionne parfaitement bien sur mon PC (Win10 x64 - LibreOffice 7.1.2.2 x64), ne fonctionne pas sur mon MAC (OSX 10.13.6 - LibreOffice 7.0.5.2). Il ne se passe tout simplement rien quand je clic.

Autre info importante… bien que la Macro fonctionne sur mon PC, quand je viens éditer la Macro le logiciel m'ouvre une petite fenêtre avec un panneau rouge qui dit (sur PC comme sur MAC) :
Erreur de syntaxe BASIC.
Attendu : ).

Mais on peut cliquer sur OK pour passer outre.

Pensez-vous que le problème puisse être lié à la version de LibreOffice, ou à ce message d'erreur ?

Le souci est que je devrais rendre mon fichier compatible avec d'autres collaborateurs, qui seront peut-être aussi sur MAC. Le but serait de leur donner la méthode pour que ça fonctionne aussi chez eux.
Messages postés
7
Date d'inscription
mercredi 14 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

Désolé, j'ai enfin compris mon erreur à force de chercher sur le Web... les Marcos ne fonctionnaient plus simplement en raison d'un niveau de sécurité trop élevé, suite à l'utilisation de protection de feuille je pense.

En abaissant la sécurité des Macros, tout est rentré dans l'ordre.

Je repasse donc le sujet en "Résolu"

Et merci de supporter mon amateurisme ^^