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 :

Remplissage Cellules sous condition [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2013
    Messages : 68
    Par défaut Remplissage Cellules sous condition
    Bonjour à toutes et à tous et tous mes vœux pour cette nouvelle année.

    Justement nouvelle année... nouveau fichier à générer au boulot. Et je cherche à me simplifier la vie. Je vais donc essayer de vous expliquer clairement ma difficulté (novice en VBA).

    Le fichier "EMPLOI DU TEMPS EDUCATIF" indique les horaires de salariés S1 à S24 en fonction de la tourne 1 à 6, et ce par service (Oliviers A, Oliviers B, Acanthes, Vignes)

    Le fichier MATRICE PLANNING 2014 est celui que je veux alimenter en fonction du fichier "EMPLOI DU TEMPS EDUCATIF": je voudrais reporter les horaires de chacun des 24 salariés dans les cellules correspondantes (plage de données intitulée "PLANNING") en fonction de la tourne correspondante indiquée sur la ligne 5.

    Exemple: pour le mercredi 1er janvier 2014 (nous sommes en tourne 1), reporter l'horaire "7h00- 14h00" dans la cellule B12 (croisant en ligne le salarié 1 et en colonne la date de mercredi 1er janvier).

    Si j'étais en tourne 2, je devrais alors indiquer "13h30- 20h00" dans cette même cellule B12. Et "7h30- 14h00" si j'étais en tourne 3. etc jusqu'à la tourne 6 et pour l'ensemble des salariés.

    J'espère que je me fais bien comprendre. Je ne sais absolument pas par où prendre le schmilblic.

    Merci de votre aide!!!!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour,

    Une macro est bien entendu possible, cependant voici trois axes d'améliorations ÉVIDENTS à mettre en place si tu veux un coup de main :
    1) Tes fichiers ont des formalismes compliqués... Dans "MATRICE PLANNING" tu as des cellules fusionnées, tous les salariés ne sont pas les uns à la suite des autres mais tu intercales les "services" au milieu, tu as des cellules masquées, etc...
    => Premier axe d'amélioration : formalisme de fichier beaucoup plus simple.

    2) Je ne comprends pas tout. Tu as "OLIVIERS A" avec les Salarié 1 à 6 dans un fichier ; dans l'autre, ce sont les Salariés 1, 5, 9, 13, 17 et 21.
    => Un éclaircissement serait peut-être le bienvenu sur certains points.

    3) Dans un fichier tu as "Salarié 1" à 4 écris de manière "complète". Dans un autre tu as "Salarié 1" à 9 écris de cette manière...
    => Comment mapper correctement les valeurs si tes fichiers comportent ce type de différences.

    Je te propose donc de simplifier ces fichiers si tu veux qu'une macro fonctionne efficacement car le développement spécifique pour ce type de fichiers est énorme (et tu précises que tu es novice).

    Je t'aiderai dès ton retour.

    Cordialement,
    Kimy

  3. #3
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2013
    Messages : 68
    Par défaut
    Bonjour Kimy_Ire,

    Merci pour ta réponse.
    J'ai donc rerpis un peu le formalisme de mes fichiers (d'un en fait), en tenant compte de tout ce que tu m'as dit.
    Il s'agit du fichier "EMPLOI DU TEMPS EDUCATIF" que j'ai modifié afin que la présentation soit la même que le fichier "PLANNING".
    Par contre, je ne l'ai rempli que pour les 2 premières tournes sur les 6. Je me dis qu'il va y avoir une histoire de plage là dedans et que si je pige le truc pour une plage de cellules n'incluant que les 2 premières tournes, je comprendrai pour une plage de cellules devant incluer 6 tournes.
    Encore merci pour ton aide.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour Averell1976,

    Ici : Macro.zip, tu trouveras ce que j'ai fait.

    Je me suis permis de continuer la modification les fichiers comme je te l'avais demandé.
    Si tu as un problème d'adaptation, n'hésites pas à revenir vers moi.

    Les cellules fusionnées peuvent, si tu le souhaites, être outrepassé si tu souhaites vraiment les garder dans le fichier d'origine.

    Cependant, le fait d'avoir tes services au milieu de la feuille pose problème. Je me suis donc permis de les retirer.

    Tout peut-être fais par macro, même les fichiers avec des formalismes très compliqués. Cependant, pour comprendre ce que tu fais, l'idéal est de commencer par des fichiers simples.

    J'attends ton retour.

    Cordialement,
    Kimy

  5. #5
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2013
    Messages : 68
    Par défaut
    Bonjour Kimy_Ire,

    Je te remercie vivement pour ton aide.
    J'ai regardé avec intérêt et on s'approche de ce que je souhaiterai. En effet, par exemple, si j'étais en tourne 2 au lieu de la tourne 1 la première semaine de janvier (qui commence en plus un mercredi), j'aimerai que les horaires des salariés qui s'affichent dans le fichier "MATRICE PLANNING" soient ceux renseignés dans le fichier de base de données "EMPLOI DU TEMPS EDUCATIF".
    En, fait la ligne 5 du fichier "MATRICE PLANNING" est un menu déroulant permettant d'indiquer le numéro de tourne qui nous concerne pour chaque semaine (de 1 à 6 donc); en fonction, les horaires pour chaque jour des salariés devront variés et correspondre à ceux indiqués dans le fichier 'EMPLOI DU TEMPS EDUCATIF); donc variation en fonction du numéro de tourne et du jour de la semaine (le 1er janvier est un mercredi; il faudrait donc récupérer dans la base de données les horaires à partir du mercredi...)
    J'espère me faire comprendre.....

    Merci

  6. #6
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour Averell1976,

    Je ne comprends pas... En effet, si je place des "2" dans dans la ligne 5 de "MATRICE PLANNING", je récupère bien les valeurs de la tourne 2 du fichier "EMPLOI DU TEMPS EDUCATIF".
    Peux-tu me renseigner d'avantage, car je pense que la macro tourne correctement d'après ma compréhension du problème.

    J'attends ton retour.
    Cordialement,
    Kimy

  7. #7
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2013
    Messages : 68
    Par défaut
    Bonjour Kimy_Ire,

    Ba j'ai beau changé les valeurs de la ligne 5 du fichier MATRICE (entre 1 et 2), les horaires ne changent pas.......
    Peut- être une référence manquante?

  8. #8
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2013
    Messages : 68
    Par défaut
    Bonjour Kimy_Ire,

    J'ai réessayé ce matin, il ne se passe rien. Je ne comprend pas bien ce qui peut se passer là....

  9. #9
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour Averell1976,

    Que se passe-t-il exactement ? Message d'erreur ? Macro qui ne change pas les valeurs ? Comment fais-tu pour lancer la macro ? CommandButton ? Via l'onglet "Développeur" ?

    J'ai eu un message d'erreur inattendu alors que tout marchait bien. J'ai donc rajouté un contrôle de gestion d'ouverture de classeur si celui-ci n'est pas ouvert.
    Il ne te reste plus qu'à placer le chemin exact du classeur.

    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
    Sub mapping()
    Dim cell_move As Range
    Dim tourne As Integer
    Dim off As Integer
    Dim x As String
    Dim flag As Boolean
     
    flag = True
    x = "EMPLOI DU TEMPS EDUCATIF 20130901_v1.xlsm"
     
    For Each Wkb In Workbooks
        test = Wkb.Name
        If Wkb.Name = x Then
            flag = False
            Exit For
        End If
    Next Wkb
     
    If flag Then
       'Place ici le chemin du classeur "EMPLOI DU TEMPS".
       Workbooks.Open Filename:="C:\Users\...\Desktop\VBA\EMPLOI DU TEMPS EDUCATIF 20130901_v1.xlsm"
    End If
     
    With Workbooks("MATRICE PLANNING 2014_v4").Worksheets("MATRICE 2014")
        Set cell_move = .Range("A11")
        For i = 1 To .Rows(5).Find("*", , , , , xlPrevious).Column - 1
            For j = 0 To .Columns(1).Find("*", , , , , xlPrevious).Row - 10
                tourne = .Range("A5").Offset(0, i)
                off = Weekday(.Range("A7").Offset(0, i), vbMonday)
     
                With Workbooks("EMPLOI DU TEMPS EDUCATIF 20130901_v1").Worksheets("PLANNING")
                    cell_move.Offset(j, i) = .Range("A1").Offset(.Columns(1).Find(cell_move.Offset(j, 0), LookIn:=xlValues, LookAt:=xlWhole).Row - 1, .Rows(2).Find(tourne, LookIn:=xlValues, LookAt:=xlWhole).Column + off - 2)
                End With
            Next j
        Next i
     
    End With
     
    End Sub
    Tu peux également changer tes noms de fichier en ajoutant les extensions (pour être sûr) :
    With Workbooks("MATRICE PLANNING 2014_v4") => With Workbooks("MATRICE PLANNING 2014_v4.xlsm")
    With Workbooks("EMPLOI DU TEMPS EDUCATIF 20130901_v1") => With Workbooks("EMPLOI DU TEMPS EDUCATIF 20130901_v1.xlsm")

    Voila, tiens moi au courant !

    Cordialement,
    Kimy

  10. #10
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2013
    Messages : 68
    Par défaut
    Merci, ça marche impeccable. J'ai spécifié les extensions xlsm pour éviter le bugg.
    Juste une dernier truc concernant des formules: sur le fichier joint, quand tu sélectionnes le mois et l'année dans la partie jaune en haut à droite, les jours de la semaine changent automatiquement et les week end se mettent en rouge.
    Par contre, ça ne marche pas quand on sélectionne les mois de février (je me suis dit que ça venait du fait que c'était un mois à 28 ou 29 jours), août et décembre.... C'est quoi le bug dans la formule? Je ne stipule pourtant pas le nombre de jours du mois.... je comprend pas tout là....
    Merci vivement pour ton aide. J'ai pu faire marche ton code pour mes 6 tournes....
    Fichiers attachés Fichiers attachés

  11. #11
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Averell1976,

    Tout simplement car dans "FEVRIER", tu n'as pas d'accent et Excel ne reconnait donc pas le mois en question.
    C'est pareil pour "DECEMBRE".
    Je te propose de mettre tout en minuscule (tu n'auras pas de problème avec les accents sur les lettres majuscules, amenés à générer des problèmes).

    Ravis de t'avoir aidé !

    N'oublie pas de cliquer sur résolu en fin de post si la solution est OK pour toi !
    Un petit up sur les réponses pertinentes.

    Cordialement,
    Kimy

  12. #12
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2013
    Messages : 68
    Par défaut
    Pfff.... franchement, merci à toi. Je n'aurai pu m'en sortir tout seul.

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

Discussions similaires

  1. Remplissage d'une cellule sous condition
    Par fmris dans le forum Excel
    Réponses: 4
    Dernier message: 15/04/2014, 09h53
  2. [XL-2003] faire Clignoter une cellule sous condition
    Par LaPanic dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 21/06/2009, 19h49
  3. macro vba identifier cellule sous condition
    Par yanacrux dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/03/2009, 15h00
  4. colorer des cellules sous conditions
    Par coenonympha dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/07/2008, 14h54
  5. remplissage tableau sous condition
    Par gauguin dans le forum C
    Réponses: 6
    Dernier message: 15/02/2007, 18h06

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