horaire scolaire.xls --> .csv (+quest. macro !)

Y compris Power BI, Power Query et toute autre question en lien avec Excel
G
Guiz912
Nouveau venu
Nouveau venu
Messages : 1
Inscrit le : 26 octobre 2013
Version d'Excel : Mac 2011

Message par Guiz912 » 26 octobre 2013, 15:25

Bonjour a tous,

après quelques heures de recherches sur le net, je décide de me tourner vers un forum spécialiser car je ne trouve réponse a mes questions nulle part.
J'ai cependant appris pas mal de chose.... Je m'explique

Je reçois régulièrement un horaire de l'école sous ce format BRUT : https://www.dropbox.com/s/f9ckdrdxw53g0 ... oraire.xls

J'aimerais, importer cet horaire sur mes appareils iOS et mon Mac donc, via l'application calendrier d'Apple, iCal.

Etant dans le groupe Be en BAC 1 et déjà dispensé de quelques cours, a l'école, je filtre mon horaire a arrive a ceci (il s'agit de mon horaire personnel) : https://www.dropbox.com/s/2a4tb4s2p2v7a ... oraire.xls

j'ai cru comprendre qu'il fallait transformer ce fichier .xls en .csv , l'importer dans Google calendar, et ensuite récupérer l'agenda google sur ses appareils iOS et Mac
(question intermédiaire : est il possible de supprimer l'étape Google calendar et directement passer a iCal d'Apple (ou iCloud??) ?)

Je rencontre néant moins plusieurs problème ...

Tout d'abord, l'heure des cours: le format envoyé par l'école est le suivant -> une colonne "heure" avec les valeurs "xxhxx - xxhxx" ou
est il possible de créer une macro, transformant cette unique colonne en 2 colonnes ou les valeurs "xxhxx" deviennent xx:xx et sont chacune dans 2 colonnes différentes ? (heure de début et heure de fin)

De plus, j'ai quand meme réussi a importer un fichier .csv (écrit manuellement et d'une seule ligne pour un test) dans google agenda.
Google agenda ne prends en compte que les virgules et non les point virgule (j'ai donc du modifier tout les point virgules par des virgules) OR ma version d'excel sur mon mac (2011, 10.3.8 ) ne me permet que de faire des fichiers .csv en point virgules

Donc, pour récapituler ; 2 questions
- la macro transformant l'unique colonne heure en 2 colonnes séparées et modifiant le format xxhxx par xx:xx
- la transformation d'un fichier .xls en .csv (séparation par virgules) à la place de .csv (séparation par point virgules)

Merci d'avance à tout ceux qui me liront !
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 7'788
Appréciations reçues : 211
Inscrit le : 16 juin 2013
Version d'Excel : 2013 UK Windows 10

Message par h2so4 » 26 octobre 2013, 21:45

Bonsoir,

une proposition de macro sur base de ce que j'ai compris. Comme tu ne nous as pas dit ce que devait contenir le fichier csv, j'y ai tout mis.
Sub genagendacsv()
    Dim hor As Variant
' nom du fichier csv à créer
    Open "e:\agenda.csv" For Output As #1
    ' on travaille avec la feuille nommée horaire
    With Worksheets("horaire")
        ' dernière ligne de l'horaire
        dl = .Range("b" & Rows.Count).End(xlUp).Row
        'on ajoute 2 colonnes et leur entête
        .Cells(1, 9) = "Heure debut"
        .Cells(1, 10) = "Heure fin"
        ' fc contient la liste des cellules visibles de A (après filtrage)
        Set fc = .Range("A1:a" & dl).SpecialCells(xlCellTypeVisible)
        ' pour chaque cellule visible de la colonne A
        For Each c In fc
            ' i numero de ligne de la cellule
            i = c.Row
            ' r= cellule en colonne 7 sur la ligne i
            r = .Cells(i, 7)
            ' si r contient quelque chose
            If r <> "" Then
                If i > 1 Then ' et que ce n'est pas la ligne titre
                    r = Replace(UCase(r), "H", ":") ' replacer "h" par ":"
                    hor = Split(r, "-") ' couper la cellule en 2
                    .Cells(i, 9) = hor(0) ' et mettre première partie en colonne 9
                    .Cells(i, 10) = hor(1) ' et Deuxième partie en colonne 10
                End If
                ' on écrit la ligne dans le fichier csv
                sep = ""
                For j = 1 To 10
                    If j > 8 Then ' format special pour les heures de début et de fin
                        Print #1, sep & Format(.Cells(i, j), "hh:mm");
                    Else
                        Print #1, sep & .Cells(i, j);
                    End If
                    If sep = "" Then sep = ","
                Next j
                Print #1, ""
            End If
        Next
    End With
    Close #1
End Sub
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message