SOMME.SI.ENS en fonction d'une autre cellule

Fermé
Florentin55 Messages postés 7 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 7 juillet 2017 - 3 août 2016 à 15:37
Florentin55 Messages postés 7 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 7 juillet 2017 - 3 août 2016 à 21:59
Bonjour,

Je suis confronté à une formule qui je ne sais traduire pour l'appliquer sur excel.

Explication :
Ci-joint un tableau :

Premièrement, je souhaite que les cellules E28 à J28 ne se calculent que si B28 et C28 sont remplies par une date .
La formule général pour les données dans le tableau est =SOMME.SI.ENS(Activités!L:L;Activités!H:H;"Développée";Activités!O:O;1).

Deuxièmement, et là c'est plus compliqué à mon avis, je souhaite que le résultat obtenu précédemment ne soit pas mis à jour.
Explication :
La cellule J28 contient le résultat 86.5 qui provient des données d'une autre feuille qui est mis à jour toutes les semaines au moins. Sauf que j'aimerai que cette cellule m'affiche le résultat le jour ou j'ai inscrits des dates dans la cellule B28 et C28.
Cela me permet d'avoir une synthèse sur l'avancement par date.

Au vu du tableau cela semble compliqué.
Pour simplifier si une formule me permet d'avoir le résultat de J28 quand je mets une date précise dans la cellule B28, sinon j'ai un "?" car la colonne date est vide.

Si vous avez des soucis de compréhension, n'hésitez pas à poser des questions.

Merci d'avance. Cordialement, Florentin.

4 réponses

via55 Messages postés 14512 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 janvier 2025 2 740
3 août 2016 à 16:30
Bonjour Florentin

Pour récupérer les données d'une autre feuille et les figer à cette date il faut procéder par une macro lancée à la modification des cellules B et C

Impossible d'en dire plus sans avoir un exemple de ton fichier au lieu d 'une image; exemple à poster sur cjoint.com, faire créer un lien, le copier et revenir le coller ici dans ton prochain message

Cdlmnt
Via
1
via55 Messages postés 14512 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 janvier 2025 2 740
3 août 2016 à 18:10
Re Florentin

Ton fichier en retour (je l'envoie par mon partage car comme il est en extension xlsm souvent on ne peut pas l'ouvrir directement avec cjoint, il faut d'abord l'enregistrer, et changer l'extension avant d'ouvrir)
https://mon-partage.fr/f/GZRtOxWi/

Toute modification d'une des cellules C28:C35 lance la macro qui effectue les SOMME.SI.ENS et remplit les cellules de la lignes dont les résultats restent donc figés tant qu'on ne remodifie pas la date en C sur la même ligne

ALT+F11 pour voir le code

Cdlmnt
Via
1
Florentin55 Messages postés 7 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 7 juillet 2017
3 août 2016 à 18:45
Re via55,

Alors déjà, tu as fait un truc de fou furieux :).
Bon ayant déjà fait du code, je vois un peu ce que tu as fait.
Cependant après avoir fait ALT+F11 je ne me repère pas très bien dans la hiérarchie du logiciel si tu pouvais juste m'éclairer sinon je chercherai par moi-même.

En tout cas, un IMMENSE MERCI pour ton travail et surtout ta rapidité.
0
Florentin55 Messages postés 7 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 7 juillet 2017
3 août 2016 à 17:36
0
via55 Messages postés 14512 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 janvier 2025 2 740
3 août 2016 à 20:44
Re

Je te remets ci-dessous la macro avec des explications, n'hésites pas à me demander s'il y a quelque chose que tu ne comprends pas
La macro est dans le worksheet de la feuille sprint, elle ne se déclenche donc que lors d'un événement sur cette feuille, en l'occurance un changement de valeur dans une cellule :
Private Sub Worksheet_Change(ByVal Target As Range)
' à chaque changement d'une valeur dans une cellule la macro est déclenchée
' si la cellule cible(target) et une des cellules de la plage C28:C35
If Not Intersect(Target, Range("C28:C35")) Is Nothing Then
' alors
' avec la feuille Activités pour source de toutes les adresses précédées d'un point (.Range(...)
With Sheets("Activités")
'les cellule E à F de la ligne de la cible prennet comme valeurs celles calculées par les SOMME.SI.ENS (Sumifs ...)
Range("E" & Target.Row) = Application.WorksheetFunction.SumIfs(.Range("L:L"), .Range("H:H"), "Créé", .Range("O:O"), Range("A" & Target.Row))
Range("F" & Target.Row) = Application.WorksheetFunction.SumIfs(.Range("L:L"), .Range("H:H"), "Prête", .Range("O:O"), Range("A" & Target.Row))
Range("G" & Target.Row) = Application.WorksheetFunction.SumIfs(.Range("L:L"), .Range("H:H"), "Evaluée", .Range("O:O"), Range("A" & Target.Row))
Range("H" & Target.Row) = Application.WorksheetFunction.SumIfs(.Range("L:L"), .Range("H:H"), "Affectée", .Range("O:O"), Range("A" & Target.Row))
Range("I" & Target.Row) = Application.WorksheetFunction.SumIfs(.Range("L:L"), .Range("H:H"), "Développée", .Range("O:O"), Range("A" & Target.Row))
Range("J" & Target.Row) = Application.WorksheetFunction.SumIfs(.Range("L:L"), .Range("H:H"), "Terminée", .Range("O:O"), Range("A" & Target.Row))
End With
End If
End Sub


Cdlmnt
Via
0
Florentin55 Messages postés 7 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 7 juillet 2017
3 août 2016 à 21:59
Ok,parfait tes explications.
Cela me permettra de pouvoir reprendre la macro et l'adapter dans différentes situations.
Encore merci à toi.
0