[excel]fonction avec plusieurs paramètres

Résolu
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
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. Bonjour,
    Tu peux faire un tableau de "resul" et le parcourir avec une boucle for
    --
    Tøƒ
    0
    1. 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
      1. 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