[excel]fonction avec plusieurs paramètres

Résolu/Fermé
LeTom46 Messages postés 30 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 15 mai 2008 - 25 janv. 2008 à 10:54
Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 - 25 janv. 2008 à 11:53
Bonjour,
J'ai un probléme en VB, j'ai la fonction suivante :

Sub color(resul1 As String, resul2 As String, resul3 As String)

Dim resul As String
If "0,0000" < resul And resul <= "0,2500" Then
ActiveChart.SeriesCollection(var).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 46
.Pattern = xlSolid
End With
End If
Next var

End Sub


En fait je voudrai que mon String "resul" prenne la valeur des paramètres resul1, resul2 et resul3 successivement.
Cela m'éviterai beaucoup de ligne de codes... Si je pouvais créer un seul bloc qui prenne succéssivement les valeurs de resul1, resul2, resul3.

J'espère que vous m'avez compris et que vous pourrez m'aider.
Encore merci
Bonne journée
Sportivement
Tom
A voir également:

3 réponses

Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 545
25 janv. 2008 à 11:06
Bonjour,
Tu peux faire un tableau de "resul" et le parcourir avec une boucle for
--
Tøƒ
0
LeTom46 Messages postés 30 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 15 mai 2008
25 janv. 2008 à 11:37
Merci c'est bon j'ai réussi à faire marcher tout ça:)!!!

Si quelqu'un cherche je met le solution que j'ai prise :

Sub color(resul1 As String, resul2 As String, resul3 As String, resul4 As String, resul5 As String)

Dim var As Integer

Dim tablresul(5) As String
tablresul(1) = resul1
tablresul(2) = resul2
tablresul(3) = resul3
tablresul(4) = resul4
tablresul(5) = resul5


For i = 1 To 5
If "0,0000" < tablresul(i) And tablresul(i) <= "0,2500" Then
ActiveChart.SeriesCollection(i).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 46
.Pattern = xlSolid
End With
End If


If "0,2500" < tablresul(i) And tablresul(i) <= "0,5000" Then
ActiveChart.SeriesCollection(i).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 45
.Pattern = xlSolid
End With
End If

If "0,5" < tablresul(i) And tablresul(i) <= "0,75" Then
ActiveChart.SeriesCollection(i).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 44
.Pattern = xlSolid
End With
End If

If "0,75" < tablresul(i) And tablresul(i) <= "1" Then
ActiveChart.SeriesCollection(i).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 43
.Pattern = xlSolid
End With
End If

Next i


End Sub
0
Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 545
25 janv. 2008 à 11:53
Tu pourrais encore alléger ton code car tu as beaucoup d'informations redondantes.
Tu devrais tout d'abord faire ton bloc "if" avec seulement une affectation de variable dedans du genre "couleur =..."
après tu n'auras qu'à mettre les informations sur le graphique avec la couleur sélectionnée.

tu peux également simplifier le bloc if en le remplacant par un select case

select case tablresul(i)
case Is > 1
couleur=???
case Is > 0.75
couleur=43
case Is > 0.5
couleur=44
case Is > 0.25
couleur=45
case Is > 0
couleur=46
end select

de plus tu n'as pas besoin dep réciser des intervales si tu mets les cas dans le bon ordre.
par exemple pour valeur=0.8, le premier cas va être faux et le 2eme va etre bon. le 3eme,le 4eme et le 5eme cas ne vont pas être traités.

--
Tøƒ
0