Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/11/2011, 09h43   #1
Membre habitué
 
Avatar de GDMINFO
 
Inscription : avril 2007
Messages : 334
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2007
Messages : 334
Points : 116
Points : 116
Par défaut Graphique et sélection de cases discontinues

Bonjour,

je souhaite faire un graphique en utilisant des cases qui ne sont pas continues, pour être précis les cases [(A,indiceMeca);(A, indiceEP);(A,indiceInt);(A,indiceExt);(C, indiceMeca);(C, indiceEP);(C,indiceInt);(C,indiceExt)]

J'ai donc les colonnes A et C qui sont fixées par contre les variables indiceMECA, indiceEP, indiceInt et indiceExt sont des variables initialisées précédemment dans le code.

Voici ce que j'ai fait :

Code :
1
2
3
4
5
6
7
8
 
With Worksheets(NomFeuille)
 
        ActiveSheet.Shapes.AddChart.Select
        ActiveChart.ChartType = xlRadarMarkers
 
        ActiveChart.SetSourceData Source:=.Range("A" & IndiceEP & ";A" & IndiceMECA & ";A" & IndicePrestInt & ";A" & IndicePrestExt & ";C" & IndiceEP & ";C" & IndiceMECA & ";C" & IndicePrestInt & ";C" & IndicePrestExt)
        End With
Cette syntaxe me donne un graphe où les cases sélectionnées ne sont pas celles que je souhaite, je pense que range ne doit pas prendre des cases séparées mais en continues, j'ai fait un essai en utilisant Cells() mais ça ne fonnctionnait pas du tout.

Avez vous une idée de comment s'y prendre ?

Merci beaucoup,

GDM.
GDMINFO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 10h20   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonjour
Ci-joint proposition utilisant 2 variables tableau (à adapter sur ton cas)
Code :
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
Sub Radar()
Dim Ch As ChartObject
Dim NS As Series
Dim X(1 To 4) As Double, Y(1 To 4) As Double
Dim IndiceEP As Long, IndiceMECA As Long, IndicePrestInt As Long, IndicePrestExt As Long
 
Application.ScreenUpdating = False
With Worksheets("Feuil1")
    '====ici pour mon Test, remplissage des tableaux X et Y
    IndiceEP = 1: IndiceMECA = 4: IndicePrestInt = 7: IndicePrestExt = 10
    X(1) = .Range("A" & IndiceEP): X(2) = .Range("A" & IndiceMECA): X(3) = .Range("A" & IndicePrestInt): X(4) = .Range("A" & IndicePrestExt)
    Y(1) = .Range("C" & IndiceEP): Y(2) = .Range("C" & IndiceMECA): Y(3) = .Range("C" & IndicePrestInt): Y(4) = .Range("C" & IndicePrestExt)
    '====Fin remplissage des tableaux X et Y
 
    Set Ch = .ChartObjects.Add(60, 80, 250, 250)    'Les nombres désignent Gauche, haut, largeur et hauteur de l'objt graphique
    With Ch.Chart
        .ChartType = xlRadarMarkers
        Set NS = .SeriesCollection.NewSeries
        With NS
            .XValues = X
            .Values = Y
        End With
        Set NS = Nothing
    End With
    Set Ch = Nothing
End With
End Sub
EDIT:
La première proposition rompt le lien entre les données et le graphique (si on change les données, le graphique reste figé sur les données de sa création)
De la même façon et en utilisant l'union des plages, le lien entre données et graphique n'est pas rompu
Code :
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
Sub Radar2()
Dim Ch As ChartObject
Dim NS As Series
Dim X As Range, Y As Range
Dim IndiceEP As Long, IndiceMECA As Long, IndicePrestInt As Long, IndicePrestExt As Long
 
Application.ScreenUpdating = False
With Worksheets("Feuil1")
    '====ici pour mon Test
    IndiceEP = 1: IndiceMECA = 4: IndicePrestInt = 6: IndicePrestExt = 10
    Set X = Union(.Range("A" & IndiceEP), .Range("A" & IndiceMECA), .Range("A" & IndicePrestInt), .Range("A" & IndicePrestExt))
    Set Y = Union(.Range("C" & IndiceEP), .Range("C" & IndiceMECA), .Range("C" & IndicePrestInt), .Range("C" & IndicePrestExt))
    '====Fin remplissage
 
    Set Ch = .ChartObjects.Add(60, 80, 250, 250)    'Les nombres désignent Gauche, haut, largeur et hauteur de l'objt graphique
    With Ch.Chart
        .ChartType = xlRadarMarkers
        Set NS = .SeriesCollection.NewSeries
        With NS
            .XValues = X
            .Values = Y
        End With
        Set NS = Nothing
    End With
    Set X = Nothing
    Set Y = Nothing
    Set Ch = Nothing
End With
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/11/2011, 08h41   #3
Membre habitué
 
Avatar de GDMINFO
 
Inscription : avril 2007
Messages : 334
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2007
Messages : 334
Points : 116
Points : 116
Par défaut Merci !

Cela fonctionne parfaitement
GDMINFO est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h25.


 
 
 
 
Partenaires

Hébergement Web