Bonjour,
jJ'ai une macro qui met à jour les points de mon graph radar. Pour cela, ma macro va regarder les valeurs dans un onglet et met à jour mon graphe. J'ai créé 3 series sur mon graphe.
Chaque fois que l'on execute la maco, le bug apparait à cette ligne avec comme message d'erreur: Erreur d’exécution '1004': parèmetre non valide
j'ai tout essayé sans succès. C'est pourquoi je me tourne vers vous en espérant avoir une suite favorable.
je joins à ce message un exemple de mon fichier contenant ma macro.
Je vous remercie par avance de votre éclairage.
Cdlt
A.
jJ'ai une macro qui met à jour les points de mon graph radar. Pour cela, ma macro va regarder les valeurs dans un onglet et met à jour mon graphe. J'ai créé 3 series sur mon graphe.
Chaque fois que l'on execute la maco, le bug apparait à cette ligne avec comme message d'erreur: Erreur d’exécution '1004': parèmetre non valide
Code:
Sub graph_radar2()
'
' couleur_points Macro
Dim ColorColone(2) As String
Dim ipxp As Double, nc As Double
ColorColone(1) = "Couleur_N"
ColorColone(2) = "Couleur_N_1"
strOnglet = "Cartographie"
intCouleur = 46 'par défaut
intsize = 7
Worksheets(strOnglet).Activate
Application.ScreenUpdating = False
For k = 1 To 2
intOffsetLigne = 1
While Worksheets(strOnglet).Range("Carto_Poids_N").Offset(intOffsetLigne + 1, 0).Value <> ""
' caractéristiques des symboles pour l'année N
If k = 1 Then
ipxp = Worksheets(strOnglet).Range("Criticite_N").Offset(intOffsetLigne + 1, 0).Value
nc = Worksheets(strOnglet).Range("ControleN").Offset(intOffsetLigne + 1, 0).Value
caract = taille_couleur(ipxp, nc)
intCouleur = caract(1)
intsize = caract(2)
Else
If Worksheets(strOnglet).Range("Criticite_N_1").Offset(intOffsetLigne + 1, 0).Value <> "" Then
ipxp = Worksheets(strOnglet).Range("Criticite_N").Offset(intOffsetLigne + 1, 0).Value
nc = Worksheets(strOnglet).Range("ControleN").Offset(intOffsetLigne + 1, 0).Value
caract = taille_couleur(ipxp, nc)
intCouleur = caract(1)
intsize = caract(2)
Else
intCouleur = xlNone
intsize = 7
End If
End If
Dim X As Chart
Set X = Charts(1)
'Nom de la feuille où est le graphe
s = X.Name
X.Activate
ActiveChart.SeriesCollection(k).Select
'erreur s'affiche sur ce bout de code
ActiveChart.SeriesCollection(k).Points(intOffsetLigne).Select
With Selection
.MarkerBackgroundColorIndex = intCouleur
.MarkerForegroundColorIndex = intCouleur
If k = 1 Then
.MarkerStyle = xlSquare
ElseIf k = 2 Then
.MarkerStyle = xlCircle
End If
.MarkerSize = intsize
.Shadow = False
End With
intOffsetLigne = intOffsetLigne + 1
Wend
Next k
intOffsetLigne = 1
While Worksheets(strOnglet).Range("Carto_Poids_N").Offset(intOffsetLigne + 1, 0).Value <> ""
If Worksheets(strOnglet).Range("Carto_Poids_N_1").Offset(intOffsetLigne + 1, 0).Value = "" Then
' MsgBox "je passe bien ici"
ActiveChart.SeriesCollection(2).Select
ActiveChart.SeriesCollection(2).Points(intOffsetLigne).Select
With Selection
.MarkerStyle = -4142
End With
End If
'fin
intOffsetLigne = intOffsetLigne + 1
Wend
X.Activate
End Sub
Sub efface()
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
sh.Delete
Next
End Sub
Function taille_couleur(ipxp As Double, nc As Double)
Dim tbl(2) As Variant
Dim couleur As Variant
Dim taille As Variant
If nc = 1 And ipxp > 6 Then
'couleur jaune
couleur = 6
taille = 4
ElseIf nc = 1.5 And ipxp > 6 Then
couleur = 6
taille = 5
ElseIf nc = 2 And ipxp > 6 Then
couleur = 6
taille = 6
ElseIf nc = 2 And ipxp <= 6 Then
'couleur jaune clair à trouver
couleur = 6
taille = 6
'couleur violette 39 et rouge 46
ElseIf nc = 2.5 And ipxp < 10 Then
couleur = 39
taille = 7
ElseIf nc = 2.5 And ipxp >= 10 Then
couleur = 46
taille = 7
ElseIf nc = 3 And ipxp < 8 Then
couleur = 39
taille = 8
ElseIf nc = 3 And ipxp >= 8 Then
couleur = 46
taille = 8
ElseIf nc = 3.5 And ipxp < 8 Then
couleur = 39
taille = 8
ElseIf nc = 3.5 And ipxp >= 8 Then
couleur = 46
taille = 8
ElseIf nc = 4 And ipxp < 8 Then
couleur = 39
taille = 9
ElseIf nc = 4 And ipxp >= 8 Then
couleur = 46
taille = 9
ElseIf nc = 4.5 And ipxp < 8 Then
couleur = 39
taille = 10
ElseIf nc = 4.5 And ipxp >= 8 Then
couleur = 46
taille = 10
ElseIf nc = 5 And ipxp < 8 Then
couleur = 39
taille = 11
ElseIf nc = 5 And ipxp >= 8 Then
couleur = 46
taille = 11
ElseIf nc = "" And ipxp = "" Then
couleur = 46
taille = 11
Else
MsgBox ipxp
MsgBox nc
MsgBox "tous les cas n'ont pas été envisagés"
End If
tbl(1) = couleur
tbl(2) = taille
taille_couleur = tbl
End Function
j'ai tout essayé sans succès. C'est pourquoi je me tourne vers vous en espérant avoir une suite favorable.
je joins à ce message un exemple de mon fichier contenant ma macro.
Je vous remercie par avance de votre éclairage.
Cdlt
A.
Pièces jointes
Dernière édition: