Debutant /!\ VBA Excel Problème End Select

Résolu/Fermé
dr_doak Messages postés 3 Date d'inscription dimanche 29 juin 2008 Statut Membre Dernière intervention 25 septembre 2008 - 29 juin 2008 à 15:13
dr_doak Messages postés 3 Date d'inscription dimanche 29 juin 2008 Statut Membre Dernière intervention 25 septembre 2008 - 29 juin 2008 à 15:32
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
29 juin 2008 à 15:20
bonjour

Tu as bien le end select mais il te manque un end if
2
dr_doak Messages postés 3 Date d'inscription dimanche 29 juin 2008 Statut Membre Dernière intervention 25 septembre 2008
29 juin 2008 à 15:32
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