Impossible de créer un graphe à partir de sources variables

jbballeyguier

XLDnaute Nouveau
Bonjour,

j'ai un léger problème avec une macro de création de graphe.

La plage de données source de mon graphe risque de ne jamais avoir la même taille, et de ne pas être au même emplacement.

Je décide donc de mettre ces données dans des variables : mais la macro plante disant "Nombre d'arguments incorrects ou affectation de propriété incorrecte"

Voilà un bout de la macro :

Code:
    Sheets.Add after:=ActiveSheet
    With Sheets(i + 1)
        .Select
        .Name = "Graphs " & CA
    End With
    
    GraphsCA = Sheets("Graphs " & CA).Name
    Sheets(GraphsCA).Activate
    
    Jur = DebJur & ":" & FinJur
    Impl = DebImp & ":" & FinImp
    CpteDoss = DebCpteDoss & ":" & FinCpteDoss
    
    Charts.Add
    With ActiveChart
        .ChartType = xlLineMarkers
        .SetSourceData Source:=Sheets(CA).Range(Jur, Impl, CpteDoss), PlotBy:=xlRows
        .Location xlLocationAsObject, Name:=GraphsCA
    End With
L'idée est de calculer les plage de données et de les insérer dans le "SetSourceData" tel quel. La macro plante justement au niveau de la création du graphe...

Une idée ? Merci d'avance ;)
 
Dernière édition:

liloucmoi

XLDnaute Occasionnel
Re : Impossible de créer un graphe à partir de sources variables

Bonjour,

Petit extrait de l'aide sur la propriété range :
Code:
Propriété Range telle qu'elle s'applique aux objets Application, Range 
et Worksheet.

Cette propriété renvoie un objet Range qui représente une cellule ou une plage 
de cellules.

expression.Range(Cell1, Cell2)
expression      Obligatoire. Expression qui renvoie un des objets ci-dessus.

Cell1     Argument de type Variant obligatoire. Nom de la plage. Il doit s'agir 
d'une référence de type A1 dans le langage de la macro. Il peut inclure
 l'opérateur de plage (le signe deux-points), l'opérateur d'intersection (un 
espace) ou l'opérateur de liaison (une virgule). Il peut aussi inclure des 
signes dollar, mais ils sont ignorés. Vous pouvez utiliser un nom défini en 
local dans n'importe quel endroit de la plage. Si vous utilisez un nom, il est
 considéré comme appartenant au langage de la macro.

Cell2     Argument de type Variant facultatif. Cellule située dans le coin supérieur 
gauche et le coin inférieur droit de la plage. Il peut s'agir d'un objet Range 
qui contient une seule cellule, une colonne ou une ligne entière, ou il peut 
s'agir d'une chaîne qui désigne une seule cellule dans le langage de la macro.
Il est donc clair que ta syntaxe de range est fausse.

Petit extrait de l'aide sur la collection Range :

Code:
Union, méthode
Pour renvoyer des plages multizones, c'est-à-dire, des plages composées d'au 
moins deux blocs de cellules contiguës, utilisez Union(range1, range2, ...). 
L'exemple suivant montre comment créer un objet correspondant à l'union 
des plages A1:B2 et C3:D4, puis sélectionner la plage définie.

Dim r1 As Range, r2 As Range, myMultiAreaRange As Range
Worksheets("sheet1").Activate
Set r1 = Range("A1:B2")
Set r2 = Range("C3:D4")
Set myMultiAreaRange = Union(r1, r2)
myMultiAreaRange.Select
		
Si vous utilisez des sélections contenant plusieurs zones, la propriété Areas est 
très utile. En effet, elle subdivise une sélection multizones en objets Range
 distincts, puis renvoie les objets sous la forme d'une collection. La propriété 
Count peut être appliquée à la collection renvoyée afin de vérifier si une 
sélection contient plusieurs zones comme indiqué dans l'exemple suivant.

Sub NoMultiAreaSelection()
    NumberOfSelectedAreas = Selection.Areas.Count
    If NumberOfSelectedAreas > 1 Then
        MsgBox "You cannot carry out this command " & _
            "on multi-area selections"
    End If
End Sub
Une piste pour que tu puisse avancer.

Xldment.
 
Dernière édition:

jbballeyguier

XLDnaute Nouveau
Re : Impossible de créer un graphe à partir de sources variables

Bonjour,

je ne crois pas que ma syntaxe de range soit fausse.

Par exemple si je fais un :

Code:
Range(Jur, Impl, CpteDoss).Select
ça marche.

C'est au niveau du graph que ça plante...
 

jbballeyguier

XLDnaute Nouveau
Re : Impossible de créer un graphe à partir de sources variables

Bonjour,

je ne crois pas que ma syntaxe de range soit fausse.

Par exemple si je fais un :

Code:
Range(Jur, Impl, CpteDoss).Select
ça marche.

C'est au niveau du graph que ça plante...
[EDIT]

Je corrige : impossible de faire une sélection de range avec 3 variables (la sélection marche avec 2)
 

liloucmoi

XLDnaute Occasionnel
Re : Impossible de créer un graphe à partir de sources variables

re,

Je pense que j'aurais fais cela comme ceci :

Code:
[b]    Dim Jur, Impl, CpteDoss as Range[/b]
    
    Jur = [b]Sheets(CA).Range(DebJur & ":" & FinJur)[/b]
    Impl = [b]Sheets(CA).Range(DebImp & ":" & FinImp)[/b]
    CpteDoss = [b]Sheets(CA).Range(DebCpteDoss & ":" & FinCpteDoss)[/b]
    
    Charts.Add
    With ActiveChart
        .ChartType = xlLineMarkers
        .SetSourceData Source:=[B]Union(Jur, Impl, CpteDoss)[/b], PlotBy:=xlRows
        .Location xlLocationAsObject, Name:=GraphsCA
    End With
Xldment.
 
Dernière édition:

jbballeyguier

XLDnaute Nouveau
Re : Impossible de créer un graphe à partir de sources variables

Merci,

en fait si je met ça, il m'indique "Variable objet ou variable de bloc With non définie" au niveau de l'insertion des données dans la variable "CpteDoss"
 

liloucmoi

XLDnaute Occasionnel
Re : Impossible de créer un graphe à partir de sources variables

re,

Sans le code complet (surtout les déclarations) que tu as fait, je ne vois pas trop ou ca peut planter.

A te lire.
 

Discussions similaires


Haut Bas