Autres Faire un récapitulatif de plusieurs jours dans une même feuille

Caninge

XLDnaute Accro
Bonjour à tous,

Pouvez-vous me donner un coup de main.

La tâche me paraît difficile d'autant plus que mes données sont placées un peu spécialement.
Mais avec Excel tout est possible. Il y a des limites tout de même !
Dans mon tableau il y a plusieurs jours de jeudi à lundi (il en manque 3)
Comment récupérer les données de ces jours pour les placer dans la feuille planning.
Dans l'ordre alphabétique noms - Jours - heures et avec un espace entre chaque
personne afin d'imprimer les feuilles et de les découper pour en faire des fiches personnelles.

Ouf! j'arrête mon explication.

Merci de se pencher sur mon tableau

CANINGE
 

Pièces jointes

  • Planning_V1.xlsx
    61.4 KB · Affichages: 19

ChTi160

XLDnaute Barbatruc
Bonjour CANNINGE
je ne veux pas me soustraire a notre ami pierrejean mais voilà ce que j'ai fait .
j'ai créé une Nouvelle macro issue de celle appelée " Planning ou journalier " et que j'ai appelé
"Planning_Affectations "
appelée depuis l'événement Worksheet_Activate de la feuille "Planning Affectations"
VB:
Private Sub Worksheet_Activate()
Call Planning_Affectations
End Sub
la procédure "Planning_Affectations" ci dessous
Code:
Sub Planning_Affectations()
Set dico = CreateObject("Scripting.dictionary")
feuilles = Array("Jeudi", "Vendredi", "Samedi", "Dimanche", "Lundi")
For p = LBound(feuilles) To UBound(feuilles)
Set sh = Sheets(feuilles(p))
  If Not sh.Name Like "Planning*" Then
      For n = 8 To sh.Range("G" & Rows.Count).End(xlUp).Row
      If sh.Range("B" & n) <> "" Then
         lieu = sh.Range("B" & n)
         Heure = sh.Range("F" & n)
         Travail = sh.Range("C" & n)
      End If
          If sh.Range("G" & n) <> "" Then
              ShtName = sh.Name
              dico(ShtName) = dico(ShtName) & sh.Range("G" & n) & "|" & lieu & "|" & Heure & "|" & Travail & ";"
          End If
      Next
  End If
Next
a = dico.keys
b = dico.items
For n = LBound(a) To UBound(a)
  For m = LBound(a) To UBound(a)
      no_n = InStr(Join(feuilles, ","), a(n))
      no_m = InStr(Join(feuilles, ","), a(m))
      If no_n < no_m Then
          tempa = a(n)
          tempb = b(n)
          a(n) = a(m)
          b(n) = b(m)
          a(m) = tempa
          b(m) = tempb
      End If
   Next
Next
Application.ScreenUpdating = False
With Sheets("Planning Affectations")
    .Range("A3:F" & Rows.Count).ClearContents
ligne = 4
For n = LBound(a) To UBound(a)
  x = Split(b(n), ";")
  For m = LBound(x) To UBound(x) - 1
      .Range("B" & ligne) = a(n)
      .Range("D" & ligne) = Split(x(m), "|")(0)
     
      .Range("F" & ligne) = CDate(Split(x(m), "|")(2)) 'heure
     
      .Range("C" & ligne) = Split(x(m), "|")(3)
      .Range("E" & ligne) = Split(x(m), "|")(1)
   
      ligne = ligne + 1
  Next
  ligne = ligne + 1
Next
End With
End Sub
Content de t'avoir croisé !
Bonne Journée
jean marie
 

Caninge

XLDnaute Accro
Bonjour ChTi160,

j'ai fait des essais. Ca colle apparemment.

Serait-il possible d'avoir des espaces entre chaque écriture comme dans le fichier joint.

C'est peut-être ici la réponse :

ligne = ligne + 1
Next

ligne = ligne + 1

Mais bon je ne comprend pas trop.

Merci beaucoup
 

Pièces jointes

  • Planning_V7.xlsm
    426.6 KB · Affichages: 1

Caninge

XLDnaute Accro
Bonjour Jean-Marie,
ça va ? j'ai réussi à mettre les macros dans mon vrai fichier.
Je ne comprenais pas trop mais j'y suis arrivé. Cela fonctionne comme je veux.
Si seulement je connaissais tout ça !!! moi et l'anglais nous sommes fâchés. Je n'ai jamais appris en fait.
Je ne parle que le français et le Bourbonnais. Lol.
Je verrais si je rajoute autre chose.
Merci en attendant c'est bien sympa.
A plus.
CANINGE
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof