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 - Macro modifiant la formule d'une cellule


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre du Club
    LibreOffice CALC - Macro modifiant la formule d'une cellule
    Bonjour,

    J'ai besoin d'aide pour l'écriture d'une macro. Je suis en train de créer un fichier qui recense des données et je dois calculer en dernière ligne de tableau la moyenne.
    Il y a un bouton qui insère une ligne (la ligne 4) et macro déjà écrite, mais lorsque j'insère la ligne la formule se trouvant à la dernière ligne (ligne noir) ne se met pas à jour.
    Le tableau de base est :
    - Ligne 3 en tête
    - Ligne 4 entrée des données
    - Ligne 5 la moyenne
    La formule de base pour M5 par exemple est la suivante : =SOMME(M4:M4)/NBVAL(M4:M4).

    Lorsque j'insère une ligne, le tableau devient :
    - Ligne 3 en tête
    - Ligne 4 entrée des données
    - Ligne 5 entrée des données
    - Ligne 6 la moyenne
    La formule devient alors : =SOMME(M5:M5)/NBVAL(M5:M5).

    Alors que j'aimerai : =SOMME(M4:M5)/NBVAL(M4:M5).

    Et ainsi de suite à chaque nouvelle ligne créée.

    La ligne 4 ne changera jamais, c'est toujours la première ligne d'entrée des données mais la dernière change à chaque fois que je crée une nouvelle ligne ...

    Que faire ?

    Je vous joint le fichier.
    Merci d'avance

  2. #2
    Membre régulier
    Bjour,

    référence relative et absolue !
    ajouter donc un petit "$" aux références qui doivent rester fixes

    la formule de base devrait être =SOMME(M$4:M4)/NBVAL(M$4:M4) ou encore mieux =moyenne(M$4:M4)

  3. #3
    Membre du Club
    Ok merci, mais où est ce que je l'ajoute ? Dans la macro ? Si oui comment ? Sinon dans la cellule directement ? Si oui, j'ai essayé mais rien ne change.

  4. #4
    Membre actif
    LibreOffice CALC - Macro modifiant la formule d'une cellule
    Bonjour,

    Pour bien comprendre ton, problème :

    -Si tu ajoute une ligne, la ligne 6 (moyenne) devient : =SOMME(M5:M5)/NBVAL(M5:M5). C'est que je constate sur ton fichier exemple.

    Alors que tu aimerai : =SOMME(M4:M5)/NBVAL(M4:M5).

    Et si tu ajoute une deuxième ligne que deviendrait alors la formule de la ligne moyenne ?

    Car je suppose que si tu as mis un bouton c'est que l'ajout des lignes peut se faire autant de fois que nécessaires ?
    Dans ce cas on pourrait modifier la formule par macro, mais j'ai besoin d'être sûr.

    Cordialement
    Libre Office Version: 6.4.6.2 (x64)
    Windows 10

  5. #5
    Expert confirmé
    Bonjour,

    Une solution simple :
    - Toujours avoir au moins 2 lignes de données dont la dernière est vierge (et éventuellement masquée)
    - Utiliser la formule de Mobydick =SOMME(M$4:M5)/NBVAL(M$4:M5).
    - Insérer les nouvelles lignes avant la dernière ligne de données (vierge)
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  6. #6
    Membre du Club
    C'est tout à fait ça !!

    Si je rajoute encore une ligne ça donne : =SOMME(M6:M6)/NBVAL(M6:M6) et la ligne 7 est la ligne moyenne


    Citation Envoyé par Mobydick_62 Voir le message
    Bonjour,

    Pour bien comprendre ton, problème :

    -Si tu ajoute une ligne, la ligne 6 (moyenne) devient : =SOMME(M5:M5)/NBVAL(M5:M5). C'est que je constate sur ton fichier exemple.

    Alors que tu aimerai : =SOMME(M4:M5)/NBVAL(M4:M5).

    Et si tu ajoute une deuxième ligne que deviendrait alors la formule de la ligne moyenne ?

    Car je suppose que si tu as mis un bouton c'est que l'ajout des lignes peut se faire autant de fois que nécessaires ?
    Dans ce cas on pourrait modifier la formule par macro, mais j'ai besoin d'être sûr.

    Cordialement

  7. #7
    Membre actif
    LibreOffice CALC - Macro modifiant la formule d'une cellule
    Bonjour,

    Désolé, mais du mal à comprendre la logique des formules :

    Si insertion d'une première ligne :
    La ligne moyenne est en 6 et la formule doit être : =SOMME(M4:M5)/NBVAL(M4:M5)

    Si insertion d'une deuxième ligne:
    La ligne moyenne passe en 7 et la formule que tu veux c'est : =SOMME(M6:M6)/NBVAL(M6:M6) ?....Moi je m’attendais à =SOMME(M5:M6)/NBVAL(M5:M6)

    Si insertion d'une troisième ligne:
    La ligne moyenne passe en 8 et la formule devrait être quoi alors ?

    Cordialement
    Libre Office Version: 6.4.6.2 (x64)
    Windows 10

  8. #8
    Membre du Club
    Ah, on ne s'est pas bien compris.

    Moi je veux que la formule finale soit : =SOMME(M4:Mx)/NBVAL(M4:Mx), x étant l'avant dernière ligne soit la ligne moyenne - 1.


    Citation Envoyé par Mobydick_62 Voir le message
    Bonjour,

    Désolé, mais du mal à comprendre la logique des formules :

    Si insertion d'une première ligne :
    La ligne moyenne est en 6 et la formule doit être : =SOMME(M4:M5)/NBVAL(M4:M5)

    Si insertion d'une deuxième ligne:
    La ligne moyenne passe en 7 et la formule que tu veux c'est : =SOMME(M6:M6)/NBVAL(M6:M6) ?....Moi je m’attendais à =SOMME(M5:M6)/NBVAL(M5:M6)

    Si insertion d'une troisième ligne:
    La ligne moyenne passe en 8 et la formule devrait être quoi alors ?

    Cordialement

  9. #9
    Membre actif
    LibreOffice CALC - Macro modifiant la formule d'une cellule
    Ah OK j'avais pas trop compris

    Donc on peut donc faire facilement par macro. Je te fais çà dans la soirée.
    Par ailleurs quand tu insère une nouvelle ligne tu poses tes formules (c'est parfait) mais j'ai remarqué que les formats des cellules (celles en euros) ne sont pas conservées.
    Je vais voir çà aussi.

    Cordialement
    Libre Office Version: 6.4.6.2 (x64)
    Windows 10

  10. #10
    Membre actif
    LibreOffice CALC - Macro modifiant la formule d'une cellule
    Re

    En pièce jointe le fichier modifié.
    A tester

    Cordialement
    Libre Office Version: 6.4.6.2 (x64)
    Windows 10

  11. #11
    Membre du Club
    Super merci beaucoup !! Les formules fonctionnent c'est top !!

    Par contre, les cellules en format monétaires sont au format %. Quand je mets 10000 en M4 ca met met : 10000,00% ...

    Pour les cellules au format % nickel merci bien.



    Citation Envoyé par Mobydick_62 Voir le message
    Re

    En pièce jointe le fichier modifié.
    A tester

    Cordialement

  12. #12
    Membre actif
    LibreOffice CALC - Macro modifiant la formule d'une cellule
    Bonsoir.
    Chez moi çà fonctionne nickel. Mais je sais qu'en fonction des versions ou des postes çà peut changer.

    A la place des lignes :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    oFeuille.getCellRangeByName("M4").numberformat = 108


    Essaye :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    oFeuille.getCellRangeByName("M4").numberformat = 106


    Et dis moi. Sinon on pourra trouver une autre solution pour les formats

    Cordialement
    Libre Office Version: 6.4.6.2 (x64)
    Windows 10

  13. #13
    Membre actif
    LibreOffice CALC - Macro modifiant la formule d'une cellule
    Bonjour

    La nuit portant conseil....... j'ai trouvé mieux.

    Comme les cellules de la ligne 4 contiennent de nombreuses propriétés (dates, euros, pourcentage, couleurs) il est donc préférable d'utiliser le dispatcher pour tout d'abord copier la ligne 4
    Donc la ligne 4 est copié dans le presse papier même si elle contient déjà des données.
    Ensuite insertion de la nouvelle ligne et collage. Ainsi la nouvelle ligne insérée est complétement vierge et identique. Plus besoin par macro de réinsérer des formules et autre formatage....
    En pièce jointe le nouveau fichier.
    Cordialement

    Libre Office Version: 6.4.6.2 (x64)
    Windows 10

###raw>template_hook.ano_emploi###