Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Tableau horaire...formules? VBA? formes conditionnelle...à l'aide

Cayou3131

XLDnaute Nouveau
Bonjour à tous!!

J'aurais besoin de votre expertise les amis.

Je veux fabriquer un horaire avec ce tableau (Tableau #1). Horaire comportant une activité (1er exemple: 2021-12-01 entre 08:00 et 10:00). Cette activité doit être retranscrit dans le tableau #2 (prochaine photo) et doit inscrire la période demandée (entre 0800 et 10:00) avec la couleur de la cellule (Colonne B) soit Bleu TOUT en inscrivant le nom du client (Colonne M ainsi que le chiffre de la colonne A (#9). L'activité en question est désigné à une personne en particulier (Colonne H Tomat, Yan).



Tableau #1


Tableau #2

Dans le fichier, j'ai mis le tout manuellement pour mieux comprendre ce que je désire.

Comment m'y prendre svp (Formule?? VBA, forme conditionnelle).

Merci de votre aide

Celui qui me trouve ça aura TOUT MON RESPECT!! )

Simon
 

Pièces jointes

  • Horaire2022.xlsx
    45.9 KB · Affichages: 15
  • BA4FD545-89CE-40D3-A07C-ED0B82CC0A65-2711-0000013037459588.JPG
    761.6 KB · Affichages: 28
Solution
Bonjour Simon,

bienvenue sur le site XLD !

* sur la feuille "Mercredi", note que le planning est vide.

* sur "Airport transfers", fais Ctrl e ➯ travail effectué !



code VBA de Module1 (72 lignes) :

VB:
Option Explicit

Dim ct As Byte

Private Function gcf(typ$) As Long
  Select Case typ
    Case "A1": gcf = 15773696               'bleu clair
    Case "A2": gcf = 65535                  'jaune
    Case "D1": gcf = 49407                  'orange
    Case "D2": gcf = 255: ct = 2            'rouge
    Case "Special": gcf = 10498160: ct = 2  'violet
    Case "Staff": gcf = 5287936             'vert
  End Select
End...

soan

XLDnaute Barbatruc
Inactif
Bonjour Simon,

bienvenue sur le site XLD !

* sur la feuille "Mercredi", note que le planning est vide.

* sur "Airport transfers", fais Ctrl e ➯ travail effectué !



code VBA de Module1 (72 lignes) :

VB:
Option Explicit

Dim ct As Byte

Private Function gcf(typ$) As Long
  Select Case typ
    Case "A1": gcf = 15773696               'bleu clair
    Case "A2": gcf = 65535                  'jaune
    Case "D1": gcf = 49407                  'orange
    Case "D2": gcf = 255: ct = 2            'rouge
    Case "Special": gcf = 10498160: ct = 2  'violet
    Case "Staff": gcf = 5287936             'vert
  End Select
End Function

Sub Essai()
  If ActiveSheet.Name <> "Airport transfers" Then Exit Sub
  Dim n1&
  With ActiveSheet.ListObjects("Tableau1")
    If .DataBodyRange Is Nothing Then Exit Sub
    n1 = .ListRows.Count: If n1 = 0 Then Exit Sub
  End With
  Dim sh As Worksheet, n2&: Application.ScreenUpdating = 0
  Set sh = Worksheets("Mercredi"): n1 = n1 + 1
  n2 = sh.Cells(Rows.Count, 2).End(3).Row
  If n2 > 3 Then
    With sh.Range("F4:BB" & n2)
      .Interior.ColorIndex = -4142: .Font.Bold = 0
      .Font.ColorIndex = -4105: .ClearContents
    End With
  End If
  Dim cel As Range, dt As Date, h1 As Date, h2 As Date
  Dim drv$, tsk%, cf&, clt$, a%, b%, c%, d%, i&, j&
  For i = 2 To n1
    With Cells(i, 1)
      drv = .Offset(, 7)
      If drv <> "" Then
        Set cel = sh.Columns(2).Find(drv, , -4163, 1, 1)
        If Not cel Is Nothing Then
          tsk = .Value: ct = 1: cf = gcf(.Offset(, 1)): clt = .Offset(, 12): j = cel.Row
          dt = .Offset(, 2): h1 = Hour(.Offset(, 3)): h2 = Hour(.Offset(, 4)): a = 6
          Do
            With sh.Cells(3, a)
              b = a + .MergeArea.Columns.Count
              If IsEmpty(.Value) Then Exit Do
              If .Value = dt Then
                b = b - 1
                For c = a To b
                  If Hour(sh.Cells(2, c)) = h1 Then
                    With sh.Cells(j, c)
                      .Font.ColorIndex = ct: .Value = clt & " #" & tsk: d = c
                      Do While Not IsEmpty(sh.Cells(2, d))
                        If Hour(sh.Cells(2, d)) = h2 Then Exit Do
                        sh.Cells(j, d).Interior.Color = cf: d = d + 1
                      Loop
                    End With
                    Exit Do
                  End If
                Next c
                Exit Do
              Else
                a = b
              End If
            End With
          Loop
        End If
      End If
    End With
  Next i
  sh.Select
End Sub

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis.

soan
 

Pièces jointes

  • Horaire2022.xlsm
    56.1 KB · Affichages: 17

Cayou3131

XLDnaute Nouveau
WOWWWWWWWWWWW!!

Un ENORME MERCI à toi!!

Ça faisait quelques semaines que je visionnais des clips sur YOUTUBE et je ne trouvais absolument rien.

Et toi, comme par magie, tu trouves la solution en cliquant des doigts.

J ai un large sourire dans mon visage grâce à toi mon ami!!!

Il me reste quelques trucs à peaufiner que je cherche encore mais l'essentiel TU L'AS RÉALISÉ!!

WOOOOOOWWWWWWWWW
 

Cayou3131

XLDnaute Nouveau
Bonjour Soan

J'ai retravaillé le fichier et j'ai élargie la plage des journées. Dans l'ancienne version, il était seulement pour 2 jours ( pensant que PERSONNE N AURAIT TROUVÉ LA RÉPONSE) mais maintenant il est pour 7 pour la version finale.

Les informations restent affichées si je les corrigent par la suite (changement de personnes) et je dois donc les enlever manuellement. ;(

1- Est ce que les inscription sur la feuille MERCREDI peuvent être en gras (pour facilité la lecture)?

2- De plus, je voulais faire un décompte des activités selon la période du temps (un genre de compte couleur selon l'heure en ligne 19-36-53 et 70 mais je crois que le VBA va m'en empêcher. Si ça cause problème, c est le dernier de mes soucis.

3- Je ne peux figer les volets de la ligne des HEURES ET des NOMS (incluant le type de véhicule suivant le nom). Pourquoi??

As tu une solution a tout mes tracas ?
 

Pièces jointes

  • Activité2022.xlsm
    94.8 KB · Affichages: 7

Cayou3131

XLDnaute Nouveau
Pour ce qui est de la no 2... je peux aussi mettre le Décompte en bas complètement du tableau
C’est encore plus simple je crois

( pas de couleur séparément, seulement la somme des cases avec couleurs )
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Simon,

ton fichier en retour ; même utilisation.

1- inscriptions en gras : fait

2- décompte des activités selon la période du temps :
je te laisse le mettre en bas, sous le tableau.

3- c'est pas clair ! sur quelle feuille ? quelles sont
les références des cellules concernées ?

soan
 

Pièces jointes

  • Activité2022.xlsm
    95.4 KB · Affichages: 9

Cayou3131

XLDnaute Nouveau
Rebonjour Soan

Je dois être hyper ignorant ou c est toi le super génie mais je n'arrive pas a faire la SOMME des couleurs (il y a 6 couleurs )PAR CHAQUE LIGNES à la ligne 70.

ex: Si tu fais Ctrl E.....pour le mercredi 1dec il y a 3 couleurs différentes à 10:00...donc la case 70 devrait inscrire le chiffre 3 et ainsi de suite pour les autres.

En bref, j'aimerais avoir la somme de toutes les couleurs ( si les 55 personnes sont occupées (avec couleurs )sur les 60 inscrites, la case 70 devra donc inscrire 55.

Je suis quelque peu désespéré ;(
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…