Horaire scolaire.xls --> .csv (+quest. macro !)
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 format BRUT.
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.
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 !
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