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

Florentin55 Messages postés 8 Statut Membre -  
Florentin55 Messages postés 8 Statut Membre -
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

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    1. Florentin55 Messages postés 8 Statut Membre
       
      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
  3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    1. Florentin55 Messages postés 8 Statut Membre
       
      Ok,parfait tes explications.
      Cela me permettra de pouvoir reprendre la macro et l'adapter dans différentes situations.
      Encore merci à toi.
      0