IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

débutant: transformer un algorithme en code vba access


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    chef de division réseaux et systèmes info
    Inscrit en
    Juillet 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : chef de division réseaux et systèmes info
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2023
    Messages : 3
    Par défaut débutant: transformer un algorithme en code vba access
    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));
    }

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 940
    Par défaut
    bonjour,
    si j'ai bien compris le besoin, il me semble que Diffdate (DateDiff en anglais) pourrait convenir, la fonction calcule le nombre de jours, mois ou années (cela dépend du 1er paramètre) entre 2 dates :
    cette formule donne le nombre de mois entre la date de début de séjour et la date du jour dans une requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DateDiff("m";dateDebutSejour;Date()) as DurMensuel FROM latable
    il faut mettre la date la plus ancienne en premier pour éviter d'avoir un nombre négatif.
    Donc à priori, pas besoin de VBA (sauf si c'est imposé dans le cadre d'un exercice)

    PS: merci de ne pas solliciter les membres par messagerie privée pour répondre à un post
    si je peux répondre, je le fait (et si j'en ai envie), sinon ce sera quelqu'un d'autre

  3. #3
    Futur Membre du Club
    Homme Profil pro
    chef de division réseaux et systèmes info
    Inscrit en
    Juillet 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : chef de division réseaux et systèmes info
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2023
    Messages : 3
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonjour,
    si j'ai bien compris le besoin, il me semble que Diffdate (DateDiff en anglais) pourrait convenir, la fonction calcule le nombre de jours, mois ou années (cela dépend du 1er paramètre) entre 2 dates :
    cette formule donne le nombre de mois entre la date de début de séjour et la date du jour dans une requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DateDiff("m";dateDebutSejour;Date()) as DurMensuel FROM latable
    il faut mettre la date la plus ancienne en premier pour éviter d'avoir un nombre négatif.
    Donc à priori, pas besoin de VBA (sauf si c'est imposé dans le cadre d'un exercice)

    PS: merci de ne pas solliciter les membres par messagerie privée pour répondre à un post
    si je peux répondre, je le fait (et si j'en ai envie), sinon ce sera quelqu'un d'autre
    Merci de votre réponse. j'ai pris note, cordialement. Je vous y reviens même si je pense que cette fonction ne fait pas ce que je demande.

  4. #4
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 940
    Par défaut
    Je vous y reviens même si je pense que cette fonction ne fait pas ce que je demande.
    dans ce cas, tu peux afficher un exemple du résultat que tu souhaites obtenir, souvent un dessin est plus compréhensible que des phrases

  5. #5
    Futur Membre du Club
    Homme Profil pro
    chef de division réseaux et systèmes info
    Inscrit en
    Juillet 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : chef de division réseaux et systèmes info
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2023
    Messages : 3
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    dans ce cas, tu peux afficher un exemple du résultat que tu souhaites obtenir, souvent un dessin est plus compréhensible que des phrases
    Bonjour, désolé du temps pris pour répondre j'étais un peu occupé.

    J'ai finalement trouvé la réponse, très simple: un modulo entre la durée totale du séjour et 30jrs a suffit.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mise en forme fichier excel depuis code vba (Access 2003)
    Par Kass4r dans le forum VBA Access
    Réponses: 8
    Dernier message: 11/04/2008, 11h38
  2. Accés au donnés sur Excel via Code vba Access
    Par sakia dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/11/2007, 16h46
  3. Fonction "Remplacer" Code VBA Access
    Par Lorenzole+bo dans le forum VBA Access
    Réponses: 6
    Dernier message: 27/09/2007, 21h17
  4. code vba access
    Par heraut dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/08/2007, 13h22
  5. Conversion des codes VBA Access en VB6
    Par cokouT dans le forum Access
    Réponses: 1
    Dernier message: 23/11/2006, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo