XL 2019 fichier récap

  • Initiateur de la discussion Initiateur de la discussion alex45720
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
110
Réponses
17
Affichages
803
Réponses
5
Affichages
186
Réponses
16
Affichages
842
Réponses
5
Affichages
386
Réponses
6
Affichages
208
  • Question Question
Microsoft 365 concours pétanque
Réponses
0
Affichages
191
Retour