Bonjour,
C'est encore moi
J'attaque la troisième et dernière grosse partie du projet que je développe pour mon entreprise et je sèche complétement depuis 2 jours. A savoir, je dois générer lorsque l'utilisateur clique sur un bouton d'une barre personnalisé du ruban, un graphique(peu importe le type de graphique, ça reste adaptable). La feuille de donnée contient :
-Colonne A : des noms de personnes qui sont répétés x fois
-Colonne B : un nombre d'heure
-Colonne C : des dates de travail
-Colonne D : un numéro de projet
-Colonne E : un nom de projet
J'aimerais générer des graphiques pour retrouver le nombre d'heure que chaque personne à travaillé(se sera une bonne base de travail pour ensuite faire les autres graphiques que je dois implémenter).
J'ai essayé plusieurs choses :
-J'ai lu qu'on pouvait faire les instructions SQL de base pour pouvoir récupérer les données qu'on souhaite, ce que j'ai fait en faisant un sum sur le nombre puis un group by sur le nom de la personne(voir code ci dessous). Cependant je ne sais pas comment récupérer ces données pour soit les collées vers une autre feuille pour pouvoir génerer mon graphique grâce à cette plage, soit les affecter directement dans une plage de donnée.
-Essayer de passer directement par une plage de données, mais je n'y arrive pas, il ne regroupe pas les heures par les noms des personnes et me met tous en vrac dans un graphique. Peut être qu'il existe une instruction similaire au sum et group by en VBA mais malgrès de longues recherches, je n'ai rien trouvé qui va dans ce sens sur le net
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim sSql As String sSql = "SELECT Nom, sum(Nombre)FROM Feuil2 GROUP BY Nom"
Merci pour vos réponses,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 Dim MonGraph As Chart Dim MaPlage As Range Dim MaSerie As Series Set MaPlage = Worksheets("Feuil2").Range(Worksheets("Feuil2").Cells(1, 1), Worksheets("Feuil2").Range("B1").End(xlDown).Offset(1, 0)) Set MonGraph = ThisWorkbook.Charts.Add MonGraph.ChartType = xlBarClustered MonGraph.SetSourceData , MaPlage, xlColumns For compteur = 2 To MaPlage.Columns.Count Set MaSerie = MonGraph.SeriesCollection.NewSeries MaSerie.Values = "=" & MaPlage.Columns(compteur).Address(True, True, xlR1C1, True) MaSerie.XValues = "=" & MaPlage.Columns(2).Address(True, True, xlR1C1, True) Next compteur ActiveChart.ChartArea.Select ActiveChart.Axes(xlValue).Select ActiveChart.Axes(xlValue).MinimumScale = 0 ActiveChart.Axes(xlValue).MaximumScale = 50 ActiveChart.Axes(xlValue).MajorUnit = 5 ActiveChart.Axes(xlValue).MinorUnit = 5 With MonGraph .HasTitle = True With .ChartTitle .Characters.Text = "Graphique" .Shadow = True .Border.Weight = xlHairline End With End With
Thomas
Partager