Date: prev next · Thread: first prev next last
2022 Archives by date, by thread · List index


Bonjour

J'ai de nouveau accès au fichier en question et donc :

 * Pour les jours de fin de mois, j'avais adapté mes formules en
   alternant manuellement 30 ou 31, et même 28 ou 29 selon si l'année
   est bissextile ou pas.
   C'était fonctionnel, mais pas très élégant.
   FIN.MOIS renvoie le numéro de série du dernier jour du mois dans
   l'année : 244 pour le 31 août 2022. Pour l'utiliser pour refabriquer
   une date, cela fonctionne si je mets JOUR(FIN.MOIS(...)).
   Mais, j'ai finalement opté pour JOURSDANSMOIS(DATE(Mon année;Mon
   mois;1)).

 * Pour ma question initiale :
   La fonction DECALER (avec cellule calculée) suggérée par Christian
   fonctionne tout à fait comme souhaité !

Merci beaucoup de vous être penché·es sur cette question.

@+
Luc

Le 02/09/2022 à 20:14, C Fourcroy a écrit :
Re Bonsoir,

Quelques explications sur ce que je disais avant :
DECALER

 * Référence : une cellule de référence à partir de laquelle on va
   effectuer un décalage. Ici la cellule de référence sera le début du
   tableau dans DATA, a priori $DATA.$A$1
 * Lignes : nombre de lignes qu'il faut de décalage à partir de la
   cellule de référence. Ici, a priori, ça sera zéro : on veut
   conserver le début du tableau
 * Colonnes : nombre de colonnes qu'il faut de décalage à partir de la
   cellule de référence. Ici, a priori, ça sera zéro : on veut
   conserver le début du tableau
 * Hauteur : nombre de lignes que va contenir la zone définie ; Ici, le
   nombre de ligne du tableau.
     o Soit on prévoit une cellule pour saisir cette hauteur,
     o soit on peut utiliser la fonction NBVAL pour calculer
       automatiquement la hauteur du tableau : ça compte nombre de
       cellules occupées dans une zone donnée donc on peut faire
       quelque chose du genre NBVAL($A$1:$A$100000) pour prévoir large.
 * Largeur : nombre de colonnes que doit comporter la zone définie.
   Ici, au moins 3, si j'ai bien compris

FIN.MOIS : renvoi le numéro du dernier jour du mois. On aura quelque chose comme FIN.MOIS(MOIS(B$1))

Si on recolle les morceaux ça donne

RECHERCHEV(DATE(GAUCHE($A18;4);MOIS(B$1);FIN.MOIS(MOIS(B$1));DECALER($Data.$A$1;0;0;$F$2;3);3;0)
ou
RECHERCHEV(DATE(GAUCHE($A18;4);MOIS(B$1);FIN.MOIS(MOIS(B$1)));DECALER($Data.$A$1;0;0;NBVAL($Data.$A$1:$Data.$A$100000);3);3;0)

J'ai fait ça de tête, faudrait vérifier les références de cellules et les parenthèses

Christian F

Le 02/09/2022 à 00:53, yves dutrieux a écrit :
Bonjour,

2 possibilités dépendant de pourquoi tu veux faire ça.
1) si c'est pour pouvoir toujours inclure les données dans ta plage
(exemple être sûr que ce que tu ajoutes sera d'office repris dans ta plage
(éventuellement ta plage s'agrandit si tu ajoutes).
alors c'est mieux d'utiliser une plage du style : $Data.$A$1:$Data.$C7000 (le dollar enlevé sur 7000, s'agrandira si et seulement si, tu INSERES des
lignes de données AVANT la ligne 7000. car en insérant, ta plage,
s'agrandira vu que le dollar n'est pas présent).
2) si c'est indirect que tu veux utiliser, met par exemple dans la cellule
B6 : Data.$A$1:$Data.$C7000
et utilise ensuite indirect(b6) à la place de ta plage dans la formule ,
soit : RECHERCHEV(DATE(GAUCHE($A18;4);MOIS(B$1);31);indirect(B6);3;0)
B6 peut être le résultat d'un calcul ;)

Yves

Le jeu. 1 sept. 2022 à 19:24, Mamin Luc<luc.mamin@helem.fr>  a écrit :

Bonsoir

Le titre de ce message n'est pas très clair, je précise :

   * Dans une feuille, appelons la "Data", j'ai une colonne de dates
     quotidiennes, et une autre colonne avec des données.
     Chaque mois, je copie/colle les données issues d'une source extérieure.
   * Dans une seconde feuille, appelons la "Récap", je récapitule les
     données de la feuille Data en les rangeant par années et par mois.
     Pour ce faire, j'utilise

RECHERCHEV(DATE(GAUCHE($A18;4);MOIS(B$1);31);$Data.$A$1:$Data.$C$7000;3;0)
     Et ça fonctionne très bien...

Mais, j'aimerais pouvoir "automatiser" la dernière ligne de la plage de
recherche.
Dans l'exemple ci-dessus, j'ai mis "7000", mais je voudrais intervenir
sur ce "7000" pour faire prendre en compte une donnée que je parviens à
calculer, présente dans la feuille Récap.
Donc quelque chose du genre : $Data.$C"ma donnée calculée"

Je pensais investiguer du côté des fonctions ADRESSE ou INDIRECT, mais
je n'y parviens pas.

Si une piste existait...

Rien d'urgent à cette question, qui relève un peu de l'exercice de style.

Merci.
Luc

--
Envoyez un mail àusers+unsubscribe@fr.libreoffice.org  pour vous
désinscrire
Les archives de la liste sont disponibles à
https://listarchives.libreoffice.org/fr/users/
Privacy Policy:https://www.documentfoundation.org/privacy



--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.