XL 2019 fichier récap

alex45720

XLDnaute Nouveau
Bonjour à vous,

Je souhaiterai faire une zone de récap de commande dans le fichier joint, mais je bloque sur les formules.

La feuille de temps à gauche permet à chaque utilisateur de saisir les heures sur lesquelles il travaille pour chaque commande.
L'utilisateur ne saisi que les zones blanches : Numéro de commande, client, nom de l'affaire et le nombre d'heures travaillées suivant les taches qu'il fait (NDC, Etude, ...)
Les zones bleues et vertes se remplissent automatiquement.

Ce que je souhaiterai faire, c'est rajouté un récap (zones jaunes) des affaires de la semaine.
J'aimerai que les lignes dans ce récap se remplissent automatiquement.
Si l'utilisateur saisi une nouvelle commande, alors la ligne se rajoute au récap.
Mais l'utilisateur peut travailler plusieurs fois dans la semaine sur une même commande, et faire des tâches différentes. Dans ce cas les lignes doivent se modifier et non se rajouter.

Est ce que quelqu'un aurait une idée de comment faire ?
Je ne pense pas que ce soit très compliqué mais je cherhce depuis ce matin en vain.

Bonne journée.

Cordialement.
 

Pièces jointes

  • Feuille de temps vide + récap.xlsx
    14.5 KB · Affichages: 25

Jacky67

XLDnaute Barbatruc
Bonjour et bienvenue,
Une piste par vba en PJ avec ce code
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lig&
    If Intersect(Target, [A5:g10,A12:g17,A19:g24,A26:g31,A33:g38,A40:g41,A43:g44]) Is Nothing Then Exit Sub
    If Cells(Target.Row, 1) = "" Then Exit Sub
    If IsNumeric(Application.Match(Cells(Target.Row, 1).Value, Range("j:j"), 0)) Then
        lig = Application.Match(Cells(Target.Row, 1).Value, Range("j:j"), 0)
    Else
        lig = Cells(Rows.Count, "J").End(xlUp).Row + 1
    End If
    Application.EnableEvents = False
    Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Copy
    Cells(lig, "j").PasteSpecial Paste:=xlPasteValues
    Application.EnableEvents = True
    Application.CutCopyMode = False
End Sub
 

Pièces jointes

  • Feuille de temps vide + récap.xlsm
    21.8 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Alex,Jcky,
Une autre approche en PJ avec un minimum de VBA pour enregistrer les nouveaux N° de Cde, le reste par formules à base de IndexEquiv et de Somme.Si.
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A5:A45")) Is Nothing Then
        If IsError(Application.Match(Target, [NoCde], 0)) = True Then
            N = Application.CountIf([NoCde], "*")
            [NoCde].Cells(N + 1, 1) = Target
        End If
    End If
End Sub
Code:
=SIERREUR(INDEX($B$5:$B$50;EQUIV($J4;$A$5:$A$50;0));"")
=SOMME.SI($A$5:$A$50;$J4;D5:D50)
 

Pièces jointes

  • Feuille de temps vide + récap.xlsm
    21.1 KB · Affichages: 9

alex45720

XLDnaute Nouveau
Bonjour,

Merci pour vos réponses.... la solution de sylvanu à l'air de mieux marcher.
Ça fonctionne correctement pour la 1ère ligne, mais il y a un décalage dans le total des heures ensuite lorsque les commandes se rajoutent..... et j'arrive pas à savoir d'où ça vient.

J'ai mis en PJ le fichier partiellement rempli.

Cdlt
 

Pièces jointes

  • Feuille de temps vide + récap modifié.xlsm
    21 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Les formules de mesure de temps doivent être du type :
VB:
=SOMME.SI($A$5:$A$50;$J4;D$5:D$50)
et non
Code:
=SOMME.SI($A$5:$A$50;$J4;D5:D50)
sinon quand on tire cela devient D6:D51, etc ...
 

Pièces jointes

  • Feuille de temps vide + récap modifié.xlsm
    20.8 KB · Affichages: 4

Discussions similaires

Réponses
5
Affichages
366

Statistiques des forums

Discussions
312 166
Messages
2 085 894
Membres
103 021
dernier inscrit
Sergyl75