Somme de bas en haut
RésoluHerve_be Messages postés 1123 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
En tant que pilote privé, pour pouvoir emmener des passagers je dois avoir effectué au moins 3 atterrissage dans les 3 mois qui précèdent.
Je maintiens un fichier Excel dans lequel je note le nombre d'atterrissage à chaque date, par exemple
Date / Att
25/09/2023 1
08/11/2023 2
11/11/2023 1
06/01/2024 0
27/01/2024 1
Je voudrais savoir jusque quelle date je peux emmener des passagers.
En tant qu'humain je fais la somme du nombre d'att de bas en haut, quand j'atteins 3 j'ai trouvé la date à laquelle il suffit d'ajouter 3 mois, dans l'exemple 08/11/2023.
Je ne parviens pas à faire la même chose automatiquement en Excel, pouvez-vous m'y aider ?
Windows / Chrome 122.0.0.0
- Somme de bas en haut
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Somme en anglais excel - Guide
- Base de registre - Guide
- Windows 11 barre des taches en haut - Guide
12 réponses
Bonsoir à vous deux
Et une solution sans macro, par tableau annexe et formules
https://www.cjoint.com/c/NCgu2IrBCLQ
Cdlmnt
Via
Bonjour à tous,
réponse aussi ici https://forum.excel-pratique.com/excel/somme-de-bas-en-haut-191737
Pour info, poser une question sur plusieurs sites est très mal vu.
On aime pas trop perdre du temps alors que peut-être tu as déjà la réponse ailleurs depuis plusieurs heures.
Tâche d'en tenir compte si tu ne veux pas être zappé sur tes prochaines demandes.
eric
Bonjour,
Pour illustrer la question, nous avions un spécialiste que nous n'avons pas vu depuis quelques mois, personne ne pleure, qui bidouillait un fichier Excel écrit en dépit du bon sens depuis 10 ans, qui allait sur tel forum qui lui suggérait une modification 1 et un autre une modification 2 et qui revenait sur l'un en ayant appliqué la modification de l'autre sans crier gare: ingérable.
Nous avons aussi régulièrement, c'est un aspect subsidiaire, des gens qui posent la même question sur plusieurs forums; il y a ceux qui ne répondent jamais nulle part à aucune solution qui leur a été proposée, et aussi ceux qui auront trouvé sur le site 1 sans revenir le dire et comment sur le site 2.
Il faut bien admettre que pour celles des solutions pouvant demander un peu de travail, le répondant puisse en être contrarié.
Même si je n'ai rien compris ce serait séduisant mais j'ai un message d'erreur "cette fonction est incorrecte".
Chez moi la date est dans la colonne A, le nombre d'att dans la colonne F et les lignes vont de 4 à 91, voici ma fonction :
=LET(dat;SEQUENCE(MOIS.DECALER(A91;3)-A4;;A4);ASSEMB.H(dat;BYROW(dat;LAMBDA(SOMME(FILTRE($F$4:$F$91;($A$4:$A$91>=MOIS.DECALER(x;-3))*($A$4:$A$91<=x);0))))))
Je ne trouve pas les fonctions LET, SEQUENCE, ASSEMB, LAMBDA ni FILTRE dans Excel; je n'ai pas la version 365 mais Microsoft Office Professionnel Plus 2019.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour
Comment enregistrer ta macro dans mon fichier Excel ?
Chez toi : Alt-F11 pour accéder à l'éditeur vba, Insertion/Module/Puis y copier l'intégralité du code (qui est dans le Module 1 de mon fichier)
Pour l'enregistrer, je suppose que tu as un excel > 2007. Fichier/Enregistrer sous/ Dans type, choisir .xlsm .... prenant en compte les macros
Cdlmnt
Merci,
J'ai la version 2019, la macro VBA est bien enregistrée.
Maintenant j'ai une erreur #VALEUR!
Bizarrement j'ai une référence circulaire dans la cellule qui contient =date3att(listedat;listeatt)
Pour essayer de lever une cause possible j'ai remplacé la définition automatique des noms par les définitions manuelles :
listeatt = TakeOff!$F$4:$F$91
listedat=TakeOff!$A$4:$A$91
mais ça ne change rien.
Dans mon fichier, si la formule est =date3att(A2:A16;B2:B16), ça fonctionne bien. Peux tu envoyer un bout de ton fichier (la feuille TakeOff en particulier)?
Cdlmnt
1) Tu vas dans http://cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".
Bonjour
https://www.cjoint.com/c/NCioIM4VWPB
N'oublies pas d'enregistrer-sous avec le type .xlsm
Cdlmnt
Merci, effectivement dans ta feuille ça fonctionne.
Cependant je ne peux pas la prendre telle qu'elle car ma feuille d'origine est beaucoup plus vaste que cet extrait; si je recopie les formules et VBA de ta feuille vers la mienne ça ne fonctionne toujours pas.
Pourrais-tu me dire ce que tu as modifié à ma feuille ?
as tu renommé les plages ?
listedat=DECALER(TakeOff!$A$3;0;0;NB(TakeOff!$A:$A)-1;1)
listeatt=DECALER(listedat;0;5) > attention 5 est le décalage de colonne / listadat
Les plages automatiques ne sont pas nécessaires car je n'ajoute jamais une ligne à la fin : dans tous mes fichiers j'insère une copie de la dernière ligne au-dessus d'elle puis je modifie la nouvelle dernière.
D'autre part pour exclure un risque d'erreur de plage la cellule où doit apparaître le résultat contient =date3att(A4:A91;F4:F91)
J'obtiens une référence circulaire sur cette cellule.
Hello,
Un essai par formule matricielle en F94, à valider par Ctrl+Maj+Entrée, elle se met alors entre accolades {} :
=MOIS.DECALER(MAX(SI(SOMME.SI.ENS(F3:F91;A3:A91;">="&A3:A91;A3:A91;"<="&A3:A91+91)>=3;A3:A91;""));3)
Re,
On peut faire un poil plus court avec :
=MOIS.DECALER(MAX((SOMME.SI.ENS(F3:F91;A3:A91;">="&A3:A91;A3:A91;"<="&A3:A91+91)>=3)*A3:A91);3)
toujours en validation matricielle,
et on peut s'affranchir de cette validation matricielle en remplaçant MAX par AGREGAT(14 ... avec :
=MOIS.DECALER(AGREGAT(14;6;((SOMME.SI.ENS(F3:F91;A3:A91;">="&A3:A91;A3:A91;"<="&A3:A91+91)>=3)*A3:A91);1);3)
À tester bien sûr !
D'autre part pour exclure un risque d'erreur de plage la cellule où doit apparaître le résultat contient =date3att(A4:A91;F4:F91)
Pas ici
Merci beaucoup, ceci me convient parfaitement.
Je n'ai cependant pas l'habitude d'utiliser VBA, dans ton fichier la macro fonctionne comme souhaité mais je ne parviens pas à la faire fonctionner dans le mien, j'obtiens #NOM? dans la cellule qui contient l'appel à la macro.
Comment enregistrer ta macro dans mon fichier Excel ?