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.

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"
-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
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
Merci pour vos réponses,

Thomas