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 :

[VBA-E] Erreur d'éxecution '1004'


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 307
    Par défaut [VBA-E] Erreur d'éxecution '1004'
    Bonjour à tous!

    Je souhaite créer une macro qui mette à jour les sources de données d'un graphique.
    Ce graphique possède 2 séries.

    La macro reçoit 3 arguments :
    1°) La ligne max
    2°) La colonne 1 (correspondant aux données de la séries 1)
    3°) La colonne 2 (correspondant aux données de la séries 2)

    Voici mon code :
    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
    Sub PourcentCmdParFN(intNbRows, intCol1, intCol2)
    '
    ' PourcentCmdParFN Macro
    ' Macro enregistrée le 03/01/2007 par administrateur
    '
     
    '
        ActiveChart.SeriesCollection(2).XValues = "='Commandes FN'!R4C1:R" & (3 + intNbRows) & "C1"
     
        ActiveChart.SeriesCollection(2).Values = "='Commandes FN'!R4C" & intCol2 & ":R" & (3 + intNbRows) & "C" & intCol2
     
        ActiveChart.SeriesCollection(1).XValues = "='Commandes FN'!R4C1:R" & (4 + intNbRows) & "C1"
     
        If intCol2 > 4 Then
            ActiveChart.SeriesCollection(1).Values = "='Commandes FN'!R4C" & intCol1 & ":R" & (3 + intNbRows) & "C" & intCol1
        Else
            ActiveChart.SeriesCollection(1).Values = "={0}"
        End If
     
    End Sub
    Je lance cette macro à partir d'un prog VB.Net (framework 1.1), et j'utilise MS Excel 2000 SP-3.

    A l'éxecution, l'erreur suivante apparait :
    Erreur d'éxection '1004'
    La méthode 'seriescollection' de l'objet '_chart' a échoué
    L'erreur intervient sur la 1ère ligne.
    Voici la manière dont j'appelle la macro : PourcentCmdParFN(14, 14, 15)

    Merci pour votre aide!
    Lionel.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    A la place de
    ActiveChart.SeriesCollection(2).XValues = "='Commandes FN'!R4C1:R" & (3 + intNbRows) & "C1"
    essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Valeur = Worksheets("Commandes FN").Range(Cells(Activecell.row+4,Activecell.column+1), _
    cells(3 + intNbRows,Activecell.row+1)).value
        ActiveChart.SeriesCollection(2).XValues = Valeur
    Si l'erreur passe à la deuxième ligne, c'est que c'est bon
    A+

    PS - en espérant ne pas m'être trompé dans le passage des adresses...

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Si j'ai bien compris, tu as un classeur Excel avec un graphique, et tu souhaites modifier le graphique via un programme externe écrit en vb.net? Je me trompe?

    Le code que tu proposes est un code VBA, issu du classeur contenant le graphique? Je me trompe?


    Dans ce cas,
    n'est pas un objet valide.
    Tu dois, dans ton code vb.net
    - utiliser une référence à Excel
    - créer un objet excel.workbook et ouvrir le fichier contenant le graphique
    - créer un objet excel.chart(*) pointant vers le graphique que tu veux modifier
    - modifier ton code en remplaçant ActiveChart par l'objet Chart créé

    (*) Je n'ai pas vérifié l'appellation exacte, à toi de voir, notamment dans l'aide de VB.Net lié à Office.

    Ok?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Oui, Pierre, tu as raison mais, pour ma propre gouverne, peut-on utiliser la formule Excel "='Commandes FN'!R4C1:R" & (3 + intNbRows) & "C1" dans ce cas-là ?

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par ouskel'n'or
    Oui, Pierre, tu as raison mais, pour ma propre gouverne, peut-on utiliser la formule Excel "='Commandes FN'!R4C1:R" & (3 + intNbRows) & "C1" dans ce cas-là ?
    Non, XValues demande une variable string.

    Lorsque l'on veut référencer une plage, on utilise la propriété FORMULA comme pour un objet Cell ou Range.

    Dans l'image zippée jointe, on voit les propriétés et leur valeur dans un espion VBA... (C'est parfois utile, l'espion VBA... )

    Ai-je répondu?

    Bonne année Ouskel'n'or
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    En effet, on voit plein de choses... C'est ta copine qui s'appelle Martine ?
    Pour la formule, je respire, j'ai cru que j'avais raté un cours
    Bonne année à toi aussi, Pierre

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    C'est même mon épouse...

    La prochaine fois, je nettoyerai mieux mes données

    A bientôt
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. message d'erreur d'éxecution '1004'
    Par VELO1222 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/01/2011, 15h56
  2. [VBA][export] Erreur d'exécution '1004'
    Par le_niak dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/07/2008, 20h33
  3. [VBA-E] erreur d'execution '1004' sur masquage feuille
    Par Cupoftea dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 18h34
  4. [VBA-E] Erreur d'exécution '1004'
    Par bibi5883 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/03/2007, 14h31
  5. [VBA-E] erreur d'exécution 1004 ?
    Par toy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2006, 13h15

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