IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur d’exécution '1004': parèmetre non valide [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 70
    Par défaut Erreur d’exécution '1004': parèmetre non valide
    Bonjour,
    J'ai une macro qui met à jour les points de mon graphe radar. Pour cela, ma macro va regarder les valeurs dans un onglet et met à jour mon graphe. J'ai créé 3 séries sur mon graphe.
    Chaque fois que l'on exécute la maco, le bug apparait à cette ligne avec comme message d'erreur: Erreur d’exécution '1004': paramètre non valide
    le bug apparait à la ligne 50
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    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.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    tu envoies un fichier en lecture seule et, de plus, avec des onglets manquants.
    Donc si j'essaie de lancer ton programme, déjà erreur à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(strOnglet).Activate
    Je ne vais donc, pas plus loin.

    Bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 70
    Par défaut
    Bonjour Casefayere,
    Un merci pour la peine que tu te donnes pour ma cause perdu.
    En effet, vous vous aviez raison. j'avais oublie de changer le nom de l'onglet dans la macro vba. Ci-joint une nouvelle pièce jointe avec la macro corrigée.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 20
    Par défaut
    Bonjour,

    Le code bug à cet endroit parce qu'il essaye de sélectionner le point 14 (intoffsetligne) pour la série de données numéro 2 (AdR année N-1) qui ne comporte que 13 valeurs.

    Le point 14 n'existe pas.

    Après une recherche rapide sur le net, tu peux utiliser la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(1).Points.Count
    pour compter le nombre de points d'une série de données.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 70
    Par défaut
    Comment l'introduire cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(1).Points.Count
    dans ma macro pour qu'elle puisse fonctionner?
    Je dois t'avouer que j'ai déjà eu toutes les peines du monde pour en arriver là.
    Je suis pas expert en macro . Je l'utilise juste pour qu'elle me dépanne de temps en temps.
    J'avais remarqué justement qu'elle ne prenne pas en compte la série (2) de mon graphe à partir du point 14

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 70
    Par défaut
    Bonsoir VinceVBA,
    Merci pour ton indice.
    Je me suis servi de cela pour résoudre mon problème.

    pour ceux qui en auront un jour besoin.
    Voici le petit bout de code nécessaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2009, 07h42
  2. Réponses: 8
    Dernier message: 11/11/2008, 17h33
  3. erreur d'execution argument non valide
    Par mahboub dans le forum Access
    Réponses: 1
    Dernier message: 13/12/2006, 20h52
  4. Erreur : Opération inter-threads non valide
    Par cadeau dans le forum C++/CLI
    Réponses: 1
    Dernier message: 12/12/2006, 09h07
  5. [JSP] Erreur Etat de curseur non valide
    Par logica dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 03/05/2005, 14h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo