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 :

Programmation des heures sup


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 8
    Par défaut Programmation des heures sup
    Slt tout le monde,

    Je viens de découvrir le site.

    N'étant pas un développeur de formation, j'ai quelques difficultés pour programmer les heures sup sur VBa.

    Je requiers donc votre aide, en particulier pour le Samedi et les absences.

    En effet, le personnel travaille de lundi à vendredi soit 8h/jour. Au delà de ces 8h les heures effectuées sont considérées comme supplémentaires.

    Les heures effectuées le samedi sont considérées en leur totalité comme supplémentaires.

    De même en cas d'absence le total d'heures sup est diminué de 8h qui correspond à une durée normale de travail pour un jour.

    J'ai en effet un problème lorsque je spécifie la colonne des samedis dans le mois. Cela me donne des valeurs trop grandes qui ne correspondent pas à ce que je veux faire.

    Ceci est pareil avec les absences

    Voici donc mon programme (sorry j'ecris avec le téléphone).

    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
    29
    30
    Public sub HeureSup 
    Dim ligne As Long 
    Dim colonne As Long 
    Dim HeureSup As Long 
     
      For ligne 6 To 100
             For colonne 5 To 47
     
    If cells (ligne, colonne) = 9 Then 
    HeureSup =HeureSup+1
    Elself cells (ligne, colonne) =10 Then
    HeureSup =HeureSup +2
     
    Pour les samedis 
    Elself cells (ligne, 12)= 6 Then 
    HeureSup =HeureSup +6 (mais ça ne marche pas) 
     
    Pour les absences 
    Elself cells (ligne, colonne) =0 Then 
    HeureSup = HrureSup -8 (pareil ça ne donne pas) 
     
    Pour les dimanches (ils sont pas comptés comme des Heures sup ? 
    Elself cells (ligne, 13)= 5 Then 
    HeureSup = HeureSup +0 (aussi ça ne donne pas) 
    End if
    HeureSup =0
    Cells (ligne, 49) = HeureSup 
    Next ligne
    Next colonne 
    End if
    J'espère ne pas avoir été trop long.

    Merci à tous 😊

  2. #2
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, Votre post, manque cruellement d'explications. et il y a plein de bizarreries.
    par exemple, vous démarrez une bouche avec une fonction Si et des sinon si durant lesquels vous effectuez des calculs sur HeureSup et quand vous sortez de cette fonction Si, vous remettez HeureSup à 0, et ensuite vous entrez la valeur de HeureSup dans une cellule?
    Vous devriez revoir vos explications et présenter aussi une macro digne de ce nom. Evitez d'ailleurs, les "ça marche pas" expliquez nous en quoi ça ne marche pas?
    Cordialement

  3. #3
    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
    Comme dit Transitoire ( ), ta demande manque d'informations. Il serait bien, par exemple, de présenter une copie d'écran pour avoir une idée de la structure de tes données.
    De plus, ton code n'est visiblement pas issu du VBE, sinon beaucoup d'erreurs auraient été corrigées ou signalées.

    Cependant, avec les éléments que tu donnes, il semble presque certain que ce que tu souhaites obtenir peut l'être sans utiliser VBA, uniquement avec des fonctions Excel.

  4. #4
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    bonjour, je peut me tromper, mais le code ci-dessous me semble faux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HeureSup =0
    Cells (ligne, 49) = HeureSup 
    Next ligne
    Next colonne 
    End if

    Pour ma part j'aurais écrit cela comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       Next colonne   'Boucle sur les colonnes d'une même ligne
       Cells (ligne, 49) = HeureSup    ' au bout de la boucle, entre la valeur de heureSup dans la cellule de la colonne 49
       HeureSup =0 ' Remet HeureSup a zéro pour bouclage sur autre ligne
    Next ligne  ' boucle sur la nouvelle ligne . le dernier End If me semble inutile, à moins qu'il n'y ait un If caché.
    En ce qui concerne la série des if, ElseIf ....... vous devriez y réfléchir avec une acuité soutenue, car j'ai un doute, mais il manque des éléments!!!

    Cordialement

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 8
    Par défaut
    Merci pour ta réponse Transitoire.

    Effectivement ton code correspond.

    Pour les conditions de Samedi et Dimanche je vais encore faire des recherches dessus.

    Cordialement.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 8
    Par défaut
    Salut tout le monde,

    Je reviens encore avec cette préoccupation sur les heures supplémentaires.

    J'aimerais bien savoir comment faire pour écrire ce programme des heures sup pour ma colonne des Samedis et Dimanches. En effet il y'a une ligne de ce programme qui me pose des difficultés.

    Je vous écris le programme en question avec la ligne qui me pose des difficultés.

    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
     Public Sub HeureSup ( )
     
    Dim ligne As Long
    Dim colonne As Long 
    Dim HeureSup As Long 
     
    For ligne =7 To 500
      For colonne = 5 To 47
     
    If cells (ligne, colonne) = "9" Then 
    HeureSup = HeureSup + 1
     
    ElseIf cells (ligne, colonne) = "10"Then 
    HeureSup  = HeureSup + 2
     
    Voici les lignes de programmation qui me posent des difficultés. 
     
    ElseIf cells (ligne, 12) = "6" Then 
    HeureSup = HeureSup + 6
     
    ElseIf cells (ligne, 13) =" 8"Then 
    HeureSup = HeureSup +0
    La colonne 12 représente un Samedi du mois . Toutes les heures effectuées les samedis sont considérées comme des heures supplémentaires.

    La colonne 13 renvoie à un Dimanche du mois. Les heures effectuées le Dimanche ne sont pas comptées comme supplémentaires.

    Mais quand j'écris ces lignes ça me met dans la colonne HeureSup une valeur de 340 alors que je voulais juste ajouter + 6 aux heures supplémentaires concernant les Samedis.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    End If 
    Cells (ligne, 49) = HeureSup 
     
    Next colonne 
    HeureSup = 0
     
    Next ligne 
     
    End sub

    Merci à tous.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 8
    Par défaut
    Merci Transitoire pour ta réponse et tes remarques.

    Bonjour Menhir. Merci pour ta réponse et tes remarques.

    Mes données sont structurées dans un tableau avec avec la fin une colonne HeureSup.

    Oui c'est vrai, je peux avoir ces résultats sans passer par une programmation VBa sauf que je suis dans un processus de vérification des données qui me sont transmises.


    J'écris sur un téléphone et non sur un ordi.

    Je vais apporter quelques éclaircissements. Et j'espère qu'ils pourront vous aider à m'aider.

    Effectivement j'utilise des conditions. J'ai un tableau récapitulant les heures de travail par jour du personnel durant tout le mois. Puisque le personnel est payé au salaire horaire.

    Je veux donc utiliser une programmation VBA afin de calculer les heures supplémentaires de chaque ouvrier.

    Au delà de 8h, les heures effectuées sont considérées comme supplémentaires.

    Raison pour laquelle j'utilise la condition suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If cells (ligne, colonne) = 9 (soit 1h supplémentaire)  Then 
    HeureSup = HeureSup +1
      Elseif cells (ligne, colonne) =  10 (soit 2h sup car 10=8+2) Then 
     HeureSup = HeureSup +2
    Effectivement, j'entre la valeur HeureSup dans une cellule. La colonne 49 représente le total des heures supplémentaires pour chaque ouvrier. À chaque cellule de la colonne 49 est affecté le total d'heures supplémentaires d'un ouvrier.

    Je remets HeureSup à 0 pour la prochaine ligne.

    En effet, "ça marche pas" n'est pas très approprié. Je faisais allusion ici à la ligne de programmation que j'ai écrite pour les journées dans le mois qui tombent les Samedis. Car la totalité des heures effectuées le Samedi sont des heures supplémentaires, alors j'ajoute la ligne suivante à mon programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ElseIf cells (ligne, 12)= 8 Then 
    HeureSup = HeureSup +8
    En fait, la colonne 12 représente un Samedi de mon mois.
    Mais quand j'ajoute cette ligne de programmation à mon programme alors la valeur des heures sup n'augmente pas de 8 mais me met une valeur de 344.

    Pour les dimanches du mois c'est presque pareil, sauf que les heures travaillées le Dimanche ne sont pas comptées comme des heures supplémentaires. Donc j'ai écrit la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ElseIf cells (ligne, 13)= 7 Then 
    HeureSup = HeureSup +0
    La colonne 13 représente les Dimanches dans mon tableau. Pour traduire, un ouvrier qui effectue 7 heures de travail le Dimanche n'a droit à aucune heure supplémentaire.
    .Mais encore, quand j'écris cette ligne de programme, cela me donne une valeur de 500


    De même, pour les absences, j'ai écrit la ligne suivante. Les absences sont symbolisées par un "0" dans mon tableau. Et quand un ouvrier est absent, 8h lui sont retirées du total d'heures sup à la fin du mois. Donc j'ai écrit la ligne suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ElseIf cells (ligne, colonne) = 0 Then 
    HeureSup = HeureSup - 8
    Voilà un peu pour les éclaircissements.

    J'espère avoir été plus précis 😊.

Discussions similaires

  1. [AC-2013] Programmer des alarmes a des heures spécifiques
    Par toumax dans le forum VBA Access
    Réponses: 7
    Dernier message: 04/12/2017, 11h39
  2. [XL-2007] Calcul des heures sup
    Par Gestionnaire_rh dans le forum Excel
    Réponses: 5
    Dernier message: 15/02/2012, 14h10
  3. expliquation des heures sup'
    Par milletch dans le forum Paie
    Réponses: 1
    Dernier message: 12/05/2008, 13h09
  4. paiement des heures sup / repos compensatoire
    Par job45 dans le forum Paie
    Réponses: 1
    Dernier message: 15/07/2007, 21h06
  5. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 14h53

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