IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

exporter un CSV avec inversion jour et mois pour google calendar [XL-MAC 2011]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Artisan
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Artisan

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Par défaut exporter un CSV avec inversion jour et mois pour google calendar
    Bonjour à tous,

    Voilà je bataille depuis un petit moment (je suis débutant) pour faire un export d'une feuille en CSV en inversant le jour et le mois de 2 colonnes.

    J'ai un tableau, dans une feuille intitulée "CSV", dont la taille varie uniquement pour les lignes, avec 2 colonnes de dates, que je dois inverser lors de l'exportation pour que google calendar ne m'inverse pas les rdvs ajoutés le 1er juin avec le 6 janvier.
    Curieusement il n'y avait pas d'erreurs pour l'importation dans google de la fin de mai.

    Dans l'idée, j'ai des codes qui marchent séparément mais je voudrais les regrouper pour traiter chaque partie de la feuille CSV.

    Voici le premier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub CSV()
    '
    Dim Range As Object, Line As Object, Cell As Object
    Dim TMP As String, Sep As String
     
       Sep = ","
       Set Range = ActiveSheet.UsedRange
     
     Open "Horaires.csv" For Output As #1
     
     For Each Line In Range.Rows
        TMP = ""
        For Each Cell In Line.Cells
           TMP = TMP & CStr _
             (Cell.Text) & Sep
         Next
        Print #1, TMP
      Next
     Close
     End Sub
    Celui-ci fonctionne, mais je voudrais rajouter ce bout de code uniquement pour les colonnes 2 et 3, et sans la ligne 1 qui contient les intitulés des 5 colonnes (subject, start date, end date,...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DatC = Mid(oC2, 4, 2) & "/" & Left(oC2, 2) & "/" & Right(oC2, 4)
                            TMP = TMP & DatC & Sep
    Donc mes questions sont :

    Comment faire pour ne traiter que la ligne 1 avec le premier code ?
    Puis rajouter une condition, dans une autre boucle, pour n'inverser que les mois et jours des colonnes 2 et 3 ?

    Voilà j'ai joint le fichier d'origine normalement et merci infiniment pour vos contributions à ma recherche!
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Pas besoin d'un traitement bizarre!
    DatC = format(oC2, "mm/dd/yyyy") ;

    Mais je pense que le format international serait mieux!

    DatC = format(oC2, "yyyy-mm-bb")

  3. #3
    Membre averti
    Homme Profil pro
    Artisan
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Artisan

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Par défaut
    Merci rdurupt de m'aider un peu !

    Voici le code que j'ai modifié mais il me dit "else sans if" !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub CSV_10()
    '
    Dim Range As Object, Line As Object, Cell As Object
    Dim TMP As String, Sep As String
     
       Sep = ","
       Set Range = ActiveSheet.UsedRange
     
     Open "Horaires.csv" For Output As #1
     
     For Each Line In Range.Rows
        TMP = ""
        For Each Cell In Line.Cells
            If IsDate(Cell) = True Then Cell = Format(Cell, "mm-dd-yyyy")
            Else
                 TMP = TMP & CStr(Cell.Text) & Sep 'il me dit else sans if !!?"
            End If
         Next
        Print #1, TMP
      Next
     Close
     End SubÏ

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If IsDate(Cell) = True Then 
                  Cell = Format(Cell, "yyyy-mm-mm") 'le format internationale fonctionne comme ça et Pour toutes les langues!
            Else
                 TMP = TMP & CStr(Cell.Text) & Sep 'il me dit else sans if !!?"
            End If

  5. #5
    Membre averti
    Homme Profil pro
    Artisan
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Artisan

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Par défaut
    Bon alors autocorrection pour le "else sans if", ça peut servir à tout le monde :
    Il faut faire faire un retour à la ligne juste après le "then".

    Donc après correction, les colonnes de date ont disparues

  6. #6
    Invité
    Invité(e)
    Par défaut
    Peut être, mais regardes mon code!
    Dernière modification par AlainTech ; 22/06/2015 à 21h20. Motif: Suppression de la citation inutile

  7. #7
    Membre averti
    Homme Profil pro
    Artisan
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Artisan

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Par défaut
    Arf tu me*répondais en même temps que j'avais trouvé pourquoi ça bloquait. Merci encore

    Bref, de toutes façons, j'ai essayé "yyyy-mm-dd" ça marche pô.
    Il reconnait bien si le contenu de la cellule est une date, et si oui alors il me le supprime lol

  8. #8
    Invité
    Invité(e)
    Par défaut
    C'est pas quelque chose comme ça plutôt?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If IsDate(Cell) = True Then 
                  TMP = TMP & Format(Cell, "yyyy-mm-mm") & Sep  'le format internationale fonctionne comme ça et Pour toutes les langues!
            Else
                 TMP = TMP & CStr(Cell.Text) & Sep 'il me dit else sans if !!?"
            End If

  9. #9
    Membre averti
    Homme Profil pro
    Artisan
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Artisan

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Par défaut
    Alors mea culpa, j'avais fait une erreur, c'est bon ça marche !

    Mais par contre j'ai pas vraiment compris.
    Le résultat est bien comme je voulais "dd-mm-yyyy", à la française quoi, et pourtant j'ai appliqué ta formule "yyyy-mm-dd"...
    En fait, d'après ce que je comprends, en faisant comme ça, tu inverses la date avant que VBA ne passe par là et ne l'inverse également ?

    Enfin en tout cas merci mille fois maître rdurupt !

  10. #10
    Invité
    Invité(e)
    Par défaut
    Le vrai format des dates sur n'importe quel système d'exploitation est "yyyy-mm-dd" c'est le format international tous les systèmes le voit comme une date valide

    Format international

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VB6 - Excel: Inversion Jour et Mois si jour inferieur à 12
    Par thibaultdus dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 09/01/2009, 15h03
  2. Probleme inversion jour et mois lors d'une copie par macro
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/09/2008, 15h29
  3. [Dates] Inversion jour et mois
    Par Kephuro dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 02/08/2008, 18h51
  4. comment creer une colonne avec les jours du mois
    Par Daniela dans le forum Access
    Réponses: 1
    Dernier message: 17/10/2006, 11h34
  5. remplir une table avec les jours du mois
    Par david06600 dans le forum Langage
    Réponses: 6
    Dernier message: 04/08/2006, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo