Formule complexe excel !
Résolu/Fermé
Antoine
-
28 janv. 2010 à 11:31
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 - 28 janv. 2010 à 15:21
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 - 28 janv. 2010 à 15:21
A voir également:
- Formule complexe excel !
- Formule excel pour additionner plusieurs cellules - Guide
- Formule excel si et - Guide
- Formule excel moyenne - Guide
- Formule excel - Guide
- Excel mise en forme conditionnelle formule - Guide
12 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
28 janv. 2010 à 11:47
28 janv. 2010 à 11:47
Bonjour,
Montre un bout de ton classeur, car tes explications sont pour le moins "brouillon"
pour mettre un classeur format XL97-2003
https://www.cjoint.com/
et tu colles le lien proposé dans ton message
Montre un bout de ton classeur, car tes explications sont pour le moins "brouillon"
pour mettre un classeur format XL97-2003
https://www.cjoint.com/
et tu colles le lien proposé dans ton message
Voilà le fameux fichier...
Ici c'est une simulation.
A terme il devrait y avoir au minimum 500 lignes il faut donc prendre en compte le document en entier.
https://www.cjoint.com/?bCl2wSTemz
Ici c'est une simulation.
A terme il devrait y avoir au minimum 500 lignes il faut donc prendre en compte le document en entier.
https://www.cjoint.com/?bCl2wSTemz
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
28 janv. 2010 à 12:13
28 janv. 2010 à 12:13
Salut,
essaie avec cette formule (plage à adapter) :
essaie avec cette formule (plage à adapter) :
=SOMMEPROD((J4:J20<>1990)*(M4:M20<>"")*(M4:M20-L4:L20))/SOMMEPROD((J4:J20<>1990)*(M4:M20<>""))
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
28 janv. 2010 à 12:14
28 janv. 2010 à 12:14
OK merci,
Donc tu voudrais avoir le temps moyen de passage 1100 à 1650 colonnes L & M ?
c'est bien çà ?
SI c'est OK essaies en test sur ligne 4 à 9 (délai moyen 7)
formule matricielle à valider par Ctrl+maj+entree, le curseur étant dans la barre de formules et non par entree comme d'hab XL encadre alors automatiquzment la formule par des accolades
si ca te convient remplace ensuite les 9 par es 500 lignes
Edit: en lisant la réponse de Tompols (bonjour),je vois que j'avais pas vu la colonne J
Donc tu voudrais avoir le temps moyen de passage 1100 à 1650 colonnes L & M ?
c'est bien çà ?
SI c'est OK essaies en test sur ligne 4 à 9 (délai moyen 7)
=MOYENNE(SI((L4:L9<>"")*(M4:M9<>"");(M4:M9)-(L4:L9)))
formule matricielle à valider par Ctrl+maj+entree, le curseur étant dans la barre de formules et non par entree comme d'hab XL encadre alors automatiquzment la formule par des accolades
si ca te convient remplace ensuite les 9 par es 500 lignes
Edit: en lisant la réponse de Tompols (bonjour),je vois que j'avais pas vu la colonne J
=MOYENNE(SI((J4:J500=1650)*(L4:L500<>"")*(M4:M500<>"");(M4:M500)-(L4:L500)))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ça marche parfaitement lorsque l'on dépasse pas 20 par contre vu que je vais inclure ça dans une macro, il faut que dès le départ je fasse ma formule pour qu'elle prenne en compte toute la feuille même si il y a des lignes totalement vides. Dans le cas de ta formule si je garde mon fichier comme cela et que je remplace 20 par l'infini j'ai un résultat de 0
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
28 janv. 2010 à 12:27
28 janv. 2010 à 12:27
Pourquoi ne pas avoir précisé que tu voulais faire ca par macro au départ? la résolution est complètement différente !!! d'autre part, que cela soit par sommeprod ou par matricielle, le calcul est refusé si on prend des colonnes entières...
on a que ce que tu as écrit pour t'aider, donc...
on a que ce que tu as écrit pour t'aider, donc...
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
28 janv. 2010 à 12:40
28 janv. 2010 à 12:40
Re,
effctivement c'est différent...que veux-tu exactement :
- on peut faire le calcul en vba et n'afficher que le résultat
- on peut créer dynamiquement la formule en vba en determinant la derniere ligne de ta liste
- on peut aussi imaginer juste une formule(sans vba), soit on fixe la plage jusqu'à la ligne 65536, soit on determine la derniere ligne ds la formule....
- autres....
effctivement c'est différent...que veux-tu exactement :
- on peut faire le calcul en vba et n'afficher que le résultat
- on peut créer dynamiquement la formule en vba en determinant la derniere ligne de ta liste
- on peut aussi imaginer juste une formule(sans vba), soit on fixe la plage jusqu'à la ligne 65536, soit on determine la derniere ligne ds la formule....
- autres....
Voilà ce qu'il va se passer.
Je vais avoir des données comme celle du fichier que j'ai envoyé, en format TXT.
Tous les mois elles arrivent sous un nom précis et toujours dans le même répertoire.
J'ai un classeur excel ou j'ai ma macro finale, avec juste un bouton, dans laquelle il y a plusieurs actions.
La 1ere va chercher le fichier TXT par rapport à sa date et classe les informations dans le fichier excel que j'ai envoyé (c'est préconfiguré dans mon TXT donc c'est simple).
Ensuite la macro doit lancer automatiquement mon calcul quel que soit le nombre de lignes présentes.
Il faut donc que mon calcul se fasse qu'il y ait 20 lignes ou 500 lignes sans devoir intervenir.
Je vais avoir des données comme celle du fichier que j'ai envoyé, en format TXT.
Tous les mois elles arrivent sous un nom précis et toujours dans le même répertoire.
J'ai un classeur excel ou j'ai ma macro finale, avec juste un bouton, dans laquelle il y a plusieurs actions.
La 1ere va chercher le fichier TXT par rapport à sa date et classe les informations dans le fichier excel que j'ai envoyé (c'est préconfiguré dans mon TXT donc c'est simple).
Ensuite la macro doit lancer automatiquement mon calcul quel que soit le nombre de lignes présentes.
Il faut donc que mon calcul se fasse qu'il y ait 20 lignes ou 500 lignes sans devoir intervenir.
Au passage j'ai une deuxième formule à intégrer dans ma macro qui est le nombre de retards : ici toujours avec la même contrainte qui est que je ne sais pas à l'avance combien de lignes je vais avoir, je dois dire le nombre de retards qu'il y a eu sachant qu'on calcule un retard par le rapport entre la date de création soit le statut 1100 et la date de réception de l'instruction, si le délais excède 2 jours.
J'avoue que j'en demande beaucoup mais je suis totalement bloqué...
J'avoue que j'en demande beaucoup mais je suis totalement bloqué...
Désolé d'avoir oublié ce gros détail...
Oui il faut que je mette tout ça dans une macro avec vous une solution ?
Merci pour votre aide à tous !
Oui il faut que je mette tout ça dans une macro avec vous une solution ?
Merci pour votre aide à tous !
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
28 janv. 2010 à 14:15
28 janv. 2010 à 14:15
Re
Bon tu nous dit toujours pas si le calcul doit s'effectuer ds le code et renvoyer la valeur ou si tu veux une formule...
J'ai pris l'option 2, pour mettre la formule en X1 :
Bon tu nous dit toujours pas si le calcul doit s'effectuer ds le code et renvoyer la valeur ou si tu veux une formule...
J'ai pris l'option 2, pour mettre la formule en X1 :
derlig = Sheets(1).Range("A65536").End(xlUp).Row Range("X1").Formula = "=Sumproduct((J4:J" & derlig & "<>1990)*(M4:M" & derlig & "<>"""")*(M4:M" & derlig & "-L4:L" & derlig & "))/Sumproduct((J4:J" & derlig & "<>1990)*(M4:M" & derlig & "<>""""))"
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
28 janv. 2010 à 14:29
28 janv. 2010 à 14:29
re,
Pour la 2eme formule :
Pour la 2eme formule :
"=SUMPRODUCT((O4:O" & derlig & "-L4:L" & derlig & ">2)*1)"
J'ai tout testé c'est génial pour les deux !!!! Merci beaucoup pour ces réponses et surtout la rapidité !!!!
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
28 janv. 2010 à 15:21
28 janv. 2010 à 15:21
de rien :)