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 :

Afficher créneaux horaires d'un planning avec les couleurs des celulles [XL-2007]


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
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2018
    Messages : 17
    Par défaut Afficher créneaux horaires d'un planning avec les couleurs des celulles
    Bonjour à tous,

    J'ai modifié précédemment le message mais j'ai fait une fausse manip et je m'en excuse, merci de me l'avoir fait remarqué, je rectifie par ce nouveau message.

    J'ai en effet un planning semaine sur lequel, je mets en couleur les cellules C2 à I68 qui correspondent aux heures de débuts et fins de poste de travail par jour de salariés. Le lundi, colonne C, le mardi colonne D... jusqu'à la colonne I pour dimanche.
    Les horaires sont affichés en colonne B de 5h00 à 21h00 de B2 à B66
    Une macro me calcule déjà avec un bouton le nombre d'heures travail sur le créneau colorié, donc de C2 à I66 et qui s'affiche ds les cellules C67, D67, E67, F67, G67, H67 et I 67.

    Voici la macro qui calcule le nombre de champs coloriés de C2 à I68 et qui donne le nombre d'heures de travail en C67, D67, E67, F67, G67, H67 et I 67:

    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
    Private Sub CommandButton2_Click()
     
    For Each o In [C2:C66]
    If o.Interior.ColorIndex <> xlNone Then i = (i + 0.010416667)
    Next
    [C67] = i
        For Each o In [D2:D66]
        If o.Interior.ColorIndex <> xlNone Then j = (j + 0.010416667)
        Next
        [D67] = j
            For Each o In [E2:E66]
            If o.Interior.ColorIndex <> xlNone Then k = (k + 0.010416667)
            Next
            [E67] = k
                For Each o In [F2:F66]
                If o.Interior.ColorIndex <> xlNone Then l = (l + 0.010416667)
                Next
                [F67] = l
                    For Each o In [G2:G66]
                    If o.Interior.ColorIndex <> xlNone Then m = (m + 0.010416667)
                    Next
                    [G67] = m
                        For Each o In [H2:H66]
                        If o.Interior.ColorIndex <> xlNone Then n = (n + 0.010416667)
                        Next
                        [H67] = n
                            For Each o In [I2:I66]
                            If o.Interior.ColorIndex <> xlNone Then p = (p + 0.010416667)
                            Next
                            [I67] = p
     
    End Sub
    Je souhaiterez maintenant récupérer les heures de début et fin de poste afficher en B2 jusqu'à B66 qui correspondent aux créneaux coloriés donc des cellules C2 à I66 pour les afficher ds les cellules C68, D68, E68, F68, G68, H68 et I 68.

    La complexité, enfin pour moi est de compiler, ds la présente boucle, une nouvelle formule qui va venir récupérer des données horaires de la colonne B d'après les cellules coloriées de C2 à I66 pour les afficher en C68, D68, E68, F68, G68, H68 et I 68.

    Je peux envoyer un fichier si vous estimez que mes explications ne suffisent pas.

    Je suis preneur de tous conseils sur la formule à construire ou encore sur les principes à respecter quand on ajoute une nouvelle fonction ds une boucle, je l'adapterai ensuite au planning.
    Je cherche depuis plusieurs jours sur le site et sur internet mais pour le coup mon niveau de compétence ne me permet pas d'y arriver sans conseil...

    Je vous remercie par avance pour vos précieux retours

    DanyRun

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Travailler avec les couleurs n'est pas le fond de commerce d'Excel et entame sa relative célérité …

    Par rapport à ton code, il n'y a pas de critère particulier de couleur, peu importe la couleur ?
    Un aperçu de la feuille aiderait certes mais si le critère est juste une couleur,
    tu peux alors lire la cellule dans la colonne B via la propriété Offset par exemple …

  3. #3
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2018
    Messages : 17
    Par défaut
    Bonjour,

    oui, les couleurs ne sont pas le fort d'excel mais c'est tout ce que j'ai trouvé pour que cela ne soit pas une source d'erreurs ds l'utilisation du planning et éviter les "1" disgracieux ds les cellules pour effectuer les calculs. Il y a certainement d'autre approches et méthode...
    Je suis preneur si elles existent...
    En effet peu importe les couleurs pour remplir le planning
    Je te joins un aperçu du fichier qui aidera à sa compréhension
    Le bouton bleu permet de calculer les heures coloriées pour lundi=Colonne C, mardi colonne D etc...
    Les horaires affichés pour l'exemple à la main sous le total d'heure ( 7h00 / 10h00 et 12h00 / 15h00) est la formule que je cherche à intégrer à la boucle existante.
    La complexité est qu'il y a en plus deux créneaux horaires à récupérer ds la colonne B (qui ne se chevaucheront jamais)

    Pour la propriété Offset, je vais regarder ce que c'est exactement mais comme l'objectif est d'intégrer une nouvelle fonction à la boucle existante, c'est là que je bloque...

    Merci d'avoir pris le temps sur ma problématique.
    A bientôt

    DannyRun

    Nom : image planning semaine.png
