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

Macros et VBA Excel Discussion :

Userform avec calcul date et formatage


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 7
    Par défaut Userform avec calcul date et formatage
    Bonjour

    J’aurai besoin d’un coup de main

    J’ai un userform avec 3 listbox (Date de début - date de fin - durée)
    et 1 Combobox (Pourcentage).

    1. Je souhaiterais que Date de début (SDATE1) et date de fin (SDATE2) soient au format date JJ/MM/AAAA. La macro devra ensuite considérer que ces date sont les « fin de mois » (exemple, l’opérateur met 25/02/2011, la macro transforme en 28/02/2011).
    1.1. Cette transformation peut elle se faire directement ? actuellement elle se fait à la fin… je souhaiterais que la macro propose directement la date de fin du mois dès que l’opérateur écris sa date
    1.2. Et si l’opérateur renseigne une date fausse (exemple 25/13/2010) la macro peut elle lui demander de modifier la date avant de continuer ?

    2. Après avoir renseigné ‘’date début’ et ‘’date de fin’’, la macro calcul automatiquement la durée. Et l’affiche dans la listbox3. Je souhaiterais mettre cette durée au format « X Années / Y mois » (exemple, « 2 and 3 mois »).
    2.1. Comment faire cet affichage automatique avant de valider tout ?
    2.2. Comment adapter ce format ?
    2.3. Si la valeur de la durée (SDATE3) est négative ou inférieur à 1 mois, la macro devra demander à l’opérateur de modifier la date de fin ?

    3. Comment faire pour que les informations du combobox soit du format pourcentage (exemple 9,5%)..

    J’ai essayé de mettre des points d’erreur mais je n’y arrive pas….. en cas de date erronée, la macro ne fonctionne pas….

    un petit fichier joint

    merci de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Bonjour,
    Tout d'abord, relis des explications sur l'utilisation du On Error : il se met avant les instructions et ce n'est pas la peine de le mettre plusieurs fois. Soit tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    On Error GoTo ERRORDATE
    Mais tu ne sauras pas de quelle ligne vient l'erreur. Tu pourras quand même savoir si c'est une erreur de date en fonction du numéro d'erreur.
    Soit tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    On Error Resume Next
    '... ligne d'instruction
    If err.Number <> 0 Then ...
    On Error GoTo 0
    Ensuite pour toutes tes questions, je pense qu'il suffit que tu utilises l'évènement Exit des TextBox.
    Et pour l'histoire de fin de mois, pourquoi tu ne demandes pas plutôt à l'utilisateur de rentrer directement un mois et une année, sans le jour ?

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Par défaut
    Bonjour,

    Je pense qu'il vous manque quelques bases, notamment sur la gestion d'erreur comme le signale zebreloup, mais également sur la gestion des evenements, pour corriger ces lacunes, allez voir les superbes tuto qui sont à disposition sur le site, ca aide bien !

    Je vous ai mis quelques corrections que j'ai commenté dans le fichier en PJ.

    D'autre part je vous invite à ne pas nommer vos composants textbox1, textBox2 ... en faisant un clic droit sur votre controle puis en cliquant sur propriétés, vous avez la possibilité de les modifier, ne vous en privez pas !

    Bon dev.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 7
    Par défaut
    Merci mais, cela semble ne pas marcher...
    par exemple quand le SDATE3 (la durée) n'est pas conforme, la macro global s'excute... alors qu'elle devrait envoyer un msg et s'arreter

Discussions similaires

  1. Data type mismatch avec calcul date
    Par docjo dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/10/2008, 09h45
  2. Fonction de domaine - Calcul de cumul avec filtre "date et heure".
    Par Fabrice7627 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/08/2007, 05h16
  3. [VB6+Base Access]probleme avec des dates calculées
    Par jam92400 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 18/01/2007, 18h26
  4. Réponses: 4
    Dernier message: 19/05/2006, 23h14
  5. Vue avec calcule de date
    Par jf-nigou dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/06/2005, 14h48

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