Utilisé une condition dans un calcul VBA

Bonjour à tous,

Pour mon premier post j'ai besoin de votre aide.

je cherche à utilisé une condition dans un calcul déjà intégré à un if.

Pour être plus explicite je cherche à créer cette formule :

SI(ET($C7>$B$3;$C7<(23+(59/60)));$C7-SI($B7>$B$3;$B7;SI($B7<=$B$3;$B$3));SI(($C7<=$C$3);$C7+((23+(59/60)-$B7));SI($C7>=$C$3;$C$3+((23+(59/60)-$B7));SI($B7<$C$3;$C$3-$B7;SI($B7>$B$3;$B7-$B$3;0)))))

Je bloque sur la partie surligné, la fonction if n'est pas reconnu dans le calcul. Est-ce possible en VBA (sachant que je ne pars pas d'une feuille de calcul mais d'un userform pour récupérer des variables)

Voila le début de mon code

Public Heure_debvar As Single
Public min_debvar As Single
Public Heure_finvar As Single
Public min_finvar As Single
Public heures_finvar As Single
Public heures_debutvar As Single

Sub calcul()

Dim hdeb_nuit As Byte
Dim hfin_nuitavecstatut As Byte
Dim hfin_nuitsansstatut As Byte

hdeb_nuit = 21
hfin_nuitavecstatut = 6
hfin_nuitsansstatut = 5

UserForm1.Show
heures_debutvar = Heure_debvar + (min_debvar / 60)
heures_finvar = Heure_finvar + (min_finvar / 60)

'Calcul du nombre d'heures

If heures_finvar > hdeb_nuit And heures_finvar < ((23 + (59 / 60))) Then
'Je suis bloquer à partir de ce niveau
heures_finvar - If heures_debvar > hdeb_nuit Then heures_debutvar else if heures_debutvar<=hdeb_nuit then hdeb_nuit 

else if
....
' 
end if
end sub

Merci d'avance pour votre aide

Bonjour,

erreur de syntaxe

si tu veux utiliser les if dans une formule VBA, utilise alors IIf

IIf ( expr , valeur vrai , valeur faux )

https://support.office.com/fr-fr/article/iif-fonction-32436ecf-c629-48a3-9900-647539c764e3

Top,

merci steelson c'est exactement ce dont j'avais besoin.

Bonjour,

Ta condition (surlignée vert dans la formule) :

$C7-SI($B7>$B$3;$B7;SI($B7<=$B$3;$B$3))

s'écrit :

$C7-SI($B7>$B$3;$B7;$B$3)

Et dans ton code :

heures_finvar - IIf(heures_debvar > hdeb_nuit, heures_debutvar, hdeb_nuit)

mais à gauche de l'expression, il te faut un nom de variable suivi de = pour recueillir ce résultat, sinon erreur... !

Cordialement.

Merci Mferrand pour cette correction,

Effectivement le si n'est pas obligatoire et alourdi la lecture.

Merci pour la précision sur la variable je ne l'aurai pas mise.

Merci de ton aide je test ça cette aprèm

Bonjour,

Ton instruction "If" ne peut s'écrire ainsi :

heures_finvar - If heures_debvar > hdeb_nuit Then heures_debutvar else if heures_debutvar<=hdeb_nuit then hdeb_nuit 

D'autant plus que :

  • -> Ton résultat n'est stocké nul part...
  • -> Si "heures_debvar > hdeb_nuit" n'est pas vrai, c'est forcément que "heures_debutvar<=hdeb_nuit" est vrai, donc inutile de le retester
If heures_debvar > hdeb_nuit Then Resultat = heures_finvar - heures_debutvar Else Resultat = heures_finvar - hdeb_nuit 

Le IIf est plus élégant en écriture VBA, plus lisible aussi et pratique

Rechercher des sujets similaires à "utilise condition calcul vba"