Affichages : 1067
Taille : 85,1 Ko

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut P'tite démonstration pour la colonne C …
    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
    Sub Demo1()
            Dim Rg As Range, N%, R%, S$, D As Date
            Set Rg = [C1]
            Cells(67, Rg.Column).Resize(3).ClearContents
        For N = 1 To 2
            Set Rg = Rg.End(xlDown)
             If Rg.Row > 66 Then Exit For
            R = 1
            While Rg(R - 1).Interior.ColorIndex = Rg.Interior.ColorIndex:  R = R - 1:  Wend
            S = Replace(Cells(Rg(R).Row, 2).Text, ":", "h") & " / "
            D = Cells(Rg(R).Row, 2).Value
            R = 2
            While Rg(R).Interior.ColorIndex = Rg.Interior.ColorIndex:  R = R + 1:  Wend
            Cells(67, Rg.Column).Value = Cells(67, Rg.Column).Value + Cells(Rg(R).Row, 2).Value - D
            Cells(68, Rg.Column)(N).Value = S & Replace(Cells(Rg(R).Row, 2).Text, ":", "h")
        Next
            Set Rg = Nothing
    End Sub
    ___________________________________________________________________________________________________________

         Merci de cliquer sur en bas à droite de chaque message ayant aidé puis sur pour clore cette discussion …

  5. #5
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2018
    Messages : 17
    Par défaut
    Bonsoir Marc-L,

    je dois dire que cela m'épate quand même que tu fasses cette macro à partir de celle que j'ai envoyée et d'une image mais qui en plus fonctionne.... Ne change pas de métier

    Tu as réussi à compiler le tout mais je dois dire que ce type de macro me dépasse ds son vocabulaire, là je suis largué ds la compréhension mais bon l'objectif c'est que cela fonctionne.

    Je t'aurais normalement dis, merci et j'aurais fais le restant des colonnes mais là...
    Je vais quand même essayer de continuer, par contre il n'y a que le premier créneau horaire qui s'affiche en C68 mais pas le second créneau en C69.... c'est certainement voulu en attendant de voir si cela fonctionne. Je te confirme cela fonctionne parfaitement

    J'essaye de continuer sur les autres colonnes
    Merci de partager tes compétences et ton temps

    A+

    DannyRun

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Je viens de tester :  les deux créneaux horaires sont bien affichés en C68:C69 …

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

Discussions similaires

  1. [POI] Problème avec les couleurs des cellules Excel
    Par ninoch07 dans le forum Documents
    Réponses: 1
    Dernier message: 15/01/2015, 14h14
  2. [PDO] [PDO] Afficher la requête avec les valeurs des marqueurs
    Par guy2004 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/01/2014, 21h21
  3. jouer avec les couleur des lignes de diplaytable
    Par fouyou dans le forum Struts 1
    Réponses: 1
    Dernier message: 24/04/2007, 10h01
  4. probleme avec les posts des formulaires
    Par axel-erator dans le forum Langage
    Réponses: 6
    Dernier message: 04/05/2006, 11h41
  5. Afficher un fond en arrière plan avec des boutons
    Par eGen dans le forum Agents de placement/Fenêtres
    Réponses: 15
    Dernier message: 03/04/2005, 23h37

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