Erreur d’exécution '1004': parèmetre non valide

hobine

XLDnaute Nouveau
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
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

  • site.zip
    49.8 KB · Affichages: 40
Dernière édition:

Caillou

XLDnaute Impliqué
Re : Erreur d’exécution '1004': parèmetre non valide

Bonjour,

la ligne
ActiveChart.SeriesCollection(k).Points(intoffsetligne).Select
plante lorsque le variable intoffsetligne est égal à 14. Ce qui est normal car la série ne comporte que 13 points.
Regardes du côté de ta boucle While

A+

Caillou
 

hobine

XLDnaute Nouveau
Re : Erreur d’exécution '1004': parèmetre non valide

Bonjour Cailou.
Merci pour votre apport.
j'ai pu m'en débrouiller autrement.
Pour ceux qui seront intéressés , voici le bout de code qu'il fallait
Dim X As Chart
Set X = Charts(1)
'Nom de la feuille où est le graphe
s = X.Name

X.Activate

If intoffsetligne < ActiveChart.SeriesCollection(k).Points.Count Then
With ActiveChart.SeriesCollection(k).Points(intoffsetligne)

.MarkerBackgroundColorIndex = intcouleur
.MarkerForegroundColorIndex = intcouleur
.MarkerSize = intsize
End With
End If
 

hobine

XLDnaute Nouveau
Re : Erreur d’exécution '1004': parèmetre non valide

Bonjour Cailou.
Merci pour votre apport.
j'ai pu m'en débrouiller autrement.
Pour ceux qui seront intéressés , voici le bout de code qu'il fallait
Dim X As Chart
Set X = Charts(1)
'Nom de la feuille où est le graphe
s = X.Name

X.Activate

If intoffsetligne < ActiveChart.SeriesCollection(k).Points.Count Then
With ActiveChart.SeriesCollection(k).Points(intoffsetligne)

.MarkerBackgroundColorIndex = intcouleur
.MarkerForegroundColorIndex = intcouleur
.MarkerSize = intsize
End With
End If
 

Statistiques des forums

Discussions
312 165
Messages
2 085 882
Membres
103 009
dernier inscrit
dede972