Access Traduire une suite algorithmique en code VBA Access

LimaMikeKilo

XLDnaute Nouveau
Bonjour,
je suis débutant sur VBA Access, mon problème est le suivant.
je souhaite mettre un code vba derrière un bouton de formulaire Access qui exécute toutes les instructions du code après avoir cliqué dessus.

Le fond du problème est le suivant:
j'ai développé une petite base de données Access avec des requêtes et formulaires. Mais là je suis bloqué sur une requête que je pense nécessite un codage en vba (procédure évènementielle) que je ne maitrise absolument pas.
Je dispose d'une table Personnel avec les champs suivants: nom, prenom, matricule, operationEnCours, dateDebutSejour, dateFinSejour (correspondant au dernier jour d'opération d'un individu et est renseigné qu'une fois la personne est relevée), DureSejourEnCours, StatutOperation ("relevé" ou "en opération").
Je voudrais calculer la durée mensuelle du séjour (correspondant au nombre de jours effectués en opération dans le mois en cours) et afficher (sous forme de feuille de données) cette durée mensuelle dans un champs temporairement créé ainsi que les autres champs de la table personnel pour l'ensemble du personnel enregistré dans la base de données.

Voici ci-dessous ce que j'ai fait comme algorithme mais je ne sais pas comment l'implémenter en VBA access de sorte que dès qu'on appuie sur un bouton d'un formulaire le programme vba s'exécute pour me donner le résultat souhaité:

DurSej type entier;
DurMensuel type entier;
DateDebuOper type date;

DurSej=DateAujourdhui - DateDebuOper;
Si DurSej <= 30jrs
Alors { DurMensuel=DurSej;
Afficher dans une feuille de données (nom, prenom, matricule, operationEnCours, dateDebutSejour, dateFinSejour, DureSejourEnCours, StatutOperation, DureMensuelleSejour (comme champs temporaire qui affichera la valeur de la variable DurMensuel));
}
Sinon
{ Faire (DurSej=DurSej - 30) tant que (DurSej>30);
DurMensuel=DurSej;
Afficher dans une feuille de données (nom, prenom, matricule, operationEnCours, dateDebutSejour, dateFinSejour, DureSejourEnCours, StatutOperation, DureMensuelleSejour (comme champs temporaire qui affichera la valeur de la variable DurMensuel));
}
 

michelr06

XLDnaute Nouveau
bonjour,

tu peux essayer ça.

Dim DurSej As Integer
Dim DurMensuel As Integer
Dim DateDebuOper As Date

DurSej = Date - DateDebuOper
If DurSej <= 30 Then
DurMensuel = DurSej
' Display data in a sheet (nom, prenom, matricule, operationEnCours, dateDebutSejour, dateFinSejour, DureSejourEnCours, StatutOperation, DureMensuelleSejour (as a temporary field that will display the value of the DurMensuel variable))
Else
Do While DurSej > 30
DurSej = DurSej - 30
Loop
DurMensuel = DurSej
' Display data in a sheet (nom, prenom, matricule, operationEnCours, dateDebutSejour, dateFinSejour, DureSejourEnCours, StatutOperation, DureMensuelleSejour (as a temporary field that will display the value of the DurMensuel variable))
End If
 

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin