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

  1. #1
    Nouveau membre du Club

    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    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
    Points : 30
    Points
    30
    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
    Points : 1 441
    Points
    1 441
    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 éminent sénior
    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
    Points : 11 274
    Points
    11 274
    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 sénior 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
    Points : 32 866
    Points
    32 866
    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.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Nouveau membre du Club

    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    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
    Points : 30
    Points
    30
    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 sénior 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
    Points : 32 866
    Points
    32 866
    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).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    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
    Cordialement

    Docmarti.

  8. #8
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    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/
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  9. #9
    Nouveau membre du Club

    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    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
    Points : 30
    Points
    30
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Les horaires sont compris entre 0h45 et 6h00. Je n'ai évoqué que la 1ère partie, mais dans ma formule je tenais compte des deux.

    Merci

+ 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