Debutant /!\ VBA Excel Problème End Select

Résolu
dr_doak Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
dr_doak Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Pour mes premiers pas en VBA, qui consistent pour l'instant a recopier un livre ... :-B, j'ai un problème que je n'arrive pas à résoudre.
Dans le code ci-dessous, quand j'appelle la fonction dans une feuille, le debugger jaillit et me dit "End Select without Select Case" en passant le End Select en fin de code en surbrillance ... Bon, bah, y'en a un pourtant Select Case ... Alors je ne comprends pas.

J'ai déplacé des éléments, tout tripatouillé, mais rien.
Je fais donc appel à votre connaissance, si ça se trouve, le problème se voit comme le nez au milieu de la figure mais bon...

Merci d'avance





Function FRACTIONANNEE(dDebutPeriode As Date, dFinPeriode As Date, Convention)

[...]

Select Case Convention
Case "Exact/Exact", "exact/exact", 1
'***************************************************************************************
'nombre de jour exact par le nombre exact de jours de l'année de début ; ESTBISSEXTILE utilisée
'***************************************************************************************
If ESTBISSEXTILE(Year(dDebutPeriode)) Then NbjD = 366 Else NbjD = 365
If ESTBISSEXTILE(Year(dFinPeriode)) Then NbjF = 366 Else NbjF = 365
FRACTIONANNEE = Year(dFinPeriode) - Year(dDebutPeriode)
FRACTIONANNEE = FRACTIONANNEE - (dDebutPeriode - DateSerial(Year(dDebutPeriode), 1, 1)) / NbjD
FRACTIONANNEE = FRACTIONANNEE - (dFinPeriode - DateSerial(Year(dFinPeriode), 1, 1)) / NbjF

Case "Exact/365", "exact/365", 2
'***************************************************************************************
'nombre de jour exact divisé par 365
'***************************************************************************************
FRACTIONANNEE = (dFinPeriode - dDebutPeriode) / 365

Case "Exact/360", "exact/360", 3
'***************************************************************************************
'nombre de jour exact divisé par 360
'***************************************************************************************
FRACTIONANNEE = (dFinPeriode - dDebutPeriode) / 360

Case Else
'***************************************************************************************
'la convention par défaut est 30/360
'***************************************************************************************
If Day(dDebutPeriode) = 31 Then
dblDate_a = dDebutPeriode - 1
Else
dblDate_a = dDebutPeriode
If Day(dFinPeriode) = 31 And Day(dDebutPeriode) >= 30 Then
dblDate_b = dFinPeriode - 1
ElseIf Day(dFinPeriode) = 31 And Day(dDebutPeriode) < 30 Then
dblDate_b = dFinPeriode + 1
Else
dblDate_b = dFinPeriode
End If
FRACTIONANNEE = (Year(dblDate_b) - Year(dblDate_a)) * 360 + _
(Month(dblDate_b) - Month(dblDate_a))_* 30 + (Day(dblDate_b) - Day(dblDate_a))
FRACTIONANNEE = FRACTIONANNEE / 360
End Select
End Function
A voir également:

1 réponse

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour

Tu as bien le end select mais il te manque un end if
2
dr_doak Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Et bah voilà ! ... :-D
Comme ça, ça marche mieux.

Merci !
Je pense que je vais me faire rembourser le livre, le End If n'y est pas ... :-B
0