Macro de graphique qui bogue quand =""

Le
heartbreaker
Bonjour et bonne saint sylvestre à tous.

Pour ma part une question qui aura peut être l'air stupide mais en VBA j'ai
un code pour mettre de la couleur sur mes étiquette dans un nuage de point.
Mon code est correct quand toutes les valeurs sont remplis.
Le probléme est que souvent une valeur est vide est que la macro bogue donc.

Je vous joint mon morceau de code ainsi qu'une solution incorrecte (le
premier If):

'le graphique'
Dim nom_indice As String
Dim num As Integer
Dim i As Integer

Sheets("Graph").Select
ActiveSheet.ChartObjects("Graphique 1").Activate

ActiveChart.SeriesCollection(1).ApplyDataLabels
Type:=xlDataLabelsShowLabel, _
AutoText:=True, LegendKey:úlse
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 8
End With
'Remplace les valeurs de étiquettes par les noms des indices

For i = 1 To 30
nom_indice = Sheets("Données").Cells(i + 2, 1).Value

If Sheets("Données").Cells(i + 2, 5) = "" Then
GoTo Li203

ElseIf Sheets("Données").Cells(i + 2, 5) = "Actions Americaines" Then
num = 3
ElseIf Sheets("Données").Cells(i + 2, 5) = "Actions diversifiees" Then
num = 4
ElseIf Sheets("Données").Cells(i + 2, 5) = "Actions Europeennes" Then
num = 26
ElseIf Sheets("Données").Cells(i + 2, 5) = "Actions Francaises" Then
num = 5
ElseIf Sheets("Données").Cells(i + 2, 5) = "Actions Internationales"
Then
num = 1
ElseIf Sheets("Données").Cells(i + 2, 5) = "Actions Japon" Then
num = 6
ElseIf Sheets("Données").Cells(i + 2, 5) = "Actions OR / M.P" Then
num = 7
ElseIf Sheets("Données").Cells(i + 2, 5) = "Actions Pays Emergents"
Then
num = 8
ElseIf Sheets("Données").Cells(i + 2, 5) = "Actions Sectorielles" Then
num = 9
ElseIf Sheets("Données").Cells(i + 2, 5) = "Fonds a cliquet" Then
num = 10
ElseIf Sheets("Données").Cells(i + 2, 5) = "Fonds de Fonds" Then
num = 11
ElseIf Sheets("Données").Cells(i + 2, 5) = "Fonds Ethiques et
Solidaires" Then
num = 12
ElseIf Sheets("Données").Cells(i + 2, 5) = "Gestion Alternative" Then
num = 13
ElseIf Sheets("Données").Cells(i + 2, 5) = "Immobilier" Then
num = 14
ElseIf Sheets("Données").Cells(i + 2, 5) = "Mixtes Internationales
Dynamiques" Then
num = 15
ElseIf Sheets("Données").Cells(i + 2, 5) = "Mixtes Internationales
Equilibres" Then
num = 16
ElseIf Sheets("Données").Cells(i + 2, 5) = "Mixtes Internationales
Prudents" Then
num = 17
ElseIf Sheets("Données").Cells(i + 2, 5) = "MonŽtaires" Then
num = 18
ElseIf Sheets("Données").Cells(i + 2, 5) = "MonŽtaires PEA" Then
num = 19
ElseIf Sheets("Données").Cells(i + 2, 5) = "Obligations
Convertibles" Then
num = 20
ElseIf Sheets("Données").Cells(i + 2, 5) = "Obligations
Internationales" Then
num = 21
ElseIf Sheets("Données").Cells(i + 2, 5) = "Obligations Zone Euro"
Then
num = 22
ElseIf Sheets("Données").Cells(i + 2, 5) = "SCPI" Then
num = 23
ElseIf Sheets("Données").Cells(i + 2, 5) = "Supports ponctuels" Then
num = 24
End If
With ActiveChart.SeriesCollection(1).Points(i)
.HasDataLabel = True
.DataLabel.Text = nom_indice
.DataLabel.Font.ColorIndex = num
End With
Next i ("ici ligne 203")


Merci pour votre précieuse aide et Bonne fête de fin d'année !!!
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Carim
Le #5341381
Bonjour,

Il faudrait essayer :

If IsEmpty(Sheets("Données").Cells(i + 2, 5)) Then

Bon Réveillon
heartbreaker
Le #5341351
Merci pour ton aide
Mais malheureusement il me met au niveau de GoTo Li203 que c'est une
étiquette non définie.
Et si je remplace le elseif qui se trouve juste après par un If, VBA
m'indique que j'ai un next sans for.

C'est la catastrophe....
Je suis à court d'idée!!

Bonne fête


Bonjour,

Il faudrait essayer :

If IsEmpty(Sheets("Données").Cells(i + 2, 5)) Then

Bon Réveillon



isabelle
Le #5341321
bonjour et Bon Réveillon à toi également,

ajoute cette ligne juste avant (ou après) le "Next"

With ActiveChart.SeriesCollection(1).Points(i)
.HasDataLabel = True
.DataLabel.Text = nom_indice
.DataLabel.Font.ColorIndex = num
End With
Li203:
Next i("ici ligne 203")

isabelle


