Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Optimisation du code

17 réponses
Avatar
Inkel
bonjour,

J'ai fais ce code et c,est un de mes premier en VBA, et je dois dire
que je suis assez fier de moi du fait qu'il fonctionne !
Mais je sais qu'il n'est pas terrible au niveau de l'optimisation et
je sais qu'il pourrait =EAtre beaucoup plus court. Est-ce que quelqu'un
pourrait m'aider ?

Cela sert =E0 calculer les frais de d=E9placement pour les employ=E9s, si
oui ou non et combien. Je peux envoyer le fichier si cela peut aider.

Merci.

Inkel ;-)

+++++++++++++++++++++++++++++++++++++++++++++++++++

Function vehicule(code, distance)

'Frais de d=E9placement : Axx =3D distance, FAxx =3D montant

'Sheets("Frais").Visible =3D True

billet =3D False

A60 =3D Sheets("Frais").Range("c7")
A91 =3D Sheets("Frais").Range("c8")
A121 =3D Sheets("Frais").Range("c9")

FA60 =3D Sheets("Frais").Range("e6")
FA91 =3D Sheets("Frais").Range("e7")
FA121 =3D Sheets("Frais").Range("e8")

B49 =3D Sheets("Frais").Range("c11")
B73 =3D Sheets("Frais").Range("c12")
B89 =3D Sheets("Frais").Range("c13")
B121 =3D Sheets("Frais").Range("c14")

FB49 =3D Sheets("Frais").Range("e10")
FB73 =3D Sheets("Frais").Range("e11")
FB89 =3D Sheets("Frais").Range("e12")
FB121 =3D Sheets("Frais").Range("e13")

If code =3D "" Then 'Vide
vehicule =3D ""

ElseIf code =3D "A" Or code =3D "a" Then 'Montr=E9al, Trois-Rivi=E8re=
s,
Qu=E9bec
& Estrie

If distance < A60 Then
vehicule =3D FA60
ElseIf distance < A91 Then
vehicule =3D FA91
ElseIf distance < A121 Then
vehicule =3D FA121
Else
billet =3D True
vehicule =3D autobus(region, billet)
End If

ElseIf code =3D "B" Or code =3D "b" Then 'Reste de la province

If distance < B49 Then
vehicule =3D FB49
ElseIf distance < B73 Then
vehicule =3D FB73
ElseIf distance < B89 Then
vehicule =3D FB89
ElseIf distance < B121 Then
vehicule =3D FB121
Else
billet =3D True
vehicule =3D autobus(region, billet)
End If

ElseIf code =3D "C" Or code =3D "c" Or code =3D "P" Or code =3D "p" The=
n
'Fournit par la compagnie
vehicule =3D " -"

Else
vehicule =3D ""

End If
'Sheets("Frais").Visible =3D False

End Function
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Function autobus(billet, region)

region =3D Sheets("Frais d=E9pl").Range("k8")

r1 =3D Sheets("Frais").Range("B21")
r2 =3D Sheets("Frais").Range("B22")
r3 =3D Sheets("Frais").Range("B23")
r4 =3D Sheets("Frais").Range("B24")
r5 =3D Sheets("Frais").Range("B25")
r6 =3D Sheets("Frais").Range("B26")
r7 =3D Sheets("Frais").Range("B27")
r8 =3D Sheets("Frais").Range("B28")
r9 =3D Sheets("Frais").Range("B29")

P1 =3D Sheets("Frais").Range("e21")
P2 =3D Sheets("Frais").Range("e22")
P3 =3D Sheets("Frais").Range("e23")
P4 =3D Sheets("Frais").Range("e24")
P5 =3D Sheets("Frais").Range("e25")
P6 =3D Sheets("Frais").Range("e26")
P7 =3D Sheets("Frais").Range("e27")
P8 =3D Sheets("Frais").Range("e28")
P9 =3D Sheets("Frais").Range("e29")

