Transformer un tableau en une liste exportable CSV

Bonjour a tous

voici un probleme que je ne sais pas résoudre,

comment puis-je passer d'un tableau [ Voir photo ]

capture d ecran 2019 02 28 a 12 54 02

en une liste comme ci-dessous

un de mes problèmes est que pour chaque jour et chaque heure il peut y a 3 professeurs

Lecon04-017 2019-04-01 15:00:00 Akiko

Lecon04-018 2019-04-01 15:00:00 Sebastien

Lecon04-019 2019-04-01 17:00:00 Akiko

Lecon04-020 2019-04-01 18:00:00 Akiko

Bonjour,

Expliques un peu mieux ce que tu souhaites car dans les lignes de sorties en exemple je ne trouve pas de correspondance dans le tableau !

Postes une copie de ton classeur anonymisée.

si je prends le mercredi matin comme base je voudrais obtenir une liste comme cela:

Lecon04-017 | 2019-04-01 10:00:00 | Adeline

Lecon04-018 | 2019-04-01 10:00:00 | Benoit

Lecon04-019 | 2019-04-01 11:00:00 | Adeline

Lecon04-020 | 2019-04-01 11:00:00 | Benoit

Lecon04-017 | 2019-04-01 12:00:00 | Adeline

Lecon04-018 | 2019-04-01 12:00:00 | Benoit

Bonjour,

Comme tu n'as pas mis de fichier exemple, j'ai extrapolé par rapport à ton image et voici le résultat qui sera sûrement à adapter !

Résultat dans la fenêtre d'exécution (Ctrl+G) :

Sub Test()

    Dim Lig As Long
    Dim Col As Long
    Dim I As Long
    Dim J As Long
    Dim K As Long

    Lig = Cells(Rows.Count, 1).End(xlUp).Row
    Col = Cells(2, Columns.Count).End(xlToLeft).Column

    For J = 2 To Col Step 3: For I = 4 To Lig

        K = K + 1

        If Cells(I, J).Value <> "" Then Debug.Print "Lecon04-" & Format(K, "000") & " | " & Format(Cells(3, J).MergeArea.Cells(1, 1).Value, "yyyy-mm-dd") & " " & Format(Cells(I, 1).Value, "hh:mm") & " | " & Cells(I, J).Value
        If Cells(I, J + 1).Value <> "" Then Debug.Print "Lecon04-" & Format(K, "000") & " | " & Format(Cells(3, J).MergeArea.Cells(1, 1).Value, "yyyy-mm-dd") & " " & Format(Cells(I, 1).Value, "hh:mm") & " | " & Cells(I, J + 1).Value
        If Cells(I, J + 2).Value <> "" Then Debug.Print "Lecon04-" & Format(K, "000") & " | " & Format(Cells(3, J).MergeArea.Cells(1, 1).Value, "yyyy-mm-dd") & " " & Format(Cells(I, 1).Value, "hh:mm") & " | " & Cells(I, J + 2).Value

    Next I, J

End Sub

Bonjour THEZE,

Merci pour tous vos efforts et mes excuse de ne pas être au niveau

mais je fais quoi du code?

je joins cette fois le fichier, (normalement in comprends 4 ou 5 semaines)

7planning-prof.xlsx (60.85 Ko)

Bonjour,

Comme je ne sais pas où tu veux récupérer la liste, elle sera mise en colonne F à partir de F18 !

Ton classeur en retour en .xlsm car la macro est dedans. Pour voir le résultat, cliques sur le bouton :

7planning-prof.xlsm (30.52 Ko)

Merci beaucoup Theze,

cela va faire gagner du temps a mes collègues et moi je vais essayer de l'améliorer si j'y arrive

JJ

Expliques ce que tu aimerais et je verrai ce que je peux faire pour que la liste te soit le plus facile à exploiter, sur une autre feuille pour impression, pour envoi par mail groupé, etc...

Bonjour,

Désolé de t'avoir demandé ce que tu voulais faire alors que tu l'as bien stipulé dans le titre de ton post, un .csv

Voici le code qui va créer un .csv dans le même dossier que le classeur :

Sub ExportEnCSV()

    Dim Lig As Long
    Dim Col As Long
    Dim I As Long
    Dim J As Long
    Dim K As Long

    Lig = Cells(Rows.Count, 1).End(xlUp).Row
    Col = Cells(2, Columns.Count).End(xlToLeft).Column

    Open ThisWorkbook.Path & "\Planning porf.csv" For Output As #1

        For J = 2 To Col Step 3: For I = 4 To Lig

            If Cells(I, J).Value <> "" Then K = K + 1: Print #1, "Lecon04-" & Format(K, "000") & " | " & Format(Cells(3, J).MergeArea.Cells(1, 1).Value, "yyyy-mm-dd") & " " & Format(Cells(I, 1).Value, "hh:mm") & " | " & Cells(I, J).Value
            If Cells(I, J + 1).Value <> "" Then K = K + 1: Print #1, "Lecon04-" & Format(K, "000") & " | " & Format(Cells(3, J).MergeArea.Cells(1, 1).Value, "yyyy-mm-dd") & " " & Format(Cells(I, 1).Value, "hh:mm") & " | " & Cells(I, J + 1).Value
            If Cells(I, J + 2).Value <> "" Then K = K + 1: Print #1, "Lecon04-" & Format(K, "000") & " | " & Format(Cells(3, J).MergeArea.Cells(1, 1).Value, "yyyy-mm-dd") & " " & Format(Cells(I, 1).Value, "hh:mm") & " | " & Cells(I, J + 2).Value

        Next I, J

    Close #1

End Sub
Rechercher des sujets similaires à "transformer tableau liste exportable csv"