erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

  • Initiateur de la discussion Initiateur de la discussion AliceD
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

AliceD

XLDnaute Nouveau
bonjour à tous,

je suis en stage de fin de cycle ingénieur et je dois assurer la mise à jour d'un outils d'analyse codé en VBA, je reprends donc le code de quelqu'un qui n'est plus dans l'entreprise.

Le but de l'outil est d'afficher sur un seul graphique des plages de données de taille variable selectionnées par l'utilisateur. Le nombre de plages varie en fonction des sélections de l'utilisateur.

Je crée le graphique dans une macro principale (pas de problème) et ensuite je lui applique les propriétés de mise en forme
Pour avoir un code le plus clair possible j'ai isolé dans une macro toutes les propriétés de mise en forme du graphique et c'est là que j'ai une erreur 1004 sur la ligne .Axes(xlCategory, xlPrimary).HasTitle = True

Code:
Dim Text_i As String

Sub Chart_property(ByVal g As Chart)


With g

    .ChartType = xlXYScatterLinesNoMarkers
    
    'Axes titles
   [COLOR="red"] .Axes(xlCategory, xlPrimary).HasTitle = True[/COLOR]
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Frequency (Hz)"
    .Axes(xlCategory).AxisTitle.AutoScaleFont = False
    .Axes(xlCategory).AxisTitle.Characters(Start:=1, Length:=14).Font.Name = "Arial"
    .Axes(xlCategory).AxisTitle.Characters(Start:=1, Length:=14).Font.FontStyle = "Gras"
    .Axes(xlCategory).AxisTitle.Characters(Start:=1, Length:=14).Font.Size = 14
    
    .Axes(xlValue, xlPrimary).HasTitle = True
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Text_i
    .Axes(xlValue).AxisTitle.AutoScaleFont = False
    .Axes(xlValue).AxisTitle.Characters(Start:=1, Length:=17).Font.Name = "Arial"
    .Axes(xlValue).AxisTitle.Characters(Start:=1, Length:=17).Font.FontStyle = "Gras"
    .Axes(xlValue).AxisTitle.Characters(Start:=1, Length:=17).Font.Size = 14
end with
end sub

Je ne vois vraiment pas d'où cette erreur peut venir surtout qu'à un moment ça marchait!

merci d'avance pour votre aide
Alice

ps : j'espère bien avoir respecter la mise en page du code dans la discussion
 
Re : erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

Bonjour,

ceci fonctionne chez moi..
Code:
With ActiveSheet.ChartObjects(1).Chart
    .ChartType = xlXYScatterLinesNoMarkers
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Frequency (Hz)"
    .Axes(xlCategory).AxisTitle.AutoScaleFont = False
    .Axes(xlCategory).AxisTitle.Characters(Start:=1, Length:=14).Font.Name = "Arial"
End With

A vérifier comment est initialisée ta variable g

bonne journée
@+
 
Re : erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

bonjour Pierrot93
merci d'avoir répondu, je débute sur le forum donc je n'avais pas vu que tu avais répondu hier

concernant ta remarque :
A vérifier comment est initialisée ta variable g

c'est peut être là la clé du problème : je définie ma variable g dans une macro qui se lance automatiquement à l'ouverture du classeur et dans cette même macro j'appelle Chart_property appliquée à g

Code:
Sub Launch24()

[COLOR="#9acd32"]'creation of the chart[/COLOR]
Set spectrum = Feuil24.ChartObjects.Add(Left:=0, Width:=570, Top:=0, Height:=438)
spectrum.Name = "Spectrum"
Set Graph = spectrum.Chart

Chart_property Graph
.
.
.
End Sub

j'ai essayer ton code en remplaçant
Code:
ActiveSheet.ChartObjects(1).Chart
par
Code:
Feuil24.spectrum.Graph
ce qui doit revenir au même non?

et j'ai le message d'erreur : méthode ou données introuvables

si tu as la gentillesse d'apporter une solution je suis preneuse!
sinon est-ce que c'est possible de créer un graph via l'outil classique et d'ensuite coder les données sources?

merci de ton aide et du temps passé sur mon problème
Alice
 
Re : erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

Bonsoir,
A première vue, je ne vois pas comment on peut mettre un titre sur des axes qui n'existent pas encore, le graphique ne comportant aucune données au moment de sa mise en forme
A+
kjin
 
Re : erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

bonjour,
c'est vrai que sans le programme c'est difficilement compréhensible.

Vu la complexité de mon programme (26 feuilles et 21 modules) plus la confidentialité de mon entreprise à respecter je te fais un mini programme qui reprend la démarche de l'original.

Il a aussi les même erreurs que l'original quand je le lance 😀
J'y ai inséré plein de commentaire sur son fonctionnement et sur mes erreurs probables

je vais essayer de le mettre en pièce jointe

encore merci pour ton aide
Bonne journée

Alice
 

Pièces jointes

Re : erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

Bonjour Kjin,
merci de ta remarque

effectivement on ne peut pas faire grand chose avec un graphique vide.

Mais mon soucis est que je ne sais pas quelle plage de donnée saisir car je vais chercher des données dans différentes feuilles et de manière aléatoire!

est-ce que c'est possible de lui donner une plage et de lui ajouter ensuite des séries de données qui ne sont pas dans la plage?

Bonne journée
Alice
 
Re : erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

