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 :

Calcul en VBA sur les heures [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2015
    Messages : 17
    Billets dans le blog
    1
    Par défaut Calcul en VBA sur les heures
    Bonjour,
    Je dois effectuer un calcul sur des heures. Des salariés perçoivent 1 heure de nuit s'ils ont travaillés après 0h45.
    J'ai écrit le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         If Cells(i, 32) >= "0:45" Then Cells(i, 109) = "1"
    Cela ne fonctionne pas, car quelque soit l'horaire en Cellule 32, le résultat renvoyé est 1.
    Je ne sais s'il faut adapter les formats, et si oui lequel.

    Merci par avance.

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    je ne suis pas trop bon avec les date et heure,
    mais "0:45" c'est du texte !!!
    et les heures c'est "integer" je crois... à vérif
    je pense que çà vient de là

    tu peux également travailler en direct (feuille des cellules) avec la formule =SI(test;vrai..."1";faux)
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, de la lecture et pas seulement : Comprendre et gérer les dates sous Excel et en VBA

    P.-S.: Ici ce n'est pas un forum VBA.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    D'abord une question : est-ce que le contenu de la colonne 32 est une VRAIE date, au sens Excel du terme, ou n'est-ce qu'un texte ?

    En supposant que c'est le cas, ta formule devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         If Cells(i, 32) - Int(Cells(i, 32)) >= 0.75 Then Cells(i, 109) = "1"
    Mais je pense que ce n'est pas suffisant parce que tu oublies un détail : la nuit a certes un début mais elle a aussi une fin. Il faut donc mettre deux conditions liées par un "And".

    Parce que écrit ainsi, il n'y a que pour la plage 0:00 à 0:45 que le "1" ne sera pas écrit.
    Même si la personne travaille à 22:00, ça mettra 1 puisque 22:00 est supérieur à 0:45.

  5. #5
    Membre averti

    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2015
    Messages : 17
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Merci pour la réponse; si je formate mes cellules en hh:mm ou en Texte, un message erreur apparaît: " Incompatibilité de type".

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Sans doute parce que tu n'as pas inscrit une vraie date dans cette cellule mais du texte.
    Et on ne peut rien calculer sur du texte (à moins de faire de la chirurgie pour le décomposer et en récupérer les éléments).

  7. #7
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Il faut toujours comparer des pommes avec des pommes et des dates avec des dates.

    Pour etre certain de comparer des dates avec des dates et non avec n'importe quoi, il faut donc convertir les 2 elements de la comparaison en dates:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If CDate(Cells(i, 2)) >= CDate("0:45") Then

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je ne comprends pas vraiment la logique de :
    Je dois effectuer un calcul sur des heures. Des salariés perçoivent 1 heure de nuit s'ils ont travaillés après 0h45.
    Ni son sens exact, d'ailleurs ...
    Une telle phrase n'a de sens que si on a une date/heure de début et une date/heure de fin. Car sinon : prendre son service à 8 heures du matin donnerait droit au bénéfice en cause (puisque 8 h 00 est plus grand que 0 h 45 !!!!)

    Il y a donc là soit une carence en matière d'expression, soit une carence en matière de réflexion.

    Je propose dans un premier temps quant à moi, dans ces conditions, la lecture de cette discussion :
    https://www.developpez.net/forums/d1...mps-timevalue/

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

Discussions similaires

  1. calcul sur les heures
    Par bullot27 dans le forum Excel
    Réponses: 17
    Dernier message: 10/05/2015, 11h30
  2. Calcul sur les heures
    Par pauldmsi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/08/2013, 16h57
  3. Calculs sur les heures
    Par ddubois dans le forum Langage
    Réponses: 8
    Dernier message: 07/05/2011, 03h12
  4. Calcul sur les heures jour/nuit
    Par scrat57000 dans le forum VBA Access
    Réponses: 7
    Dernier message: 06/05/2007, 14h53
  5. Calcul sur les heures
    Par franfr57 dans le forum Langage
    Réponses: 5
    Dernier message: 20/04/2006, 17h56

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