[excel]fonction avec plusieurs paramètres
Résolu
LeTom46
Messages postés
30
Date d'inscription
Statut
Membre
Dernière intervention
-
Darkito Messages postés 1191 Date d'inscription Statut Membre Dernière intervention -
Darkito Messages postés 1191 Date d'inscription Statut Membre Dernière intervention -
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
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:
- [excel]fonction avec plusieurs paramètres
- Fonction si et excel - Guide
- Liste déroulante excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Word et excel gratuit - Guide
- Parametres de mon ordinateur - Guide
3 réponses
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
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
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øƒ
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øƒ