Re,
effectivement on ne peut pas faire grand chose avec un graphique vide.
On peut mettre des données bidons et les supprimer ensuite, mais je ne vois pas pourquoi tu tiens absolument à mettre en forme le graphique avant de lui adjoindre des données !?
En outre, personnellement, j'opterais plutôt pour une interface type formulaire (UserForm) pour saisir les infos de configuration, ce qui serait plus lisible et intuitif pour l'utilisateur et moins source d'erreur. Dans le fichier joint, difficile de s'y retrouver.
A+
kjin
 
Re : erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

Re bonjour,
j'ai déjà essayé de faire mon interface avec une Userform mais ça ne correspondait pas avec ce que je voulais.
J'ai construit le graphique avec des données bidons, ça marche pour l'instant reste à voir ce que ça va donner quand je vais lui demander de prendre en compte celles choisies par l'utilisateur.

merci de tes conseils

bon we
Alice
 
Re : erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

j'ai déjà essayé de faire mon interface avec une Userform mais ça ne correspondait pas avec ce que je voulais.
Dommage, mais si tu le dis...
J'ai construit le graphique avec des données bidons
Quand je disais bidons je voulais dire une en se référant à une plage vide
A+
kjin
 
Re : erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

Bonjour à tous,
grâce aux conseils de Kjin j'ai réussi à créer mon graphique et à résoudre l'erreur '1004'.

j'ai même réussi à lui insérer une nouvelle série de données 😎

Mais je ne compte pas m'arrêter en si bon chemin et je demande l'insertion d'une autre série de données et là patatra ça bug!

j'ai le message suivant : 'Membre dde méthode ou de données introuvables' avec SeriesCollection.Newseries surlignés bleu (d'habitude c'est jaune mais là non).

je ne comprends vraiment pas : j'écris 2 fois une instruction, un coup elle marche et pas l'autre .

voici mon code
Code:
  Feuil24.Activate

  ActiveSheet.ChartObjects("Spectrum").Activate
  
 With ActiveChart
 .SeriesCollection.NewSeries
 .SeriesCollection(gst).XValues = "='Data EAK 2000'!R27C3:R68C3"
 .SeriesCollection(gst).Values = "='Data EAK 2000'!R27C" & 4 + 4 * sol + 2 * unit & ":R68C" & 4 + 4 * sol + 2 * unit
 .SeriesCollection(gst).Name = "=""EAK 2000- Horizontal"""
 .SeriesCollection(gst).Border.ColorIndex = 3

.HasLegend = True
.SeriesCollection(gst).Border.Weight = xlMedium
.SeriesCollection(gst).Border.ColorIndex = 3

' a partir d'ici ça plante
[COLOR="blue"].SeriesCollections.NewSeries[/COLOR]
.SeriesCollection(gst + 1).XValues = "='Data EAK 2000'!R27C3:R68C3"
.SeriesCollection(gst + 1).Values = "='Data EAK 2000'!R27C" & 5 + 4 * sol + 2 * unit & ":R68C" & 5 + 4 * sol + 2 * unit
.SeriesCollection(gst + 1).Name = "=""EAK 2000 - Vertical"""
   
 End With

je suis bientôt au bout de mon code alors je compte encore un fois sur vous pour m'aider.

merci par avance et bonne fin de journée
Alice
 
Re : erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

Bonsoir,
Tous les contrôles activeX sont-ils bien présents ? n'y a t-il pas des references manquantes ?...
Bref sans fichier difficile de t'aider..
Pour le code
Code:
With Feuil24
    Set cht = .ChartObjects("Spectrum").Chart
    With cht
        .HasLegend = True
        Set ns = .SeriesCollection.NewSeries
        With ns
            .XValues = "='Data EAK 2000'!R27C3:R68C3"
            .Values = "='Data EAK 2000'!R27C" & 4 + 4 * sol + 2 * unit & ":R68C" & 4 + 4 * sol + 2 * unit
            .Name = "EAK 2000- Horizontal"
            .Interior.ColorIndex = 3
            .Border.Weight = xlMedium
            .Border.ColorIndex = 3
        End With
        Set ns = .SeriesCollection.NewSeries
        With ns
            .Values = "='Data EAK 2000'!R27C" & 5 + 4 * sol + 2 * unit & ":R68C" & 5 + 4 * sol + 2 * unit
            .Name = "EAK 2000 - Vertical"
            .Interior.ColorIndex = 5
            .Border.Weight = xlMedium
            .Border.ColorIndex = 5
        End With
    End With
End With
Note qu'une boucle serait plus adécouettes
A+
kjin
 
Re : erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

Bonjour,
merci pour ta réponse toujours aussi rapide.

tous les contrôles activeX sont en place puisque ça marche pour l'ajout de la première série de données.
Pour le respect de la confidentialité des données contenues dans le fichier je ne peux pas l'envoyer malheureusement

je vais tester tout de suite ton code

bonne journée
Alice
 
Re : erreur 1004 Axes(xlCategory, xlPrimary).HasTitle

Re-bonjour,
ca marche nickel ton code, par contre qu'est-ce que tu entends par
Note qu'une boucle serait plus adécouettes
?

je ne vois pas trop sur quoi boucler.

encore une question : comment je peux récupérer l'index des séries de données que je viens d'ajouter? ça existe SeriesIndex ou un truc dans le genre

Je les crée dans un ordre aléatoire et je veux pouvoir les retrouver pour les effacer (après tout le mal que je me suis donné pour les créer c'est un peu bête mais c'est l'utilisateur qui veut ça ...)

encore merci pour ton aide promis je n'en abuserai plus longtemps

Alice
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
531
Réponses
4
Affichages
2 K
Réponses
9
Affichages
65 K
Retour