[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 !

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

Messagepar BurnGun » 07 Nov 2019 14:08


La modération 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/viewtopic.php?f=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
(87.83 Kio) Téléchargé 5 fois
Dernière édition par BurnGun le 09 Nov 2019 18:51, édité 4 fois.
LibreOffice 6.2.7 Windows 10
BurnGun
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 02 Nov 2019 21:20

Re: [CALC] Comportement bizarre feuille - Code ?

Messagepar rollmops » 07 Nov 2019 15:00

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.6 - Windows 7
Avatar de l’utilisateur
rollmops
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 210
Inscrit le : 20 Déc 2017 15:45

Re: [Calc] Comportement bizarre feuille - Code ?

Messagepar BurnGun » 07 Nov 2019 19:14

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
 
Message(s) : 11
Inscrit le : 02 Nov 2019 21:20

Re: [Calc] Comportement bizarre feuille - Code ?

Messagepar BurnGun » 07 Nov 2019 20:12

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   AgrandirRéduire
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
BurnGun
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 02 Nov 2019 21:20

Re: [Calc] Comportement bizarre feuille - Code ?

Messagepar joel275 » 07 Nov 2019 20:40

Bonsoir,

peut-être avec:
Code : Tout sélectionner   AgrandirRéduire
feuilleEnCours = ThisComponent.CurrentController.ActiveSheet

A plus.
OpenOffice 4.1.2 LibreOffice 6-2-8-2 Windows 8.1
joel275
PassiOOnné
PassiOOnné
 
Message(s) : 742
Inscrit le : 10 Jan 2009 09:05

Re: [Calc] Non actualisation de cellule

Messagepar BurnGun » 08 Nov 2019 00:38

C'est ce que j'avais mis au début mais apparemment c'est ce qui crée le bogue !
LibreOffice 6.2.7 Windows 10
BurnGun
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 02 Nov 2019 21:20

Re: [Calc] Non actualisation de cellule

Messagepar Dude » 08 Nov 2019 08:58

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
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21118
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc] Non actualisation de cellule

Messagepar DLE » 08 Nov 2019 17:12

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   AgrandirRéduire
=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.
Pièces jointes
Conversion - feuille-de-presence_V1.ods
Correction appel fonction
(87.76 Kio) Téléchargé 7 fois
AOO 4.1.7 et Libreoffice 6.2.8.2 sous Windows 10 64 bits, FireFox, Thunderbird, ORB 1.2.1
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
 
Message(s) : 1226
Inscrit le : 30 Déc 2007 19:56
Localisation : Lille

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

Messagepar BurnGun » 09 Nov 2019 16:09

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 édition par BurnGun le 09 Nov 2019 16:18, édité 1 fois.
LibreOffice 6.2.7 Windows 10
BurnGun
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 11
Inscrit le : 02 Nov 2019 21:20

Re: [Calc] Non actualisation de cellule

Messagepar micmac » 09 Nov 2019 16:10

Les formats ouverts (ODF) assurent la pérennité de vos documents.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 6303
Inscrit le : 28 Août 2010 09:45


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 8 invité(s)