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 :

Macro calculate sous CALC ? Possible ?


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre à l'essai
    Macro calculate sous CALC ? Possible ?
    Bonjour,

    Je souhaiterais savoir s'il est possible dans libreoffice calc de ne calculer qu'une plage de cellule définie ?
    En effet, j'ai plein de formules réparties sur plusieurs onglets et le calcul automatique prend beaucoup de temps.
    Sous excel en macro VBA il y avait le "calculate" mais quid en basic sous calc ? Je n'ai rien trouvé.

    Une idée ?

    Merci !

  2. #2
    Membre éclairé
    Bonjour alucard_xs

    j'utilise la macro ci-dessous, affectée à l'évènement de feuille clic droit pour réactiver le calcul quand c'est utile
    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
    Sub recalcul
    Dim calcul as boolean
    Dim debut as variant
    if not thisComponent.isAutomaticCalculationEnabled() then
     
            If MsgBox ("Attention calcul automatique désactivé !" _
                 &chr(13) &" Voulez-vous recalculer maintenant",292, now()) = 6 Then
                debut=now()
                thisComponent.enableAutomaticCalculation(true)
                thisComponent.calculate      'mise à jour des formules modifiées
                thisComponent.calculateAll
                thisComponent.enableAutomaticCalculation(false)
                thisComponent.store
                msgbox ("Recalcul terminé," & chr(10) & "debut : " & debut _
                 & " fin : " & now() & chr(10) & "le recalcul automatique a été désactivé ",16,now())
     
     
            End IF
        endif
    end sub

    LibreOffice 6.3.5.2 (x64) FR-YT 07-03-20
    OS : Windows 10.0

  3. #3
    Membre à l'essai
    Bonjour et merci pour ta réponse, par contre, avec ta macro, je ne suis pas certain que cela me permette de mettre à jour uniquement une plage de cellule (ou un seul onglet) mais tout le classeur entier et c'est surtout cela que je ne souhaite pas.
    Ta macro ne met à jour qu'un seul onglet sur lequel on applique la macro ?

  4. #4
    Membre éclairé
    Ta macro ne met à jour qu'un seul onglet sur lequel on applique la macro ?
    Non, le calcul est bloqué pour le classeur entier, ce qui permet de mettre à jour tous les onglets avant de faire reprendre le calcul de l'intégralité du classeur. Vous pourrez sans doute saucissonner la macro pour mettre telle ou telle partie du classeur à jour et de proche en proche finir par avoir fait tous les calculs "séparément" et aboutir au même résultat.

    Si vous ne changez que quelques valeurs dans un onglet quelconque, le recalcul se fait évidemment sur les valeurs modifiées, mais la cohérence du classeur entier est vérifiée.
    LibreOffice 6.3.5.2 (x64) FR-YT 07-03-20
    OS : Windows 10.0

  5. #5
    Membre à l'essai
    Merci pour cette réponse mais je ne vois pas vraiment l’intérêt de cette macro par rapport à décocher l'option "recalculer automatiquement" et faire F9 quand bon me semble.
    C'est vraiment faire un recalcul que sur un seul onglet qui m’intéresse.

  6. #6
    Membre éclairé
    Je ne peux pas vous comprendre

    En effet, j'ai plein de formules réparties sur plusieurs onglets et le calcul automatique prend beaucoup de temps.
    je ne vois pas vraiment l’intérêt de cette macro par rapport à décocher l'option "recalculer automatiquement" et faire F9 quand bon me semble.
    Vous le verrez dès que vous en aurez assez de faire F9 quand bon vous semble et que vous utiliserez cette macro ou une autre qui vous sera proposée à bon escient.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     thisComponent.calculateAll
                thisComponent.enableAutomaticCalculation(false)
                thisComponent.store


    Après avoir tout recalculé, le recalcul est désactivé, et le document est enregistré, sans autre intervention de l'utilisateur, vous ètes prêt pour injecter de nouvelles données et évaluer les nouveaux résultats, par un clic droit...et ok

    N'oubliez pas de partager la solution que vous retiendrez, on pourrait s'en servir également

    Merci
    LibreOffice 6.3.5.2 (x64) FR-YT 07-03-20
    OS : Windows 10.0