Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

[LibreOffice][Calc][BASIC] Afficher une forme avec une macro


Sujet :

OpenOffice & LibreOffice

  1. #1
    Candidat au Club
    [LibreOffice][Calc][BASIC] Afficher une forme avec une macro
    Bonjour à toutes et à tous,

    Voici la description du problème minimal auquel je suis confrontée :
    Je souhaiterais pouvoir afficher ou masquer une forme géométrique (par exemple un rectangle que j'aurais précédemment dessiné avec l'outil Dessin) en cliquant sur un bouton.

    Je n'arrive pas, dans mon programme, à sélectionner mon rectangle avec une action du type getbyname.

    Savez-vous quelle à quel niveau les formes géométriques sont positionnées ? Au niveau de la feuille ? Au niveau de la DrawPage ? Au niveau du formulaire ?

    Mon problème c'est qu'en réalité, je veux en faire afficher des dizaines... j'ai essayé au départ avec des contrôle picto vides à afficher ou masquer avec EnableVisible, mais ils clignotent et Calc rame beaucoup lorsque je lance ma macro qui les affiche ou les masque.

    Après de nombreuses recherches, ce problème de clignotement des contrôles est un problème récurrent sous LibreOffice pour lequel il n'y a pas vraiment de solution.
    C'est la raison pour laquelle je souhaiterais remplacer ces contrôles picto par des rectangles tout simples.

    Merci beaucoup,
    Bien cordialement,

    Noëlie

  2. #2
    Membre actif
    Afficher une forme avec une macro
    Bonjour,

    Un petit exemple qui permet de retrouver une forme et de l'afficher ou de la masquer.

    Cordialement

    Libre Office Version: 6.4.6.2 (x64)
    Windows 10

  3. #3
    Candidat au Club
    Ca ne fonctionne pas dans mon classeur principal
    EDIT :
    Lorsque j'essaie sur une nouvelle feuille de calcul, cela fonctionne, mais pas dans le classeur que j'utilise dans mon projet.

    J'ai ajouté un rectangle sur la feuille de calcul qui s'appelle "Rectangle".

    La macro que j'utilise pour tester est la suivante (en ayant biensur ajouté à la suite la fonction que vous m'avez gentiment envoyé) :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Sub afficherRectangle
    	Dim Doc as Object
    	Dim Sheet as Object
    	Dim Page as Object
    	Dim nom as string
    	Dim Forme as Object
     
    	Doc = thisComponent
     	Sheet = Doc.getSheets.getByName("Feuil1")
     	Page = Sheet.DrawPage
     
     	nom="Rectangle"
     
     	Forme = FindObjectByName(Page, nom)
     
    	if isnull(Forme) then
    		msgbox("Erreur")
    	endif
     
    end sub


    Et ça ne fonctionne pas, j'obtiens systématiquement la MsgBox.

    C'est comme si ce rectangle appelé "Rectangle" ne faisait pas partie de la Drawpage.
    Pourtant, lorsque je regarde dans le navigateur, je vois bien mon rectangle appelé "Rectangle" dans la liste des objets de dessins.

    Je vous mets le programme en PJ, des fois que ça puisse aider. La subroutine s'appelle AfficherRectangle, elle est dans le Module 1, est est liée au bouton "Afficher Rectangle" situé sur la "Feuil1".

    Merci beaucoup !

    Bien cordialement,
    Noêlie

  4. #4
    Candidat au Club
    Option VBASupport 1
    Je viens de comprendre pourquoi ça ne fonctionnait pas dans mon projet, c'est à cause de la ligne :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Option VBASupport 1


    que j'ai mise au début de mon projet...

    Le programme que vous m'avez envoyé fonctionne très bien, dès lors que l'on n'ajoute pas cette option de support VBA.

    Auriez-vous une solution à cela ?

    Vous remerciant,
    Bien cordialement,

    Noëlie

  5. #5
    Membre actif
    Option VBASupport 1
    Bonjour
    De mon côté, j'ai aussi constaté cela.

    Le problème est que tu utilises du code VBA (Visual Basic pour Applications) prévu pour Excel. L'utilisation de "VBASupport 1" permet une certaine compatibilité entre ce langage et le Basic d'OpenOffice et de LibreOffice. Mais cela a certaines limites et ce mode induit des changements dans le comportement des instructions du Basic OpenOffice ou LibreOffice.

    En effet les deux langages sont différents. Il existe bien dans OpenOffice ou LibreOffice un interpréteur de VBA pour MS-Excel mais il est loin d'être parfait.

    La seule solution pour avoir un projet qui fonctionne correctement est de réécrire ton code VBA en Basic.
    J'ai rapidement parcouru ton projet et les changements nécessaires se portent sur le code concernant les feuilles, cellules ou plages de cellules.

    Cordialement
    Libre Office Version: 6.4.6.2 (x64)
    Windows 10

###raw>template_hook.ano_emploi###