Merci pour ton aide
Mais malheureusement il me met au niveau de GoTo Li203 que c'est une
étiquette non définie.
Et si je remplace le elseif qui se trouve juste après par un If, VBA
m'indique que j'ai un next sans for.

C'est la catastrophe....
Je suis à court d'idée!!

Bonne fête


Bonjour,

Il faudrait essayer :

If IsEmpty(Sheets("Données").Cells(i + 2, 5)) Then

Bon Réveillon





FFO
Le #5341311
Salut à toi

J'ai essayé un bout de ton code celà semble fonctionner chez moi
Mais biensure je ne l'ai pas dans son intégralité !!!!

Mettant cette instruction :

GoTo Li203

as tu pensé à déclarer "Li203" quelque part dans ton code voir à la fin
ainsi :

Li203:

Et la suite ....

Un exemple chez moi j'ai mis ce bout de code :

For i = 1 To 2
If Sheets("Feuil1").Cells(i + 2, 5) = "" Then
GoTo Li203
ElseIf Sheets("Feuil1").Cells(i + 2, 5) = "Actions Americaines" Then MsgBox
("3")
ElseIf Sheets("Feuil1").Cells(i + 2, 5) = "Actions diversifiees" Then MsgBox
("4")

End If
Next
Li203:
MsgBox ("Gagné")

Cette suite d'instruction fonctionne parfaitement

Le GoTo Li203 renvoi le déroulement du code à l'endroit où figure Li203 dans
le code

Peut être une piste !!!!


Merci pour ton aide
Mais malheureusement il me met au niveau de GoTo Li203 que c'est une
étiquette non définie.
Et si je remplace le elseif qui se trouve juste après par un If, VBA
m'indique que j'ai un next sans for.

C'est la catastrophe....
Je suis à court d'idée!!

Bonne fête


Bonjour,

Il faudrait essayer :

If IsEmpty(Sheets("Données").Cells(i + 2, 5)) Then

Bon Réveillon





isabelle
Le #5341301
ps / lorsque l'on met un instruction GoTo zaza par exemple
il faut obligatoirement qu'il y ait un instruction zaza: quelque par dans la macro,
cela indique que la prochaine instruction executé sera celle qui suit zaza:

isabelle

bonjour et Bon Réveillon à toi également,

ajoute cette ligne juste avant (ou après) le "Next"

With ActiveChart.SeriesCollection(1).Points(i)
.HasDataLabel = True
.DataLabel.Text = nom_indice
.DataLabel.Font.ColorIndex = num
End With
Li203:
Next i("ici ligne 203")

isabelle


Merci pour ton aide
Mais malheureusement il me met au niveau de GoTo Li203 que c'est une
étiquette non définie.
Et si je remplace le elseif qui se trouve juste après par un If, VBA
m'indique que j'ai un next sans for.

C'est la catastrophe....
Je suis à court d'idée!!

Bonne fête


Bonjour,

Il faudrait essayer :

If IsEmpty(Sheets("Données").Cells(i + 2, 5)) Then

Bon Réveillon







heartbreaker
Le #5341281
Merci à vous tous pour cette aide.
Grace à vous ma requête ne bogue plus, mais il m'est impossible de voir
apparaitre mes données.
Afin que vous puissiez voir une eventuelle faille dans mon code je vous
joint mon fichier. (pas besoin de lancer les calculs automatiques car perte
de temps et non actualisations des données).
Tout se passe sur la feuille selection avec le bouton bleu pour lancer la
macro.

Voici le lien
http://download.yousendit.com/A0FF99900FF4A883

Toute suggestion d'amélioration est d'ailleurs la bienvenue.

Merci beaucoup si vous trouvez la solution.
Et encore une fois bonne fête de nouvelle année.




Salut à toi

J'ai essayé un bout de ton code celà semble fonctionner chez moi
Mais biensure je ne l'ai pas dans son intégralité !!!!

Mettant cette instruction :

GoTo Li203

as tu pensé à déclarer "Li203" quelque part dans ton code voir à la fin
ainsi :

Li203:

Et la suite ....

Un exemple chez moi j'ai mis ce bout de code :

For i = 1 To 2
If Sheets("Feuil1").Cells(i + 2, 5) = "" Then
GoTo Li203
ElseIf Sheets("Feuil1").Cells(i + 2, 5) = "Actions Americaines" Then MsgBox
("3")
ElseIf Sheets("Feuil1").Cells(i + 2, 5) = "Actions diversifiees" Then MsgBox
("4")

End If
Next
Li203:
MsgBox ("Gagné")

Cette suite d'instruction fonctionne parfaitement

Le GoTo Li203 renvoi le déroulement du code à l'endroit où figure Li203 dans
le code

Peut être une piste !!!!


Merci pour ton aide
Mais malheureusement il me met au niveau de GoTo Li203 que c'est une
étiquette non définie.
Et si je remplace le elseif qui se trouve juste après par un If, VBA
m'indique que j'ai un next sans for.

C'est la catastrophe....
Je suis à court d'idée!!

Bonne fête


Bonjour,

Il faudrait essayer :

If IsEmpty(Sheets("Données").Cells(i + 2, 5)) Then

Bon Réveillon







Publicité
Poster une réponse
Anonyme