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 :

Conversion de cellules en format date via VBA? [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Conversion de cellules en format date via VBA?
    Bonjour,

    Je dispose d'une grande quantité de fichiers .xls dont les colonnes C,D,E contiennent des dates, malheureusement au format "standard" au lieu du format date excel "classique" DD/MM/YYYY.
    Manuellement, le problème se règle lorsque je clique sur le champ "fx" de la cellule, puis "entrée", ou bien lorsque j'applique la commande "données > convertir "aux colonnes en question.

    Est-il possible d'automatiser ce genre de correctif via une macro?
    Pour précision, je suis débutant en la matière.

    Merci beaucoup d'avance pour votre aide.

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Voici une macro qui réalise cela. Afin de la rendre générique, j'ai travaillé sur la sélection. Ainsi, tu dois sélectionner les colonnes C:E pour convertir en une fois toutes les cellules de ces colonnes au format jj/mm/aaaa.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup Pierre,
    Toutefois je ne vois pas de pièce jointe?

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Bonjour,

    si une cellule texte représente une date valide pour Excel (vérifiable via la fonction IsDate),
    il y a diverses solutions comme par exemple modifier le format de la cellule en date (propriété NumberFormat),
    utiliser la fonction CDate ou encore la méthode TextToColumns (la fonction Convertir de la feuille de calculs) …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Oups. J'avais oublié de mettre le code, qui met la sélection au format date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub SetDateFormatToSelection()
      Selection.NumberFormat = "dd/mm/yyyy"
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Un grand merci à tous pour votre aide !
    Pierre, une question svp :
    Quelle modification dois-je apporter à ce code afin que l'exécution se fasse pour tous les fichiers .xls d'un même dossier, sur les colonnes C,D,E ?

    Merci d'avance

    Bonjour,
    Pourriez-vous svp regarder ma dernière question à ce sujet?

    Merci d'avance

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Voici une macro commentée qui fait cela. On pourrait bien entendu la paramétrer (ce serait mieux, en fonction de son utilisation finale). Cette macro doit être placée dans un fichier qui n'est pas dans le dossier analysé. Il faut aussi modifier le path et éventuellement les colonnes. La macro ne recherche que les xlsx, mais je suppose que tu pourras adapter sans problèmes.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub SetColumnsNumberFormat()
      Dim Filename As String
      Dim Path As String
      Dim WB As Workbook
      Dim WS As Worksheet
      Dim Columns As String
     
     
      Application.ScreenUpdating = False
     
      ' Initialisation des données
      Path = "E:\Dossier"
      Columns = "C:E"
     
      ' Recherche du premier fichier Excel dans le dossier souhaité
      Filename = Dir(Path & "\*.xlsx")
      ' On boucle tant que DIR renvoie un nom de fichier
      Do While Filename <> ""
        Set WB = Workbooks.Open(Path & "\" & Filename)
        ' On boucle sur toutes les feuilles du fichier
        For Each WS In WB.Worksheets
          WS.Range(Columns).NumberFormat = "dd/mm/yyyy"
        Next WS
        ' On ferme le fichier en enregistrant
        WB.Close savechanges:=True
        ' On recherche le nom du fichier suivant
        Filename = Dir()
      Loop
     
      Application.ScreenUpdating = True
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup,

    Voilà qui va beaucoup m'aider pour la suite :-)

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Steppingstone Voir le message
    le problème se règle lorsque je clique sur le champ "fx" de la cellule, puis "entrée"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("Fx:Fx")=range("Fx:Fx").value
    ça revient à faire un Enter!

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

Discussions similaires

  1. [XL-2007] Format date en Vba
    Par tdemsi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/03/2012, 20h50
  2. Format date sur VBA
    Par tissam89 dans le forum Access
    Réponses: 2
    Dernier message: 18/07/2011, 11h13
  3. [AC-2007] changement de format date en vba?
    Par EmmanuelleC dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/07/2010, 00h10
  4. Concatenation avec une cellule au format date
    Par lightzeus dans le forum Excel
    Réponses: 2
    Dernier message: 01/07/2007, 16h18
  5. Email au format HTML via VBA
    Par DPhBxl dans le forum Access
    Réponses: 10
    Dernier message: 25/01/2007, 15h24

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