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 :

Calculer les heures en jours et les jours en heures dans 2 combobox


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Points : 31
    Points
    31
    Par défaut Calculer les heures en jours et les jours en heures dans 2 combobox
    Bonjour à tous,

    Pour les amateurs de casses têtes, voici un exercice de style assez intéressant à résoudre (selon moi avec mon niveau découverte) !

    Objectif : générer automatiquement la liste des heures et des jours dans 2 combobox différents et calculer automatiquement la durée soit en jour soit en heure quand les valeurs changent.

    Explication :
    Est placé uniquement 2 contrôles combobox sur le formulaire :
    CmbNbHeuresDde pour les heures
    CmbNbJourDde pour les jours

    Une journée = 7 Heures
    Les heures sont calculées toujours en centième

    Au chargement du formulaire, pour les 2 contrôles, les valeurs sont initialisées avec une boucle for.

    Quand un nombre d'heures est sélectionné dans le contrôle CmbNbHeuresDde, le nombre de jour du contrôle CmbNbJourDde se calcule automatiquement (soit Nbjour=Nbheures/7)

    Exemple de valeurs calculées :
    CmbNbHeuresDde.value = 1 --> CmbNbJourDde.value =0.14
    CmbNbHeuresDde.value = 7 --> CmbNbJourDde.value = 1
    CmbNbHeuresDde.value = 10 --> CmbNbJourDde.value = 1,42

    Quand le nombre d'heures est modifié tout se passe bien de 0 à 2,75. Puis en sélectionnant 3,00 le message suivant s'affiche :

    Impossible de définir la propriété value. Valeur de propriété non valide


    Voici le code :

    Code dans un module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    With UsfNavigation.CmbNbHeuresDde
        .Clear
        H = 0
     
        For j = 1 To 600
            H = H + 0.25
            .AddItem H
        Next
     
        .Style = fmStyleDropDownList
     
    End With
     
     
     ' Chargement Nombre jours :
     
    With UsfNavigation.CmbNbJourDde
     
        .Clear
        jour = 0
     
        For k = 1 To 600
            jour = jour + (0.25 / 7)
            .AddItem jour
        Next
        .Style = fmStyleDropDownList
     
    End With
    Code sur contrôle dans formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CmbNbHeuresDde_Click()
     
    CmbNbJourDde.Value = CmbNbHeuresDde.Value / 7
     
    End Sub

    Remarque :
    La finalité étant de n'afficher que 2 décimales avec une fonction du type :
    CmbNbJourDde.Value = Format(CmbNbHeuresDde.Value / 7, "##, ##0.00")
    et de permettre de calculer les jours si les heures sont modifiées ainsi que les heures si les jours sont modifiés.

    Un grand merci pour tout le génie de vos réponses !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    Est-ce que la value 3.00 est bien présente dans ta comobobox au moins ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Points : 31
    Points
    31
    Par défaut
    En fait non, il s'agit de la valeur 3 et non pas 3,00

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/11/2009, 13h13
  2. Réponses: 7
    Dernier message: 23/09/2009, 11h02
  3. Réponses: 0
    Dernier message: 22/09/2009, 00h41
  4. Mise à jour d'une variable après choix dans une combobox
    Par ~Brouette~ dans le forum Langage
    Réponses: 1
    Dernier message: 21/12/2007, 12h09
  5. [VBA-E]Ajouter jours ouvrés -> NB.Jours.Ouvres, Serie.Jours.Ouvres
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/05/2007, 10h36

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