Bonsoir
Pourriez vous me sortir une epine du pied?
Sur la macro suivante, qui change la couleur des barres horizontales d'un
graphique selon leur valeur, j'ai parfois un message d'erreur du type:
erreur d'execution 13, incompatibilté de type.
Toujours sur la ligne If CDbl(rep) < 44 Then.
Et là, la macro coince...
Voici la macro dans sa totalité. D'ou peut bien venir ce bug?
Sub FormatConditionnelGraphiqueCMJ()
'
' Macro enregistrée le 04/12/2005 par PG
'Compte le nombre de séries
For c = 1 To ActiveChart.SeriesCollection.Count
'compte le nombre de points
For d = 1 To ActiveChart.SeriesCollection(c).Points.Count
'teste la présente des étiquettes sur le graphs
If ActiveChart.SeriesCollection(c).Points(d).HasDataLabel = False Then
test = 1
'affiche les étiquettes
ActiveChart.SeriesCollection(c).Points(d).HasDataLabel = True
'récupère les informations des étiquettes
rep = ActiveChart.SeriesCollection(c).Points(d).DataLabel.Text
'convertit l'étiquette en nombre et fais le test
If CDbl(rep) < 44 Then
'suivant le résultat, change la couleur
ActiveChart.SeriesCollection(c).Points(d).Interior.ColorIndex = 3
Else
ActiveChart.SeriesCollection(c).Points(d).Interior.ColorIndex = 19
End If
'remets dans l'état initial le graphique
'If test = 1 Then ActiveChart.SeriesCollection(c).Points(d).HasDataLabel =
False
Next d
Next c
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
JB
Bonjour,
If CDbl(Replace(rep,".",",")) < 44 Then.
JB
Bonsoir Pourriez vous me sortir une epine du pied? Sur la macro suivante, qui change la couleur des barres horizontales d'un graphique selon leur valeur, j'ai parfois un message d'erreur du type: erreur d'execution 13, incompatibilté de type. Toujours sur la ligne If CDbl(rep) < 44 Then. Et là, la macro coince... Voici la macro dans sa totalité. D'ou peut bien venir ce bug?
Sub FormatConditionnelGraphiqueCMJ() ' ' Macro enregistrée le 04/12/2005 par PG 'Compte le nombre de séries For c = 1 To ActiveChart.SeriesCollection.Count 'compte le nombre de points For d = 1 To ActiveChart.SeriesCollection(c).Points.Count 'teste la présente des étiquettes sur le graphs If ActiveChart.SeriesCollection(c).Points(d).HasDataLabel = False Then test = 1 'affiche les étiquettes ActiveChart.SeriesCollection(c).Points(d).HasDataLabel = True 'récupère les informations des étiquettes rep = ActiveChart.SeriesCollection(c).Points(d).DataLabel.Text 'convertit l'étiquette en nombre et fais le test If CDbl(rep) < 44 Then 'suivant le résultat, change la couleur ActiveChart.SeriesCollection(c).Points(d).Interior.ColorIndex = 3 Else ActiveChart.SeriesCollection(c).Points(d).Interior.ColorIndex = 19 End If 'remets dans l'état initial le graphique 'If test = 1 Then ActiveChart.SeriesCollection(c).Points(d).HasDataLa bel = False Next d Next c End Sub
Bonjour,
If CDbl(Replace(rep,".",",")) < 44 Then.
JB
Bonsoir
Pourriez vous me sortir une epine du pied?
Sur la macro suivante, qui change la couleur des barres horizontales d'un
graphique selon leur valeur, j'ai parfois un message d'erreur du type:
erreur d'execution 13, incompatibilté de type.
Toujours sur la ligne If CDbl(rep) < 44 Then.
Et là, la macro coince...
Voici la macro dans sa totalité. D'ou peut bien venir ce bug?
Sub FormatConditionnelGraphiqueCMJ()
'
' Macro enregistrée le 04/12/2005 par PG
'Compte le nombre de séries
For c = 1 To ActiveChart.SeriesCollection.Count
'compte le nombre de points
For d = 1 To ActiveChart.SeriesCollection(c).Points.Count
'teste la présente des étiquettes sur le graphs
If ActiveChart.SeriesCollection(c).Points(d).HasDataLabel = False Then
test = 1
'affiche les étiquettes
ActiveChart.SeriesCollection(c).Points(d).HasDataLabel = True
'récupère les informations des étiquettes
rep = ActiveChart.SeriesCollection(c).Points(d).DataLabel.Text
'convertit l'étiquette en nombre et fais le test
If CDbl(rep) < 44 Then
'suivant le résultat, change la couleur
ActiveChart.SeriesCollection(c).Points(d).Interior.ColorIndex = 3
Else
ActiveChart.SeriesCollection(c).Points(d).Interior.ColorIndex = 19
End If
'remets dans l'état initial le graphique
'If test = 1 Then ActiveChart.SeriesCollection(c).Points(d).HasDataLa bel =
False
Next d
Next c
End Sub
Bonsoir Pourriez vous me sortir une epine du pied? Sur la macro suivante, qui change la couleur des barres horizontales d'un graphique selon leur valeur, j'ai parfois un message d'erreur du type: erreur d'execution 13, incompatibilté de type. Toujours sur la ligne If CDbl(rep) < 44 Then. Et là, la macro coince... Voici la macro dans sa totalité. D'ou peut bien venir ce bug?
Sub FormatConditionnelGraphiqueCMJ() ' ' Macro enregistrée le 04/12/2005 par PG 'Compte le nombre de séries For c = 1 To ActiveChart.SeriesCollection.Count 'compte le nombre de points For d = 1 To ActiveChart.SeriesCollection(c).Points.Count 'teste la présente des étiquettes sur le graphs If ActiveChart.SeriesCollection(c).Points(d).HasDataLabel = False Then test = 1 'affiche les étiquettes ActiveChart.SeriesCollection(c).Points(d).HasDataLabel = True 'récupère les informations des étiquettes rep = ActiveChart.SeriesCollection(c).Points(d).DataLabel.Text 'convertit l'étiquette en nombre et fais le test If CDbl(rep) < 44 Then 'suivant le résultat, change la couleur ActiveChart.SeriesCollection(c).Points(d).Interior.ColorIndex = 3 Else ActiveChart.SeriesCollection(c).Points(d).Interior.ColorIndex = 19 End If 'remets dans l'état initial le graphique 'If test = 1 Then ActiveChart.SeriesCollection(c).Points(d).HasDataLa bel = False Next d Next c End Sub
Francois L
Bonsoir Pourriez vous me sortir une epine du pied? Sur la macro suivante, qui change la couleur des barres horizontales d'un graphique selon leur valeur, j'ai parfois un message d'erreur du type: erreur d'execution 13, incompatibilté de type. Toujours sur la ligne If CDbl(rep) < 44 Then. Et là, la macro coince... Voici la macro dans sa totalité. D'ou peut bien venir ce bug?
Bonjour,
Indépendamment de la réponse de JB, tu peux simplifier ton code. Inutile de toucher aux étiquettes pour récupérer la valeur de chaque point.
Essaie ce qui suit :
Sub FormatConditionnelGraphiqueCMJ() For c = 1 To ActiveChart.SeriesCollection.Count For d = 1 To ActiveChart.SeriesCollection(c).Points.Count With ActiveChart.SeriesCollection(c) rep = Application.WorksheetFunction.Index(.Values, d) If rep < 44 Then .Points(d).Interior.ColorIndex = 3 Else .Points(d).Interior.ColorIndex = 19 End If End With Next d Next c End Sub
-- François L
Bonsoir
Pourriez vous me sortir une epine du pied?
Sur la macro suivante, qui change la couleur des barres horizontales d'un
graphique selon leur valeur, j'ai parfois un message d'erreur du type:
erreur d'execution 13, incompatibilté de type.
Toujours sur la ligne If CDbl(rep) < 44 Then.
Et là, la macro coince...
Voici la macro dans sa totalité. D'ou peut bien venir ce bug?
Bonjour,
Indépendamment de la réponse de JB, tu peux simplifier ton code. Inutile
de toucher aux étiquettes pour récupérer la valeur de chaque point.
Essaie ce qui suit :
Sub FormatConditionnelGraphiqueCMJ()
For c = 1 To ActiveChart.SeriesCollection.Count
For d = 1 To ActiveChart.SeriesCollection(c).Points.Count
With ActiveChart.SeriesCollection(c)
rep = Application.WorksheetFunction.Index(.Values, d)
If rep < 44 Then
.Points(d).Interior.ColorIndex = 3
Else
.Points(d).Interior.ColorIndex = 19
End If
End With
Next d
Next c
End Sub
Bonsoir Pourriez vous me sortir une epine du pied? Sur la macro suivante, qui change la couleur des barres horizontales d'un graphique selon leur valeur, j'ai parfois un message d'erreur du type: erreur d'execution 13, incompatibilté de type. Toujours sur la ligne If CDbl(rep) < 44 Then. Et là, la macro coince... Voici la macro dans sa totalité. D'ou peut bien venir ce bug?
Bonjour,
Indépendamment de la réponse de JB, tu peux simplifier ton code. Inutile de toucher aux étiquettes pour récupérer la valeur de chaque point.
Essaie ce qui suit :
Sub FormatConditionnelGraphiqueCMJ() For c = 1 To ActiveChart.SeriesCollection.Count For d = 1 To ActiveChart.SeriesCollection(c).Points.Count With ActiveChart.SeriesCollection(c) rep = Application.WorksheetFunction.Index(.Values, d) If rep < 44 Then .Points(d).Interior.ColorIndex = 3 Else .Points(d).Interior.ColorIndex = 19 End If End With Next d Next c End Sub
-- François L
Pierre
Merci à tous, la solution de François marche impec Pierre
Merci à tous, la solution de François marche impec
Pierre
rep = Application.WorksheetFunction.Index(.Values, d) If rep < 44 Then .Points(d).Interior.ColorIndex = 3 Else .Points(d).Interior.ColorIndex = 19 End If
Bonsoir Pourriez vous me sortir une epine du pied? Sur la macro suivante, qui change la couleur des barres horizontales d'un graphique selon leur valeur, j'ai parfois un message d'erreur du type: erreur d'execution 13, incompatibilté de type. Toujours sur la ligne If CDbl(rep) < 44 Then. Et là, la macro coince... Voici la macro dans sa totalité. D'ou peut bien venir ce bug?
Bonjour,
Indépendamment de la réponse de JB, tu peux simplifier ton code. In utile de toucher aux étiquettes pour récupérer la valeur de chaque poin t.
Essaie ce qui suit :
Sub FormatConditionnelGraphiqueCMJ() For c = 1 To ActiveChart.SeriesCollection.Count For d = 1 To ActiveChart.SeriesCollection(c).Points.Count With ActiveChart.SeriesCollection(c) rep = Application.WorksheetFunction.Index(.Values, d) If rep < 44 Then .Points(d).Interior.ColorIndex = 3 Else .Points(d).Interior.ColorIndex = 19 End If End With Next d Next c End Sub
-- Cordialement,
Michel Gaboly www.gaboly.com
Bonjour François,
Si tu veux simplifier, tu peux aussi remplacer le If Then Else par IIf :
rep = Application.WorksheetFunction.Index(.Values, d)
If rep < 44 Then
.Points(d).Interior.ColorIndex = 3
Else
.Points(d).Interior.ColorIndex = 19
End If
Bonsoir
Pourriez vous me sortir une epine du pied?
Sur la macro suivante, qui change la couleur des barres horizontales
d'un graphique selon leur valeur, j'ai parfois un message d'erreur du
type:
erreur d'execution 13, incompatibilté de type.
Toujours sur la ligne If CDbl(rep) < 44 Then.
Et là, la macro coince...
Voici la macro dans sa totalité. D'ou peut bien venir ce bug?
Bonjour,
Indépendamment de la réponse de JB, tu peux simplifier ton code. In utile
de toucher aux étiquettes pour récupérer la valeur de chaque poin t.
Essaie ce qui suit :
Sub FormatConditionnelGraphiqueCMJ()
For c = 1 To ActiveChart.SeriesCollection.Count
For d = 1 To ActiveChart.SeriesCollection(c).Points.Count
With ActiveChart.SeriesCollection(c)
rep = Application.WorksheetFunction.Index(.Values, d)
If rep < 44 Then
.Points(d).Interior.ColorIndex = 3
Else
.Points(d).Interior.ColorIndex = 19
End If
End With
Next d
Next c
End Sub
rep = Application.WorksheetFunction.Index(.Values, d) If rep < 44 Then .Points(d).Interior.ColorIndex = 3 Else .Points(d).Interior.ColorIndex = 19 End If
Bonsoir Pourriez vous me sortir une epine du pied? Sur la macro suivante, qui change la couleur des barres horizontales d'un graphique selon leur valeur, j'ai parfois un message d'erreur du type: erreur d'execution 13, incompatibilté de type. Toujours sur la ligne If CDbl(rep) < 44 Then. Et là, la macro coince... Voici la macro dans sa totalité. D'ou peut bien venir ce bug?
Bonjour,
Indépendamment de la réponse de JB, tu peux simplifier ton code. In utile de toucher aux étiquettes pour récupérer la valeur de chaque poin t.
Essaie ce qui suit :
Sub FormatConditionnelGraphiqueCMJ() For c = 1 To ActiveChart.SeriesCollection.Count For d = 1 To ActiveChart.SeriesCollection(c).Points.Count With ActiveChart.SeriesCollection(c) rep = Application.WorksheetFunction.Index(.Values, d) If rep < 44 Then .Points(d).Interior.ColorIndex = 3 Else .Points(d).Interior.ColorIndex = 19 End If End With Next d Next c End Sub
-- Cordialement,
Michel Gaboly www.gaboly.com
Francois L
Bonjour François,
Si tu veux simplifier, tu peux aussi remplacer le If Then Else par IIf :
En fait, je viens d'aller voir IIf, c'est simple. Mis à par la concis ion du code, quel avantage par rapport à un If Then Else (plus rapide ?).
-- Cordialement,
Michel Gaboly www.gaboly.com
Paul V
hello Michel,
Je me permets de mettre mon grain de sel pour te contredire un peu quoique je me doute que tu dois savoir ce qui suit;-)))))
Il est évident que dans la procédure dont vous parler, le gain de temps sera minime.
Mais d'un point de vue théorique, il faut savoir que les instructions en VBA s'effectuent une à une. Un appel au processeur. Donc il vaut toujours meius pour optimiser un code qui en a besoin faires des instructions complexe que multiplier les instructions.
Si l'appli est petite, il vaut mieux garder les multiples instructions pour la lisibilité, par contre. Le gain de temps étant dérisoire.
Pour optimiser, il vaut mieux, par exemple, écrire (code exemple non testé ;-) ) :
if inputbox("TARATA") > 10 then msgbox"Toto" : exit sub
que
Rep = inputbox("Tarata" if rep > 10 then msgbox "toto" exit sub end if
Le gain de temps théorique est de l'ordre du 500% ce qui à l'échelle du milliardième de seconde , ne représente rien mais multiplié, par exemple, dans un boucle, se fait vite sentir.
A+
Paul V, jour J - 5
"Michel Gaboly" a écrit dans le message de news:
Je n'avais pas vu ce message avant de poster ma réponse précédente ;-((
Pas vraiment d'autre avantage que la concision, et le moindre effort au clavier, mais cela n'est déjà pas mal. ;-))
Bonjour François,
Si tu veux simplifier, tu peux aussi remplacer le If Then Else par IIf :
En fait, je viens d'aller voir IIf, c'est simple. Mis à par la concision du code, quel avantage par rapport à un If Then Else (plus rapide ?).
-- Cordialement,
Michel Gaboly www.gaboly.com
hello Michel,
Je me permets de mettre mon grain de sel pour te contredire un peu quoique
je me doute que tu dois savoir ce qui suit;-)))))
Il est évident que dans la procédure dont vous parler, le gain de temps sera
minime.
Mais d'un point de vue théorique, il faut savoir que les instructions en VBA
s'effectuent une à une. Un appel au processeur.
Donc il vaut toujours meius pour optimiser un code qui en a besoin faires
des instructions complexe que multiplier les instructions.
Si l'appli est petite, il vaut mieux garder les multiples instructions pour
la lisibilité, par contre. Le gain de temps étant dérisoire.
Pour optimiser, il vaut mieux, par exemple, écrire (code exemple non testé
;-) ) :
if inputbox("TARATA") > 10 then msgbox"Toto" : exit sub
que
Rep = inputbox("Tarata"
if rep > 10 then
msgbox "toto"
exit sub
end if
Le gain de temps théorique est de l'ordre du 500% ce qui à l'échelle du
milliardième de seconde , ne représente rien mais multiplié, par exemple,
dans un boucle, se fait vite sentir.
A+
Paul V, jour J - 5
"Michel Gaboly" <michelgaboly@bluewin.ch> a écrit dans le message de news:
eMHD9WE8GHA.1012@TK2MSFTNGP05.phx.gbl...
Je n'avais pas vu ce message avant de poster ma réponse précédente ;-((
Pas vraiment d'autre avantage que la concision, et le moindre effort au
clavier, mais cela n'est déjà pas mal. ;-))
Bonjour François,
Si tu veux simplifier, tu peux aussi remplacer le If Then Else par IIf :
Je me permets de mettre mon grain de sel pour te contredire un peu quoique je me doute que tu dois savoir ce qui suit;-)))))
Il est évident que dans la procédure dont vous parler, le gain de temps sera minime.
Mais d'un point de vue théorique, il faut savoir que les instructions en VBA s'effectuent une à une. Un appel au processeur. Donc il vaut toujours meius pour optimiser un code qui en a besoin faires des instructions complexe que multiplier les instructions.
Si l'appli est petite, il vaut mieux garder les multiples instructions pour la lisibilité, par contre. Le gain de temps étant dérisoire.
Pour optimiser, il vaut mieux, par exemple, écrire (code exemple non testé ;-) ) :
if inputbox("TARATA") > 10 then msgbox"Toto" : exit sub
que
Rep = inputbox("Tarata" if rep > 10 then msgbox "toto" exit sub end if
Le gain de temps théorique est de l'ordre du 500% ce qui à l'échelle du milliardième de seconde , ne représente rien mais multiplié, par exemple, dans un boucle, se fait vite sentir.
A+
Paul V, jour J - 5
"Michel Gaboly" a écrit dans le message de news:
Je n'avais pas vu ce message avant de poster ma réponse précédente ;-((
Pas vraiment d'autre avantage que la concision, et le moindre effort au clavier, mais cela n'est déjà pas mal. ;-))
Bonjour François,
Si tu veux simplifier, tu peux aussi remplacer le If Then Else par IIf :