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 :

Convertir texte en date et heure


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    travailleur
    Inscrit en
    Juillet 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : travailleur

    Informations forums :
    Inscription : Juillet 2018
    Messages : 76
    Par défaut Convertir texte en date et heure
    Bonjour,
    Je ne suis pas informaticien mais je suis amené à faire du traitement de données à partir de fichiers excel. Avec les différentes aides sur le net et votre forum, j’ai déjà réussi à faire pas mal de choses et notamment des macros.
    Aujourd’hui j’ai un problème sur un format de cellule. J’ai 3 fichiers A, B, et C que je dois mettre en forme et venir coller dans un autre fichier, D dans 3 onglets différents. Je n’ai aucun problème pour la majorité du traitement sauf la colonne des dates et heures. Comme vous pouvez le voir sur le fichier juste en dessous (hors cellule A3), la date et l’heure ne sont pas reconnues malgré que le format de cellule soit bien de type dd/mm/aaaa hh :mm.






    J’ai essayé d’extraire les données avec =gauche ou ce genre de choses et d’ensuite concatener, ajouter un espace entre la date et l’heure mais rien n’y fait.
    La cellule se met au bon format quand on rentre dedans et qu’on sort. J’ai donc fait une macro pour le faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    'Mise en forme date & heure colonne A
     
                    Dim colonneA As Range
     
        Set colonneA = Range("A3:A" & DerLigB)
        For Each c In colonneA.Cells
           c.Select
           SendKeys "{F2}", True
           SendKeys "{ENTER}", True
           Selection.NumberFormat = "dd/mm/yyyy hh:"
        Next
    Et cela fonctionne en partie quand je traite un seul fichier. Si je mets cette macro dans mon fichier A, il fait bien cette action mais quand après être copié dans le fichier D alors que l’action est censé se dérouler dans le fichier A. Ce qui fait que quand je le mets dans la macro de chaque fichier A, B et C, au final il ne fait l’action que pour le dernier copié en D, c'est-à-dire la partie collée de C dans D.

    Si vous avez des idées, je suis preneur

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 683
    Par défaut
    Bonjour,

    Merci d'utiliser les balises code (bouton #) c'est beaucoup plus lisible

    As tu essayer les fonctions vba de conversion (cdate si mes souvenirs sont bons, pour la conversion en date) ?


    Et cela fonctionne en partie quand je traite un seul fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Set colonneA = Range("A3:A" & DerLigB)
    Peux être parce que tu ne précise pas le classeur (et la feuille) quand tu déclare ton range, donc il prend sur le fichier actif
    Essaye en ajoutant workbooks("nomClasseur").Sheets("NomFeuille").range(...)

  3. #3
    Membre confirmé
    Homme Profil pro
    travailleur
    Inscrit en
    Juillet 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : travailleur

    Informations forums :
    Inscription : Juillet 2018
    Messages : 76
    Par défaut
    Merci. Dès que je suis sur pc, je mettrais les balises. Même en déclarant sur chaque macro la feuille, l’onglet... ça ne traite que sur le fichier D la partie traitée de C et donc pas a et b.
    Les macros B et C sont les mêmes que la A ou je change le range pour cette partie.

    Ce que je comprends pas c’est qu’il fait la mise en forme après avoir copier sur le fichier D alors qu’il devrait le faire sur chaque fichier à, b, et c.

    Je regarde pour la partie date

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 683
    Par défaut
    Même en déclarant sur chaque macro la feuille, l’onglet... ça ne traite que sur le fichier D la partie traitée de C et donc pas a et b.
    Les macros B et C sont les mêmes que la A ou je change le range pour cette partie.
    As-tu essayé de lancer la macro en mode pas à pas (touche F8) ? tu comprendras peut être pourquoi ton code ne fait pas ce que attend.

  5. #5
    Membre confirmé
    Homme Profil pro
    travailleur
    Inscrit en
    Juillet 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : travailleur

    Informations forums :
    Inscription : Juillet 2018
    Messages : 76
    Par défaut
    Quand je fais du pas à pas, ça merde la macro, c’est à dire qui fait un retour à la ligne directement dans la macro tant qu’il y a des lignes.
    Je pense que ce n’est pas la bonne méthode ma méthode.
    Quand je vais dans donnés, convertir .... JMA ça fonctionne. Peut être qu’il y’a une fonction vba pour faire ça. Ou alors séparer et refaire la colonne je ne sais pas.

    J’ai trouvé la solution. Je la mets après

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    Range("A:A").NumberFormat = "General"
    Range("A:A").Value = Range("A:A").Value
    End Sub

  7. #7
    Membre confirmé
    Homme Profil pro
    travailleur
    Inscrit en
    Juillet 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : travailleur

    Informations forums :
    Inscription : Juillet 2018
    Messages : 76
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    Range("A:A").NumberFormat = "General"
    Range("A:A").Value = Range("A:A").Value
    End Sub
    J'ai testé mais ça ne fonctionne pas.
    Par contre j'ai trouvé ma réponse en cherchant encore et encore sur le forum et j'ai fini par trouver cette formule

    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
     
      With Range("A3:A" & DerLigB)
     
        .Insert Shift:=xlToRight
     
        .Offset(0, -1).FormulaR1C1 = "=IF(RC[1]<>"""",RC[1]*24/24,"""")"
     
        .Offset(0, -1).NumberFormat = "dd/mm/yyyy hh:"
     
        .Offset(0, -1).Copy
     
        .Offset(0, -1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
     
        .Delete
     
        End With
    Ca me permet de résoudre mon problème et cela fonctionne.
    En tout cas merci pour vos réponses. J'ai d'autres potentielles questions que je vais chercher à résoudre par moi-même avant de peut-être vous redemandez.

    Bien à vous.

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

Discussions similaires

  1. [XL-2003] Mise en forme conditionnelle date passée
    Par Walt51 dans le forum Excel
    Réponses: 6
    Dernier message: 17/03/2014, 12h28
  2. [AC-2007] Mise en forme conditionnelle date dans Etat
    Par Yamina62 dans le forum IHM
    Réponses: 9
    Dernier message: 28/09/2013, 14h43
  3. [XL-2010] Mise en forme conditionnelle date
    Par emilie31 dans le forum Excel
    Réponses: 2
    Dernier message: 23/01/2013, 11h39
  4. [XL-2007] Mise en forme conditionnelle date du jour
    Par bianchini dans le forum Excel
    Réponses: 2
    Dernier message: 13/04/2011, 16h54
  5. [Crystal Report] Problème avec la mise en forme à colonnes multiples
    Par SamRay1024 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 14/10/2010, 16h19

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