Ajout automatique de données
Bonjour à tous,
Dans le cadre d'un projet je cherche à visualiser la charge de travail d'un employé en fonction du temps. La première feuille de ce fichier comprend le nom du projet en cours, le nom de la personne qui s'en occupe et la charge de travail associé au projet en fonction du mois. Sur la deuxième feuille, on retrouve un tableau récapitulatif de la charge de travail en fonction des personnes et du mois (en effet un employé peux travailler sur plusieurs projets donc la deuxième feuille somme toutes ses charges de travail) et aussi un graphique la représentant. (voir fichier joint)
Dans le cas où un nouvel employé arrive dans l'entreprise, serait-il possible, si on ajoute son nom sur le premier tableau, d'ajouter automatiquement une ligne sur le tableau de la feuille 2 avec le nom du nouvel employé et sa charge de travail associé puis qu'elle apparaisse sur le graphique ? Et donc je souhaiterais ne pas toucher à la deuxième feuille du tout.
Merci d'avance.
Bonjour,
Une première réponse.
Un soupçon de Power Query pour créer un TCD et un GCD.
A te relire.
Cdlt.
Salut ope_af,
Salut Jean-Eric,
début de réponse car mes compétences et connaissances VBA actuelles s'arrêtent où commencent les TCD, Dico et autres gâteries...
Il manque donc, tu as compris, la MÁJ automatique du graphique. Pour l'instant, via l'icône "Filtre" du graphique, il suffit d'indiquer la plage de données en tapant Data, plage nommée contenant le tableau en feuille 'Synthèse'.
Dans le code, j'espère qu'un crack en TCD-GCD de passage se fera un plaisir et un devoir de compléter les lignes remplies de ?? ??...
- Pour le reste, afin de créer un nouveau projet, clique sur le bouton en feuille 'Projets' [B2] ;
- [B-C] s'allument de gris, t'invitant à compléter ces premières données ;
- quand c'est fait, le tableau et ses formules se mettent à jour en feuille 'Synthèse'.
Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim iRow%, iRowT%, iIdx%, sCol$
'
Application.EnableEvents = False
'
If Not Intersect(Target, Range("B:C")) Is Nothing Then
If Target.Interior.ColorIndex = 15 Then
iRow = Target.Row
If Range("B" & iRow).Value <> "" And Range("C" & iRow).Value <> "" Then
Range("B" & iRow & ":C" & iRow).Interior.Color = xlNone
Range("D" & iRow & "O" & iRow).NumberFormat = "0%"
Range("D" & iRow & "O" & iRow).Value = 0
iIdx = WorksheetFunction.CountIf(Range("C4:C" & iRow), Range("C" & iRow).Value)
With Worksheets("Synthèse")
If iIdx = 1 Then
iRowT = .Range("B" & Rows.Count).End(xlUp).Row + 1
.Range("B" & iRowT & ":N" & iRowT).Insert shift:=xlDown
.Range("B" & iRowT).Value = Range("C" & iRow).Value
For x = 4 To iRowT
For y = 3 To 14
sCol = Chr(65 + y)
.Range(Chr(64 + y) & x).NumberFormat = "0%"
If x = iRowT Then .Range(Chr(64 + y) & x).Value = 0
.Range(Chr(64 + y) & x).FormulaLocal = "=SOMME.SI(Projets!C4:C" & iRow & ";B" & x & ";Projets!" & sCol & "4:" & sCol & iRow & ")"
Next
Next
.Range("B3:N" & iRowT).Name = "Data"
End If
' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
End With
Range("D" & iRow).Select
End If
End If
End If
'
Application.EnableEvents = True
'
End Sub
Espérant une suite heureuse et constructive...
A+