Erreur d'exécution 91 : Variable objet ou variable de bloc With non définie

Bonjour à tous,

Je débute sur VBA, et essaye de créer un graphique à partir des données de 2 lignes non continues d'un tableau que vous trouverez ci-dessous :

capture d e cran 2023 04 25 a 16 24 41

Je souhaite mettre sur un graphique les données de mon gap de taux par rapport aux maturités, et donc sans prendre en compte les lignes actifs et passifs.

Mon code est le suivant (l'erreur apparait lorsque je définis mes plages maturités et gap) :

Sub CréationGraphique()

Dim PlageMaturité As Range
Dim PlageGap As Range
Dim PlageGraphique As Range

PlageMaturité = Range("B2", Range("B2").End(xlToRight))
PlageGap = Range("B5", Range("B5").End(xlToRight))
PlageGraphique = Union(PlageMaturité, PlageGap)

ThisWorkbook.Charts.Add After:=Worksheets("Gap")

  With ActiveChart
    .ChartType = xlLine
    .SetSourceData Sheets("Gap").PlageGraphique
    .Name = "Graphique Gap"
  End With

End Sub

Comment faire pour faire un graphique qu'avec ces 2 lignes de données ?

Je vous remercie par avance !

Lamine

Hello,

tu ne peux pas inverser la place des lignes ?

Tu mets Actifs et Passifs en dessous Gap de taux?

@+

Bonjour

Et comme ceci ?

Sub CréationGraphique()
Dim plage As Range

Set plage = ThisWorkbook.Sheets("Gap").Range("B2").CurrentRegion
ThisWorkbook.Charts.Add After:=Worksheets("Gap")

With ActiveChart
    .ChartType = xlLine
    .SetSourceData plage
    .Name = "Graphique Gap"
End With
End Sub

si ok, pensez à

Crdlt

Salut les gars,

Merci pour vos réponses rapides.

@Baroute78 : Je souhaiterais, de préférence, garder l'ordre défini avec Actifs et Passifs sous Maturité.

@Dan : Avec ton code, j'obtiens un graphique avec tous les éléments du tableau (donc avec Actifs et Passifs que je souhaiterais retirer des données du graphique).Il

Il y a-t-il un moyen de sélectionner que les lignes Maturités et Gap de taux pour obtenir le graphique ?

Bonjour

Avec ton code, j'obtiens un graphique avec tous les éléments du tableau (donc avec Actifs et Passifs que je souhaiterais retirer des données du graphique).Il

Lorsque le graph est créé, est -ce la ligne maturité correspond à l'axe des abscisses ou les données font-elles fait partie du graph ? En gros soit on a deux courbes ou uniquement celle des données GAP

Salut Dan,

Voila ce que j'obtiens :

capture d e cran 2023 04 26 a 10 32 13

En ordonnée, j'ai bien mes données, et en abscisse, il semble que ce soit bien les maturités.

Par contre je souhaiterais que les courbes Actifs, Passifs et Maturité ne soient pas prises en compte dans le graphique.

Re

Oui je savais ce que vous aviez pour le graphique...

Par contre je souhaiterais que les courbes Actifs, Passifs et Maturité ne soient pas prises en compte dans le graphique.

Le souci est si vous faites cela manuellement le graph n'est pas le même que par code.
Ma question est de savoir si l'axe des abscisses doit correspondre aux valeurs de la ligne Maturité ou pas. Cela fait une différence car si on tient pas compte de cette ligne, le premier résultat de GAP commence à 1 sur cet axe.

Exemple de cela donnerait

presse papier03

Oui c'est exactement ce que je souhaiterais obtenir avec l'axe des abscisse correspondant aux maturités (donc 0 pris en compte pour le traçage de la courbe) !

re

Essayez avec ce code

Sub CréationGraphique()
Dim plage As Range
Dim axeabscisse As Range
Dim dlg As Byte, dcl As Byte

With ThisWorkbook
    With .Sheets("GAP")
        dlg = .Range("B2").CurrentRegion.Rows.Count + 1
        dcl = .Range("B2").CurrentRegion.Columns.Count + 1
        Set axeabscisse = .Range(.Cells(2, 3), .Cells(2, dcl))
        Set plage = .Range(.Cells(dlg, 2), .Cells(dlg, dcl))
    End With
    .Charts.Add After:=Worksheets("Gap")
End With

With ActiveChart
    .SetSourceData plage
    .SeriesCollection(1).XValues = axeabscisse
    .ChartType = xlLine
    .Name = "Graphique Gap"
End With
End Sub

Si ok -->

Crdlt

Re Dan,

Ton code fonctionne bien. Par contre, j'ai 2 fois 0 à l'abscisse. Comment retirer celui en trop ?

capture d e cran 2023 04 26 a 18 10 49

Je vais t'embêter un peu mais pourrais tu me commenter un peu ton code afin que je puisse le comprendre ?

Je te remercie d'avance.

Re Dan,

Finalement j'ai pu réadapté ton code avec celui que j'avais écrit, et ça marche !

Sub CréationGraphique()

' La variable Plage va correspondre aux valeurs de y dans notre graphique (axe des ordonnées).
Dim Plage As Range
' La variable AxaAbscisse va correspondre aux valeurs de x dans notre graphique.
Dim AxeAbscisse As Range

' On donne à notre variable abscisse les valeurs de 0 à 5 qui correspondent aux valeurs des maturités de nos opérations.
Set AxeAbscisse = Range(Cells(2, 4), Cells(2, 8))
' On donne à notre variable ordonnée les valeurs de notre gap de taux.
Set Plage = Range(Cells(5, 2), Cells(5, 8))

ThisWorkbook.Charts.Add After:=Worksheets("Gap")

  With ActiveChart
    .ChartType = xlLine
    ' On spécifie les valeurs du gap de taux à l'ordonnée.
    .SetSourceData Plage
    ' On spécifie les valeurs de notre axe des abscisse.
    .SeriesCollection(1).XValues = AxeAbscisse
    .Name = "Graphique Gap"
  End With

End Sub

Pour le 0 en trop à l'abscisse, il fallait juste, dans l'affectation de AxeAbscisse, commencer à 1 (Cells(2,4)) au lieu de 0 (Cells(2,3)) !

Je te remercie grandement pour ton aide !

Bien à toi.

Lamine

Rechercher des sujets similaires à "erreur execution variable objet bloc definie"