[Résolu][Calc] Non actualisation de cellule

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
BurnGun
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 02 nov. 2019 20:20

[Résolu][Calc] Non actualisation de cellule

Message par BurnGun »


La modération vous a écrit: Pour la bonne tenue de ce forum, veillez à respecter la syntaxe des balises (première lettre en majuscule puis le reste en minuscules, le tout entre crochets). [Calc] et non [CALC]. Merci de corriger dans le titre de votre sujet

Bonjour,

Désolé ! Je découvre le forum et comme tout nouveau je fais des erreurs de ... balisage. j'espère être bon cette fois-ci.
Dois-je tout réécrire ou la ref de l'ancien post suffit-elle ?

Mon précédent post était
https://forum.openoffice.org/fr/forum/v ... =4&t=61294

Je remets le fichier qui pose problème, la macro "le_calc" verrollant à priori le doc en entier !
Après plusieurs relectures, je ne vois pas où !

Merci de votre aide, au moins une piste, je suis sec !
Conversion - feuille-de-presence.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par BurnGun le 09 nov. 2019 17:51, modifié 4 fois.
LibreOffice 6.2.7 Windows 10
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 669
Inscription : 20 déc. 2017 14:45

Re: [CALC] Comportement bizarre feuille - Code ?

Message par rollmops »

Bonjour,
BurnGun a écrit :la macro "le_calc" verrollant à priori le doc en entier !
Tu ne donnes pas beaucoup d'explications pour nous faciliter le travail. :roll:
Que fait ta fonction le_calc ?
Pourrais-tu décrire précisémment dans quelle cellule cela "verole" ?
OpenOffice 4.1.15 - Windows 10
BurnGun
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 02 nov. 2019 20:20

Re: [Calc] Comportement bizarre feuille - Code ?

Message par BurnGun »

Les cellules envoyées en paramètres à la fonction sont des heures de départ et d'arrivée afin de calculer un temps de présence. A priori, quand ça marche les calculs sont bons :D

Mais ... on constate des effets bizarres comme :
- cellule février.AC5 ne ramène pas la bonne valeur de janvier.AA41. Il apparaît "" alors que la valeur est "8"
- si on essaie de resaisir la formule dans fevrier.AC5 en tapant = puis en allant sur janvier.AA41 pour valider, cela ne fonctionne pas
- après test, si je ne laisse pas le refresh avec CalculateAll en passant de janvier à février, on voit que la fonction calc de février affiche des valeurs de la feuille de janvier et ne se recalcule pas automatiquement alors que les paramètres de calcul automatiques sont aux bonnes valeurs.

Un des membres du forum a donc suggéré que la macro mettait le fouilli, je pense qu'il a raison mais je ne vois pas où la macro pêche ?

Affectation/libération de mes variables objets ?

Sur les tableaux ? Le redim ? Si je sortais des indices du tableau ça planterait , non ?

J'espère que ça permet d'en savoir plus pour me donner une piste. Je pense que ça doit être énorme, raison pour laquelle un débutant OO ne voit rien :fou:
LibreOffice 6.2.7 Windows 10
BurnGun
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 02 nov. 2019 20:20

Re: [Calc] Comportement bizarre feuille - Code ?

Message par BurnGun »

Je viens de faire un test. J'ajoute dans chaque cellule appelant la fonction, le nom de l'onglet où se trouve la cellule qui l'appelle en 3ème argument.
Puis en modifiant le code du début par :

Code : Tout sélectionner

set oDocEnCours = ThisComponent
set oFeuilles = oDocEnCours.sheets
set oFeuilleEnCours = oFeuilles.GetByName (fOnglet)
Et là, ça marche. Les symptomes d'erreurs disparaissent.

Mais ça me parait bourin, il doit y avoir moyen de faire mieux et plus simple.
LibreOffice 6.2.7 Windows 10
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

Re: [Calc] Comportement bizarre feuille - Code ?

Message par joel275 »

Bonsoir,

peut-être avec:

Code : Tout sélectionner

feuilleEnCours = ThisComponent.CurrentController.ActiveSheet
A plus.
A jour de LibreOffice et de Ubuntu
BurnGun
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 02 nov. 2019 20:20

Re: [Calc] Non actualisation de cellule

Message par BurnGun »

C'est ce que j'avais mis au début mais apparemment c'est ce qui crée le bug !
LibreOffice 6.2.7 Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Non actualisation de cellule

Message par Dude »

BurnGun a écrit :des heures de départ et d'arrivée afin de calculer un temps de présence
Déjà, je ne comprends pas pourquoi tu passes par une macro puisqu'un tableur sait parfaitement faire ce type de calcul.
Ensuite si tu passes uniquement des valeurs, il n'y a aucune raison de savoir sur quelle feuille tu te trouves.

Publie donc le code de ta fonction ici.
Et explique nous ce qu'elle est censée faire avec un exemple concret : données en entrée et résultat de sortie.
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Calc] Non actualisation de cellule

Message par DLE »

Bonjour,

Le problème est dû au recalcule de toutes les cellules engendré par la macro "fRefresh", si on la désactive la fonction "LECALC" n'est plus activée, car les arguments qui lui sont passés ne sont pas les bons. Il faut passer :
  • Le nom de la feuille, pour éviter qu'à l'ouverture du document on ait le message d'erreur "variable non définie".
    Le nom de chaque colonne et ligne, pour récupérer non pas leur valeur, mais leur objet, au contraire d'Excel.
L'appel à la fonction LECALC devient :

Code : Tout sélectionner

=LECALC("Janvier";LIGNE();COLONNE(G8);COLONNE(M8);COLONNE(N8);COLONNE(T8))
Ainsi dés que l'on modifie une des valeurs d'une ligne, la macro est activée et seulement pour cette ligne.
Dans les feuilles mensuelles il suffit de copier cette nouvelle formule, en ajustant le nom du mois, dans la première ligne du tableau et de l'étendre jusqu'au dernier jour du mois, avec la poignée en bas à droite.
L'appel à la macro "fRefresh" est supprimé dans "Evénements de la feuille" pour "Janvier" et "Février"
Au niveau macro:
  • J'ai renommé la fonction "Le_Calc" en "LECALC" et mis en commentaire celle ayant le même nom.
    Les modifications dans cette fonction sont repérables par le commentaire " ' ***".
    Une fonction doit renvoyée une valeur ou un texte, donc sortir par "exit sub" sans valoriser le retour n'a pas correct.
Divers:
  • 2020 est bissextile donc février = 29 jours
J'espère avoir été clair dans mes explications.

Cdlt.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
BurnGun
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 02 nov. 2019 20:20

[Résolu] [Calc] Non actualisation de cellule

Message par BurnGun »

Merci DLE pour ces explications qui sont claires.

Effectivement, comme indiqué, dans la dernière version j'avais rajouté le mois en argument et même en passant les valeurs ça fonctionnait.

Je n'avais pas encore vu que mes formules ne créaient pas le 29 février pour 2020. Merci.

C'était un échange très formateur, merci à tous.
Dernière modification par BurnGun le 09 nov. 2019 15:18, modifié 1 fois.
LibreOffice 6.2.7 Windows 10
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9255
Inscription : 28 août 2010 08:45

Re: [Calc] Non actualisation de cellule

Message par micmac »

Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac