Changer type de courbe graphique en fonction d'un critère[resolu]

Etn

XLDnaute Occasionnel
Bonjour !

Je souhaiterais avoir 2 types de courbes différentes en fonction du fait si le mois est realisé ou prévisionnel.

Si le mois est realisé alors trait plein.
Si le mois est prévisionnel alors trait en pointillé.

Est-ce possible ?

J'ai joint un fichier modèle.

Merci d'avance !

Etn
 

Pièces jointes

  • Modele.xlsx
    11.7 KB · Affichages: 30

Etn

XLDnaute Occasionnel
Bonsoir CB60 et gardien de phare,

C'est actuellement la méthode que j'avais trouvé (je voulais savoir s'il était possible d'y parvenir en utilisant qu'une seule courbe).

En revanche j'avais essayé avec si "prévisionnel" alors "" sauf que ça me mettais 0. Je n'ai pas pensé à utiliser le NA().

Merci de votre aide, je devrais pouvoir me débrouiller avec cela.

Bonne soirée,

Etn
 

CB60

XLDnaute Barbatruc
Capt1.JPG
Bonjour à tous
Avec le travail de gardien de phare et une petite modif, possibilité d'avoir X courbes et pas besoin de sélectionner le graph en amont
Code:
Sub Pointille()
Dim i As Integer
    graph = ActiveSheet.Shapes(1).Name
   ' MsgBox graph
    ActiveSheet.ChartObjects(graph).Activate
B = ActiveChart.SeriesCollection.Count
'MsgBox B
For A = 1 To B
    With ActiveChart.SeriesCollection(A)
        For i = 1 To 12
            With .Points(i)
                If Range("b" & i + 1) = "Prévisionnel" Then
                    .Format.Line.DashStyle = msoLineSysDash
                End If
            End With
        Next
    End With
Next A
End Sub
 

Pièces jointes

  • M_Graph_GdPhare.xlsm
    20.4 KB · Affichages: 36
Dernière édition:

CB60

XLDnaute Barbatruc
Bonne soirée
J'ai ajouté un else afin de permette la mise à jour des courbes si l'état "Réalisé et Prévisionnel " change
Code:
Sub Pointille()
Dim i As Integer
    graph = ActiveSheet.Shapes(1).Name
    ActiveSheet.ChartObjects(graph).Activate
B = ActiveChart.SeriesCollection.Count

For a = 1 To B
    With ActiveChart.SeriesCollection(a)
        For i = 1 To 12
            With .Points(i)
                If Range("b" & i + 1) = "Prévisionnel" Then
                    .Format.Line.DashStyle = msoLineSysDot
                    Else
                    .Format.Line.DashStyle = msoLineSolid
                End If
            End With
        Next
    End With
Next a
End Sub
 

Discussions similaires

Réponses
6
Affichages
301