1

Bonjour,

J'essaie de mettre en place sous Access un module standard (PSiecle Function) qui permettrait d'associer à une date un siècle.
Une fois ce module construit, je pourrais l'appliquer à une requête:
Siecle:PSiecle([date])

Comme je débute en VBA, je ne sais pas comment déclarer mes variables en début de module.
Je pense qu'une partie de ce module ressemblerait à :

Option Compare Database
Option Explicit

'là je sèche?????


'Si la valeur est nulle je passe à autre chose
If IsNull(AnyText) Then
Exit Function
End If

If (Date > 1500 And Date < 1601) Then
Siecle = "16°"
End If

If (Date > 1600 And Date < 1701) Then
Siecle = "17°"
End If

If (Date > 1700 And Date < 1801) Then
Siecle = "18°"
End If

If (Date > 1800 And Date < 1901) Then
Siecle = "19°"
End If

If (Date > 1900 And Date < 2001) Then
Siecle = "20°"
End If

End Function

Merci d'avance à celui ou celle qui pourrait m'aider.

2

Salut, en VB, selon mes souvenirs (ca fait longtemps), les variables se declarent comme ca:

Dim Nom_variable As Type_de_la_variable
dans ton ca ce serait
Dim Date As Integer
Dim Siecle As String

Pour le String il y a moyen de donner la taille maximum, je ne me souviens plus comment. Voila, j'espere avoir aide.
N/A

3

merci beaucoup pour ta rapide réponse!
J'avais fait ce genre de truc:
Dim Date As Single
Dim Siecle As String
...mais Access n'ai pas content quand j'entre :
Dim Date As Integer OU Dim Date As Single
Pour un des dates je dois utiliser le type Integer?

4

Vu que les valeurs que tu utilises sont entieres, je pense qu'utiliser des Integer est plus judicieux.

Tu peux aussi te debarrasser de tous ces tests en faisant comme suit:
Dim Date As Integer
Dim Siecle as String

Siecle=str(Clng(Date/100-0.5)+1)+"e"


La fonction Clng arrondi a l'entier le plus proche, alors Clng(Data/100-.51) donnerai par exemple pour 1900, 18 et pour 19xx, 19.
Ensuite, str(la_valeur_trouvee+1) converti le nombre en une chaine de caracteres qui correspond au siecle. Par exemple pour 1900, on aura 19e, pour 19xx autre que 1900 on aura 20e.
Je fais tous ca de memoire, si le VB n'a pas trop change ca devrait marcher.

Edit: faute de frappe
N/A

5

Merci beaucoup! ça fonctionne!
Ta mémoire ne t'a pas fait faux bond!