If billet =3D True Then

ElseIf region =3D r1 Then
autobus =3D P1

ElseIf region =3D r2 Then
autobus =3D P2

ElseIf region =3D r3 Then
autobus =3D P3

ElseIf region =3D r4 Then
autobus =3D P4

ElseIf region =3D r5 Then
autobus =3D P5

ElseIf region =3D r6 Then
autobus =3D P6

ElseIf region =3D r7 Then
autobus =3D P7

ElseIf region =3D r8 Then
autobus =3D P8

ElseIf region =3D r9 Then
autobus =3D P9

End If

End Function

7 réponses

1 2
Avatar
Inkel
Voici mon fichier : http://www.cijoint.fr/cjlink.php?file=cj200903/cijhWS h9la.xls

Peut-être ce sera plus clair.

Merci

On 27 mar, 03:24, FxM wrote:
Hello,

Je me réponds à moi-même car le serveur refuse la référence au message
d'Inkel. Bizarre ...

Que tu obtiennes 0 ne me surprend qu'à moitié dans le sens où il ma nque
au moins un 'end if'. Très sincèrement, je n'ai pas compris l'intér êt de
la variable billet puisque tu n'appelles la fonction autobus(...) que si
billet = True. Je le laisse quand même.

Je viens de tester sous Excel 2002 cette fonction dans un module standard :
 >> Function autobus(billet, region)
 >>   if billet then
 >>
 >> 'ce qui suit sur une ligne !
 >>    autobus = Sheets("Frais").Range("B21:B29").find(Sheets("Fr ais
 >>    dépl").Range("k8")).offset(0,3)
 >> end if
 >> End Function

En feuille Frais, B21=1, b22=2 ... b29=9
E21, E22 ... E29

En feuille 'frais dépl', k8=3
Formule en K9 -> =autobus(vrai;k8) me donne 13
Changer K8 renvoie la valeur correcte.

Comme un lien ne remplacera pas un long discours :http://www.cijoint.fr/c jlink.php?file=cj200903/cijIUX4tgp.xls

@+
FxM

FxM a écrit :



> Bonsoir,

> Non testé.

> @+
> FxM

> Function vehicule(code, distance)
> 'Frais de déplacement : Axx = distance, FAxx = montant
>  with Sheets("Frais")
>   billet = False
>   select case code
>     case "": vehicule = ""
>     case "A","a"
>      If distance < .range("C7") Then
>       vehicule = .range("E6")
>      ElseIf distance < .range("C8") Then
>       vehicule = .range("E7")
>      ElseIf distance < .range("C9") Then
>       vehicule = .range("E8")
>      Else
>       billet = True
> 'attention à l'ordre des paramètres !
>       vehicule = autobus(billet, region)
>      End If

>    case "B", "b"
>     If distance < .range("C11") Then
>      vehicule = .range("E10")
>     ElseIf distance < .range("C12") Then
>      vehicule = .range("E11")
>     ElseIf distance < .range("C13") Then
>      vehicule = .range("E12")
>     ElseIf distance < .range("C14") Then
>      vehicule = .range("E13")
>     Else
>      billet = True
> 'idem
>      vehicule = autobus(billet, region)
>     End If

>    case "C", "c", "P", "p": vehicule = "       -"
>    case else: vehicule = ""
>   end select
>  end with
> End Function

> '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

> Function autobus(billet, region)
>  if billet then

> 'ce qui suit sur une ligne !
>   autobus = Sheets("Frais").Range("B21:B29").find(Sheets("Frais
> dépl").Range("k8")).offset(0,3)

> End Function

> Inkel a écrit :
>> bonjour,

>> J'ai fais ce code et c,est un de mes premier en VBA, et je dois dire
>> que je suis assez fier de moi du fait qu'il fonctionne !
>> Mais je sais qu'il n'est pas terrible au niveau de l'optimisation et
>> je sais qu'il pourrait être beaucoup plus court. Est-ce que quelqu'u n
>> pourrait m'aider ?

>> Cela sert à calculer les frais de déplacement pour les employés, si
>> oui ou non et combien. Je peux envoyer le fichier si cela peut aider.

>> Merci.

>> Inkel ;-)

>> +++++++++++++++++++++++++++++++++++++++++++++++++++

>> Function vehicule(code, distance)

>> 'Frais de déplacement : Axx = distance, FAxx = montant

>> 'Sheets("Frais").Visible = True

>> billet = False

>> A60 = Sheets("Frais").Range("c7")
>> A91 = Sheets("Frais").Range("c8")
>> A121 = Sheets("Frais").Range("c9")

>> FA60 = Sheets("Frais").Range("e6")
>> FA91 = Sheets("Frais").Range("e7")
>> FA121 = Sheets("Frais").Range("e8")

>> B49 = Sheets("Frais").Range("c11")
>> B73 = Sheets("Frais").Range("c12")
>> B89 = Sheets("Frais").Range("c13")
>> B121 = Sheets("Frais").Range("c14")

>> FB49 = Sheets("Frais").Range("e10")
>> FB73 = Sheets("Frais").Range("e11")
>> FB89 = Sheets("Frais").Range("e12")
>> FB121 = Sheets("Frais").Range("e13")

>> If code = "" Then                          'Vide
>>     vehicule = ""

>>     ElseIf code = "A" Or code = "a" Then   'Montréal, Troi s-Rivières,
>> Québec
>> & Estrie

>>         If distance < A60 Then
>>             vehicule = FA60
>>         ElseIf distance < A91 Then
>>             vehicule = FA91
>>         ElseIf distance < A121 Then
>>             vehicule = FA121
>>         Else
>>             billet = True
>>             vehicule = autobus(region, billet)
>>         End If

>>     ElseIf code = "B" Or code = "b" Then   'Reste de la prov ince

>>         If distance < B49 Then
>>             vehicule = FB49
>>         ElseIf distance < B73 Then
>>             vehicule = FB73
>>         ElseIf distance < B89 Then
>>             vehicule = FB89
>>         ElseIf distance < B121 Then
>>             vehicule = FB121
>>         Else
>>             billet = True
>>             vehicule = autobus(region, billet)
>>         End If

>>     ElseIf code = "C" Or code = "c" Or code = "P" Or code = "p" Then
>> 'Fournit par la compagnie
>>         vehicule = "       -"

>>     Else
>>         vehicule = ""

>> End If
>> 'Sheets("Frais").Visible = False

>> End Function
>> '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

>> Function autobus(billet, region)

>> region = Sheets("Frais dépl").Range("k8")

>> r1 = Sheets("Frais").Range("B21")
>> r2 = Sheets("Frais").Range("B22")
>> r3 = Sheets("Frais").Range("B23")
>> r4 = Sheets("Frais").Range("B24")
>> r5 = Sheets("Frais").Range("B25")
>> r6 = Sheets("Frais").Range("B26")
>> r7 = Sheets("Frais").Range("B27")
>> r8 = Sheets("Frais").Range("B28")
>> r9 = Sheets("Frais").Range("B29")

>> P1 = Sheets("Frais").Range("e21")
>> P2 = Sheets("Frais").Range("e22")
>> P3 = Sheets("Frais").Range("e23")
>> P4 = Sheets("Frais").Range("e24")
>> P5 = Sheets("Frais").Range("e25")
>> P6 = Sheets("Frais").Range("e26")
>> P7 = Sheets("Frais").Range("e27")
>> P8 = Sheets("Frais").Range("e28")
>> P9 = Sheets("Frais").Range("e29")

>> If billet = True Then

>>     ElseIf region = r1 Then
>>     autobus = P1

>>     ElseIf region = r2 Then
>>     autobus = P2

>>     ElseIf region = r3 Then
>>     autobus = P3

>>     ElseIf region = r4 Then
>>     autobus = P4

>>     ElseIf region = r5 Then
>>     autobus = P5

>>     ElseIf region = r6 Then
>>     autobus = P6

>>     ElseIf region = r7 Then
>>     autobus = P7

>>     ElseIf region = r8 Then
>>     autobus = P8

>>     ElseIf region = r9 Then
>>     autobus = P9

>> End If

>> End Function- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
FFO
Bonjour MichDenis

Vérification faite oui
En fonction de la boucle i prendra les valeurs de 1 à 9 ce qui donnera
alternativement :

r = Sheets("Frais").Range("B21")
p = Sheets("Frais").Range("e21")

r = Sheets("Frais").Range("B22")
p = Sheets("Frais").Range("e22")
.
.
.
.
r = Sheets("Frais").Range("B29")
p = Sheets("Frais").Range("e29")

Je l'ai testé

Si pas du même avis merci de préciser
Avatar
MichDenis
Avatar
MichDenis
C'est le même principe


region = Sheets("Frais dépl").Range("k8")

with Sheets("Frais")
r1 = .Range("B21")
r2 = .Range("B22")
r3 = .Range("B23")
r4 = .Range("B24")
r5 = .Range("B25")
r6 = .Range("B26")
r7 = .Range("B27")
r8 = .Range("B28")
r9 = .Range("B29")

P1 = .Range("e21")
P2 = .Range("e22")
P3 = .Range("e23")
P4 = .Range("e24")
P5 = .Range("e25")
P6 = .Range("e26")
P7 = .Range("e27")
P8 = .Range("e28")
P9 = .Range("e29")
End With

Le reste de ta fonction ....


"Inkel" a écrit dans le message de groupe de discussion :

Merci MichDenis, cela fonctionne très bien.

Comment je pourrais appliquer cela à ma fonction "vehicule" ?



On 27 mar, 09:06, "MichDenis" wrote:
T'es sûr de ceci :

r = Sheets("Frais").Range("B2" & i)
p = Sheets("Frais").Range("e2" & i)

"FFO" a écrit dans le message de groupe de discussion :

Rebonjour à toi

Effectivement honte à moi celà ne peux fonctionner
D'où la nécessité de tester avant de proposer
Mille excuses !!!!!

Je te propose plutôt ceci :

For i = 1 To 9
r = Sheets("Frais").Range("B2" & i)
p = Sheets("Frais").Range("e2" & i)
If billet = True Then
ElseIf region = r Then
autobus = p
End If
Next

Celà devrait mieux convenir

Dis moi !!!!


Avatar
FxM
Bonsoir,

Le résultat à zéro vient de deux soucis :

- L'ordre dans lequel tu passes les arguments dans une fonction est
capital : ainsi, quand tu appelles dans la macro principale ...
vehicule = autobus(region, billet)
ta fonction s'attend à recevoir les arguments comme ceci :
Function autobus(region, billet)
et non comme cela :
Function autobus(billet, region)

- dans la fonction vehicule(...), l'argument region était vide car non
transféré depuis la variable 'code'.
Il faut ajouter la ligne
region = code.Value2
en début de fonction

Ton fichier en retour :
http://www.cijoint.fr/cjlink.php?file=cj200903/cijFAZKWNg.xls

@+
FxM



Inkel a écrit :
Voici mon fichier : http://www.cijoint.fr/cjlink.php?file=cj200903/cijhWSh9la.xls

Peut-être ce sera plus clair.

Merci

On 27 mar, 03:24, FxM wrote:
Hello,

Je me réponds à moi-même car le serveur refuse la référence au message
d'Inkel. Bizarre ...

Que tu obtiennes 0 ne me surprend qu'à moitié dans le sens où il manque
au moins un 'end if'. Très sincèrement, je n'ai pas compris l'intérêt de
la variable billet puisque tu n'appelles la fonction autobus(...) que si
billet = True. Je le laisse quand même.

Je viens de tester sous Excel 2002 cette fonction dans un module standard :
>> Function autobus(billet, region)
>> if billet then
>>
>> 'ce qui suit sur une ligne !
>> autobus = Sheets("Frais").Range("B21:B29").find(Sheets("Frais
>> dépl").Range("k8")).offset(0,3)
>> end if
>> End Function

En feuille Frais, B21=1, b22=2 ... b29=9
E21, E22 ... E29

En feuille 'frais dépl', k8=3
Formule en K9 -> =autobus(vrai;k8) me donne 13
Changer K8 renvoie la valeur correcte.

Comme un lien ne remplacera pas un long discours :http://www.cijoint.fr/cjlink.php?file=cj200903/cijIUX4tgp.xls

@+
FxM

FxM a écrit :



Bonsoir,
Non testé.
@+
FxM
Function vehicule(code, distance)
'Frais de déplacement : Axx = distance, FAxx = montant
with Sheets("Frais")
billet = False
select case code
case "": vehicule = ""
case "A","a"
If distance < .range("C7") Then
vehicule = .range("E6")
ElseIf distance < .range("C8") Then
vehicule = .range("E7")
ElseIf distance < .range("C9") Then
vehicule = .range("E8")
Else
billet = True
'attention à l'ordre des paramètres !
vehicule = autobus(billet, region)
End If
case "B", "b"
If distance < .range("C11") Then
vehicule = .range("E10")
ElseIf distance < .range("C12") Then
vehicule = .range("E11")
ElseIf distance < .range("C13") Then
vehicule = .range("E12")
ElseIf distance < .range("C14") Then
vehicule = .range("E13")
Else
billet = True
'idem
vehicule = autobus(billet, region)
End If
case "C", "c", "P", "p": vehicule = " -"
case else: vehicule = ""
end select
end with
End Function
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Function autobus(billet, region)
if billet then
'ce qui suit sur une ligne !
autobus = Sheets("Frais").Range("B21:B29").find(Sheets("Frais
dépl").Range("k8")).offset(0,3)
End Function
Inkel a écrit :
bonjour,
J'ai fais ce code et c,est un de mes premier en VBA, et je dois dire
que je suis assez fier de moi du fait qu'il fonctionne !
Mais je sais qu'il n'est pas terrible au niveau de l'optimisation et
je sais qu'il pourrait être beaucoup plus court. Est-ce que quelqu'un
pourrait m'aider ?
Cela sert à calculer les frais de déplacement pour les employés, si
oui ou non et combien. Je peux envoyer le fichier si cela peut aider.
Merci.
Inkel ;-)
+++++++++++++++++++++++++++++++++++++++++++++++++++
Function vehicule(code, distance)
'Frais de déplacement : Axx = distance, FAxx = montant
'Sheets("Frais").Visible = True
billet = False
A60 = Sheets("Frais").Range("c7")
A91 = Sheets("Frais").Range("c8")
A121 = Sheets("Frais").Range("c9")
FA60 = Sheets("Frais").Range("e6")
FA91 = Sheets("Frais").Range("e7")
FA121 = Sheets("Frais").Range("e8")
B49 = Sheets("Frais").Range("c11")
B73 = Sheets("Frais").Range("c12")
B89 = Sheets("Frais").Range("c13")
B121 = Sheets("Frais").Range("c14")
FB49 = Sheets("Frais").Range("e10")
FB73 = Sheets("Frais").Range("e11")
FB89 = Sheets("Frais").Range("e12")
FB121 = Sheets("Frais").Range("e13")
If code = "" Then 'Vide
vehicule = ""
ElseIf code = "A" Or code = "a" Then 'Montréal, Trois-Rivières,
Québec
& Estrie
If distance < A60 Then
vehicule = FA60
ElseIf distance < A91 Then
vehicule = FA91
ElseIf distance < A121 Then
vehicule = FA121
Else
billet = True
vehicule = autobus(region, billet)
End If
ElseIf code = "B" Or code = "b" Then 'Reste de la province
If distance < B49 Then
vehicule = FB49
ElseIf distance < B73 Then
vehicule = FB73
ElseIf distance < B89 Then
vehicule = FB89
ElseIf distance < B121 Then
vehicule = FB121
Else
billet = True
vehicule = autobus(region, billet)
End If
ElseIf code = "C" Or code = "c" Or code = "P" Or code = "p" Then
'Fournit par la compagnie
vehicule = " -"
Else
vehicule = ""
End If
'Sheets("Frais").Visible = False
End Function
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Function autobus(billet, region)
region = Sheets("Frais dépl").Range("k8")
r1 = Sheets("Frais").Range("B21")
r2 = Sheets("Frais").Range("B22")
r3 = Sheets("Frais").Range("B23")
r4 = Sheets("Frais").Range("B24")
r5 = Sheets("Frais").Range("B25")
r6 = Sheets("Frais").Range("B26")
r7 = Sheets("Frais").Range("B27")
r8 = Sheets("Frais").Range("B28")
r9 = Sheets("Frais").Range("B29")
P1 = Sheets("Frais").Range("e21")
P2 = Sheets("Frais").Range("e22")
P3 = Sheets("Frais").Range("e23")
P4 = Sheets("Frais").Range("e24")
P5 = Sheets("Frais").Range("e25")
P6 = Sheets("Frais").Range("e26")
P7 = Sheets("Frais").Range("e27")
P8 = Sheets("Frais").Range("e28")
P9 = Sheets("Frais").Range("e29")
If billet = True Then
ElseIf region = r1 Then
autobus = P1
ElseIf region = r2 Then
autobus = P2
ElseIf region = r3 Then
autobus = P3
ElseIf region = r4 Then
autobus = P4
ElseIf region = r5 Then
autobus = P5
ElseIf region = r6 Then
autobus = P6
ElseIf region = r7 Then
autobus = P7
ElseIf region = r8 Then
autobus = P8
ElseIf region = r9 Then
autobus = P9
End If
End Function- Masquer le texte des messages précédents -




- Afficher le texte des messages précédents -





Avatar
Construk
... est-ce qu'on peut appeler ça une erreur de débutant et ne faire comme si
de rien n'était...

Merci énormément.

"FxM" a écrit :

Bonsoir,

Le résultat à zéro vient de deux soucis :

- L'ordre dans lequel tu passes les arguments dans une fonction est
capital : ainsi, quand tu appelles dans la macro principale ...
vehicule = autobus(region, billet)
ta fonction s'attend à recevoir les arguments comme ceci :
Function autobus(region, billet)
et non comme cela :
Function autobus(billet, region)

- dans la fonction vehicule(...), l'argument region était vide car non
transféré depuis la variable 'code'.
Il faut ajouter la ligne
region = code.Value2
en début de fonction

Ton fichier en retour :
http://www.cijoint.fr/cjlink.php?file=cj200903/cijFAZKWNg.xls

@+
FxM



Inkel a écrit :
> Voici mon fichier : http://www.cijoint.fr/cjlink.php?file=cj200903/cijhWSh9la.xls
>
> Peut-être ce sera plus clair.
>
> Merci
>
> On 27 mar, 03:24, FxM wrote:
>> Hello,
>>
>> Je me réponds à moi-même car le serveur refuse la référence au message
>> d'Inkel. Bizarre ...
>>
>> Que tu obtiennes 0 ne me surprend qu'à moitié dans le sens où il manque
>> au moins un 'end if'. Très sincèrement, je n'ai pas compris l'intérêt de
>> la variable billet puisque tu n'appelles la fonction autobus(...) que si
>> billet = True. Je le laisse quand même.
>>
>> Je viens de tester sous Excel 2002 cette fonction dans un module standard :
>> >> Function autobus(billet, region)
>> >> if billet then
>> >>
>> >> 'ce qui suit sur une ligne !
>> >> autobus = Sheets("Frais").Range("B21:B29").find(Sheets("Frais
>> >> dépl").Range("k8")).offset(0,3)
>> >> end if
>> >> End Function
>>
>> En feuille Frais, B21=1, b22=2 ... b29=9
>> E21, E22 ... E29
>>
>> En feuille 'frais dépl', k8=3
>> Formule en K9 -> =autobus(vrai;k8) me donne 13
>> Changer K8 renvoie la valeur correcte.
>>
>> Comme un lien ne remplacera pas un long discours :http://www.cijoint.fr/cjlink.php?file=cj200903/cijIUX4tgp.xls
>>
>> @+
>> FxM
>>
>> FxM a écrit :
>>
>>
>>
>>> Bonsoir,
>>> Non testé.
>>> @+
>>> FxM
>>> Function vehicule(code, distance)
>>> 'Frais de déplacement : Axx = distance, FAxx = montant
>>> with Sheets("Frais")
>>> billet = False
>>> select case code
>>> case "": vehicule = ""
>>> case "A","a"
>>> If distance < .range("C7") Then
>>> vehicule = .range("E6")
>>> ElseIf distance < .range("C8") Then
>>> vehicule = .range("E7")
>>> ElseIf distance < .range("C9") Then
>>> vehicule = .range("E8")
>>> Else
>>> billet = True
>>> 'attention à l'ordre des paramètres !
>>> vehicule = autobus(billet, region)
>>> End If
>>> case "B", "b"
>>> If distance < .range("C11") Then
>>> vehicule = .range("E10")
>>> ElseIf distance < .range("C12") Then
>>> vehicule = .range("E11")
>>> ElseIf distance < .range("C13") Then
>>> vehicule = .range("E12")
>>> ElseIf distance < .range("C14") Then
>>> vehicule = .range("E13")
>>> Else
>>> billet = True
>>> 'idem
>>> vehicule = autobus(billet, region)
>>> End If
>>> case "C", "c", "P", "p": vehicule = " -"
>>> case else: vehicule = ""
>>> end select
>>> end with
>>> End Function
>>> '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>> Function autobus(billet, region)
>>> if billet then
>>> 'ce qui suit sur une ligne !
>>> autobus = Sheets("Frais").Range("B21:B29").find(Sheets("Frais
>>> dépl").Range("k8")).offset(0,3)
>>> End Function
>>> Inkel a écrit :
>>>> bonjour,
>>>> J'ai fais ce code et c,est un de mes premier en VBA, et je dois dire
>>>> que je suis assez fier de moi du fait qu'il fonctionne !
>>>> Mais je sais qu'il n'est pas terrible au niveau de l'optimisation et
>>>> je sais qu'il pourrait être beaucoup plus court. Est-ce que quelqu'un
>>>> pourrait m'aider ?
>>>> Cela sert à calculer les frais de déplacement pour les employés, si
>>>> oui ou non et combien. Je peux envoyer le fichier si cela peut aider.
>>>> Merci.
>>>> Inkel ;-)
>>>> +++++++++++++++++++++++++++++++++++++++++++++++++++
>>>> Function vehicule(code, distance)
>>>> 'Frais de déplacement : Axx = distance, FAxx = montant
>>>> 'Sheets("Frais").Visible = True
>>>> billet = False
>>>> A60 = Sheets("Frais").Range("c7")
>>>> A91 = Sheets("Frais").Range("c8")
>>>> A121 = Sheets("Frais").Range("c9")
>>>> FA60 = Sheets("Frais").Range("e6")
>>>> FA91 = Sheets("Frais").Range("e7")
>>>> FA121 = Sheets("Frais").Range("e8")
>>>> B49 = Sheets("Frais").Range("c11")
>>>> B73 = Sheets("Frais").Range("c12")
>>>> B89 = Sheets("Frais").Range("c13")
>>>> B121 = Sheets("Frais").Range("c14")
>>>> FB49 = Sheets("Frais").Range("e10")
>>>> FB73 = Sheets("Frais").Range("e11")
>>>> FB89 = Sheets("Frais").Range("e12")
>>>> FB121 = Sheets("Frais").Range("e13")
>>>> If code = "" Then 'Vide
>>>> vehicule = ""
>>>> ElseIf code = "A" Or code = "a" Then 'Montréal, Trois-Rivières,
>>>> Québec
>>>> & Estrie
>>>> If distance < A60 Then
>>>> vehicule = FA60
>>>> ElseIf distance < A91 Then
>>>> vehicule = FA91
>>>> ElseIf distance < A121 Then
>>>> vehicule = FA121
>>>> Else
>>>> billet = True
>>>> vehicule = autobus(region, billet)
>>>> End If
>>>> ElseIf code = "B" Or code = "b" Then 'Reste de la province
>>>> If distance < B49 Then
>>>> vehicule = FB49
>>>> ElseIf distance < B73 Then
>>>> vehicule = FB73
>>>> ElseIf distance < B89 Then
>>>> vehicule = FB89
>>>> ElseIf distance < B121 Then
>>>> vehicule = FB121
>>>> Else
>>>> billet = True
>>>> vehicule = autobus(region, billet)
>>>> End If
>>>> ElseIf code = "C" Or code = "c" Or code = "P" Or code = "p" Then
>>>> 'Fournit par la compagnie
>>>> vehicule = " -"
>>>> Else
>>>> vehicule = ""
>>>> End If
>>>> 'Sheets("Frais").Visible = False
>>>> End Function
>>>> '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>> Function autobus(billet, region)
>>>> region = Sheets("Frais dépl").Range("k8")
>>>> r1 = Sheets("Frais").Range("B21")
>>>> r2 = Sheets("Frais").Range("B22")
>>>> r3 = Sheets("Frais").Range("B23")
>>>> r4 = Sheets("Frais").Range("B24")
>>>> r5 = Sheets("Frais").Range("B25")
>>>> r6 = Sheets("Frais").Range("B26")
>>>> r7 = Sheets("Frais").Range("B27")
>>>> r8 = Sheets("Frais").Range("B28")
>>>> r9 = Sheets("Frais").Range("B29")
>>>> P1 = Sheets("Frais").Range("e21")
>>>> P2 = Sheets("Frais").Range("e22")
>>>> P3 = Sheets("Frais").Range("e23")
>>>> P4 = Sheets("Frais").Range("e24")
>>>> P5 = Sheets("Frais").Range("e25")
>>>> P6 = Sheets("Frais").Range("e26")
>>>> P7 = Sheets("Frais").Range("e27")
>>>> P8 = Sheets("Frais").Range("e28")
>>>> P9 = Sheets("Frais").Range("e29")
>>>> If billet = True Then
>>>> ElseIf region = r1 Then
>>>> autobus = P1
>>>> ElseIf region = r2 Then
>>>> autobus = P2
>>>> ElseIf region = r3 Then
>>>> autobus = P3
>>>> ElseIf region = r4 Then
>>>> autobus = P4
>>>> ElseIf region = r5 Then
>>>> autobus = P5
>>>> ElseIf region = r6 Then
>>>> autobus = P6
>>>> ElseIf region = r7 Then
>>>> autobus = P7
>>>> ElseIf region = r8 Then
>>>> autobus = P8
>>>> ElseIf region = r9 Then
>>>> autobus = P9
>>>> End If
>>>> End Function- Masquer le texte des messages précédents -
>> - Afficher le texte des messages précédents -
>



Avatar
FxM
On peut ;o)

@+
FxM


Construk a écrit :
.... est-ce qu'on peut appeler ça une erreur de débutant et ne faire comme si
de rien n'était...

Merci énormément.



1 2