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 :

Problème avec VBA [Toutes versions]


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
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2019
    Messages : 17
    Par défaut Problème avec VBA
    projet-informatique.xlsm

    Bonsoir,

    J'ai un problème dans la réalisation de mon projet.
    Dans la page planning j'ai, dans la colonne C, référencer le nombre de jour que les employés doivent travailler.
    Seulement quand c'est 5 jours il y a un jour de repos qui est indiqué dans la feuille Bdd colonne F.
    J'aimerais en face de chaque personne et aligné avec le jour correspondant marquer Repos et dans les autres cellules marquer les heures qu'ils doivent faire.
    Heure à faire étant définis dans la feuille menu dans le tableau [A20:F45].

    Merci d'avance je suis bloqué avec la logique tant sur VBA que sur EXCEL.

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Pour trouver le jour de repos: OK, mais pour trouver les heures dans la feuille "Menu", qu'est-ce qui permet de faire le lien avec la feuille "Planning"? Quelle ligne de 20 à 45 de la feuille "Menu" est en rapport avec un nom de la feuille "Planning"? donnez des exemples avec explications à l'appui?
    En attendant d'avoir un peu plus de précisions, voici la formule pour trouver le jour de repos, les heures à trouver (en attente) sont remplacées par "???".
    La formule est à copier en D2, formule matricielle à valider avec CTRL + SHIFT + ENTREE et à tirer vers la droite puis vers le bas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(SI(ET($C2=5;INDEX(bdd!$A:$F;EQUIV($A2&$B2;bdd!$A:$A&bdd!$B:$B;0);6)=D$1);"Repos";"???");"")
    Votre fichier
    Pièce jointe 480826

    Cdlt

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2019
    Messages : 17
    Par défaut
    Dans la feuille Bdd est référencé les heures de chaque personne.
    Ensuite j'ai assigné à chacune des heures le nombre de jour à travail en l'occurrence 5 jours quand <=35h et 6 jours quand > 35h. (colonne C menu)
    Ensuite j'ai prédéfini le nombre d'heures à travailler tous les jours sauf 1 pour réajuster au nombre heure exact de la personne dans la feuille menu. (Colonne E et F Menu.)
    À chaque nombre d'heure travaillé par jour est assigné des horaires du matin ou d'après midi selon la semaine paire ou impaire. (tableau feuille menu [E2:G14])

    Le but est d'afficher les horrairs dans la feuille planning sous la forme 6h-10h
    En espérant que cela vous aide.

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Relisez votre première demande et la dernière. Dans la première demande vous parlez de la plage [A20:F45]. Dans la deuxième, la plage [E2:G14], comment voulez-vous que je m'y retrouve?
    Vous ne dites rien sur le N° de la semaine, est-ce la semaine en cours? là choisissez-vous dans une cellule spécifique, si oui, LAQUELLE?

    Je vous le répète, donnez quelque exemples concrets de ce que vous attendez et soyez clair et précis.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2019
    Messages : 17
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Relisez votre première demande et la dernière. Dans la première demande vous parlez de la plage [A20:F45]. Dans la deuxième, la plage [E2:G14], comment voulez-vous que je m'y retrouve?
    Vous ne dites rien sur le N° de la semaine, est-ce la semaine en cours? là choisissez-vous dans une cellule spécifique, si oui, LAQUELLE?

    Je vous le répète, donnez quelque exemples concrets de ce que vous attendez et soyez clair et précis.
    Excusez moi, j'étais pressé ce matin avant de partir au travail.

    Le numéro de la semaine sert pour les employés ou l'employeur, il aura comme influence uniquement sur les semaines paires ou impaires. Il est demandé dans l'userform [créateur_planning] et ne peut excéder 52.

    Alors dans la feuille BDD est référencé le nombre d'heure à réaliser ainsi que le jour de repos. A partir de ce jour de repos et ce nombre d'heure j'aimerais dans la feuille planning afficher le jour de repos et les heures que chaque employé doit travailler.

    Pour le jour de repos vous m'avez communiqué une formule plus haut donc il ne devrait pas avoir de soucis cependant pour les heures de travail je bloque.

    Je pensais pouvoir indexé et garder en mémoire la valeur des heures de travail avec le tableau [A20:F45].
    Exemple : MORAGUES Maxime travaille 48h semaine, je lui index la valeur 1, il travaillera 6 jours (pas de jour de repos) pendant 5 jours il travaillera 8h par jour et le 6ème jour 8h.
    Cela est découpé comme ceci cependant pour avoir les horaires j'ai créé un autre tableau.
    Ce tableau [D2:G14] est un tableau avec les heure de début et les heures de fin par rapport au heures travaillé.

    Reprenons l'exemple de Moragues Maxime qui travaille 48h semaine. Il travaillera donc 8h par jour donc il commencera à 6h et finira à 14h en semaine paire. En semaine impaire il travaillera de 12h à 20h.

    Un autre exemple : Merrienne Chantale (Ligne 23 'bdd') travaille 39h semaine. A 39h avec le tableau [A20:F45] elle travaillera 6 jours par semaine avec 5 jours à 7h et 1 jour à 4h. Les jours où elle travaille 7h ses horaires seront soit 6h-13h ou 13h-20h selon la semaine paire ou impaire. Le dernier jour elle travaillera de 6h - 10h ou de 16h-20h.

    En espérant avoir été plus claire dans mes explications.

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Voici le résultat, je me suis servi des colonnes J à T de la feuille "Planning" pour tous les calculs intermédiaires, vous pouvez les masquer si vous le désirez.
    Tout est fait par formules enregistrées en VBA, donc à chaque clic sur le bouton "Remplissage du tableau" les formules sont recréées.

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Option Compare Text
     
    Sub Report_des_heures()
        Dim DerLig_f3 As Long
     
        Application.ScreenUpdating = False
        'Set f1 = Sheets("bdd")
        'Set f2 = Sheets("Menu")
        Set F3 = Sheets("Planning")
        DerLig_f3 = F3.[A10000].End(xlUp).Row
        F3.Range("C3:T" & DerLig_f3).ClearContents
     
        F3.Select
        'Jours travaillés
        F3.Range("C3:C" & DerLig_f3).FormulaR1C1 = "=INDEX(Menu!R20C2:R45C6,MATCH(bdd!R[-1]C,Menu!R20C2:R45C2,0),2)"
     
        'recherche des heures à réaliser
        F3.Range("J3").FormulaArray = "=INDEX(bdd!R1C1:R31C10,MATCH(RC1&RC2,bdd!C1&bdd!C2,0),5)"
        F3.Range("J3").AutoFill Destination:=F3.Range("J3:J" & DerLig_f3), Type:=xlFillDefault
     
        'Heure par jour des 5 jours
        F3.Range("K3:K" & DerLig_f3).FormulaR1C1 = "=VLOOKUP(RC10,Menu!R20C2:R45C10,4,0)"
     
        'Heure pour dernier jour semaine
        F3.Range("L3:L" & DerLig_f3).FormulaR1C1 = "=VLOOKUP(RC10,Menu!R20C2:R45C10,5,0)"
     
        'Recherche jour de repos
        F3.Range("M3").FormulaArray = "=INDEX(bdd!R1C1:R31C10,MATCH(RC1&RC2,bdd!C1&bdd!C2,0),6)"
        F3.Range("M3").AutoFill Destination:=F3.Range("M3:M" & DerLig_f3), Type:=xlFillDefault
     
        'Recherche semaine paire ou impaire
        F3.Range("N3").FormulaArray = "=INDEX(bdd!R1C1:R31C10,MATCH(RC1&RC2,bdd!C1&bdd!C2,0),10)"
        F3.Range("N3").AutoFill Destination:=F3.Range("N3:N" & DerLig_f3), Type:=xlFillDefault
     
        'Horaires
        F3.Range("O3:O" & DerLig_f3).FormulaR1C1 = "=IF(RC11=3, ""6h-9h"",IF(RC11=4, ""6h-10h"",IF(RC11=5, ""6h-11h"",IF(RC11=6, ""6h-12h"",IF(RC11=7, ""6h-13h"", ""6h-14h"")))))"
        F3.Range("P3:P" & DerLig_f3).FormulaR1C1 = "=IF(RC11=3, ""17h-20h"",IF(RC11=4, ""16h-20h"",IF(RC11=5, ""15h-20h"",IF(RC11=6, ""14h-20h"",IF(RC11=7, ""13h-20h"", ""12h-20h"")))))"
        F3.Range("Q3:Q" & DerLig_f3).FormulaR1C1 = "=IF(RC12=3, ""6h-9h"",IF(RC12=4, ""6h-10h"",IF(RC12=5, ""6h-11h"",IF(RC12=6, ""6h-12h"",IF(RC12=7, ""6h-13h"", ""6h-14h"")))))"
        F3.Range("R3:R" & DerLig_f3).FormulaR1C1 = "=IF(RC12=3, ""17h-20h"",IF(RC12=4, ""16h-20h"",IF(RC12=5, ""15h-20h"",IF(RC12=6, ""14h-20h"",IF(RC12=7, ""13h-20h"", ""12h-20h"")))))"
        F3.Range("S3:S" & DerLig_f3).FormulaR1C1 = "=IF(AND(RC3=6,RC14=""Paire""),RC15,IF(AND(RC3=6,RC14=""Impaire""),RC16,IF(AND(RC3=5,RC14=""Paire""),RC15,IF(AND(RC3=5,RC14=""Impaire""),RC16,""""))))"
        F3.Range("T3:T" & DerLig_f3).FormulaR1C1 = "=IF(AND(RC3=6,RC14=""Paire""),RC17,IF(AND(RC3=6,RC14=""Impaire""),RC18,IF(AND(RC3=5,RC14=""Paire""),RC17,IF(AND(RC3=5,RC14=""Impaire""),RC18,""""))))"
     
        'Remplissage du tableau de la semaine
        F3.Range("D3:I" & DerLig_f3).FormulaR1C1 = "=IF(RC13=R2C,""Repos"",IF(AND(R2C<>""Vendredi"",R2C<>""Samedi""),RC19,IF(AND(R2C=""Vendredi"",RC13<>""Samedi""),RC19,IF(OR(AND(R2C=""Vendredi"",RC13=""Samedi""),R2C=""Samedi""),RC20,RC19))))"
        F3.Range("C3:T" & DerLig_f3).Value = F3.Range("C3:T" & DerLig_f3).Value
     
        'Set f1 = Nothing
        'Set f2 = Nothing
        Set F3 = Nothing
    End Sub
    Avec le fichier
    Pièce jointe 481560

    Cdlt

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2019
    Messages : 17
    Par défaut
    Waouw, merci je ne voyais pas cela comme ça mais j'ai compris votre raisonnement.

    Je n'hésite pas à vous contacter si j'ai d'autres problèmes mais vous m'avez bien éclairé.

    Je passe le sujet en résolu

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2019
    Messages : 17
    Par défaut
    Salut,

    Comment je fais si je veux ajouter une personne dans la Bdd et répercuter les données dans le planning, cela me met #ref! pour les nouvelles personnes que j'ajoute.

    Merci d'avance

    projet-informatique (version 1).xlsm

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

Discussions similaires

  1. [XL-2013] Problèmes avec VBA exel 2013
    Par koadima dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/10/2017, 01h17
  2. [XL-2003] Petit Probléme avec VBA - Suppression d'info dans une listebox
    Par Antho35 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/10/2010, 11h46
  3. Réponses: 7
    Dernier message: 02/09/2008, 18h42
  4. Problême avec VBA
    Par BRUNO71 dans le forum Access
    Réponses: 7
    Dernier message: 11/05/2008, 18h54
  5. problème avec VBA
    Par Delph dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2002, 13h15

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