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 une date format texte en format date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 64
    Par défaut Convertir une date format texte en format date
    Bonjour,

    je vous expose mon problème.
    j'ai une macro qui me permet de copier la partie que je veux de plusieurs fichiers Excel sont les ouvrir d'un dossier.
    jusqu'à là tout va bien.
    mon soucis est que la première colonne de mon fichier est une date mais qui est sous la forme "le 1 janvier" ou bien "le 25 janvier". je souhaite transformer cette date en format date.
    j'ai procéder de la façon suivante:
    1) je copie d'abord tout mes fichiers
    2) j’enlève "le" de chaque cellule
    3) j'essaye de transformer en format date avec la fonction CDate!!! mais ne marche pas!!
    sachant que je cherche à transformer par exemple "le 1 janvier" en 01/01/2012
    il faudra à chaque fois ajouter l'année en cours.
    voilà merci beaucoup pour votre aide

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    Sub Compilation()
     
    Dim Fichier As String
    Dim Chemin As String
    Dim ClasseurSource As Workbook
     
     
    Application.DisplayAlerts = False 'Evite les messages d'Excel
    Application.EnableEvents = False 'Evite l'exécution éventuelle de macros liées aux fichiers ouverts
     
    Chemin = "C:\Documents and Settings\Bureau\Dossier\" 'Chemin du répertoire contenant les fichiers
    Fichier = Dir(Chemin & "*.xls")
     
    Sheets("Feuil1").Select
    Cells.Clear ' tout effacer
    Cells(1, 2) = "Date"
    Cells(1, 3) = "Appels reçus en état ouverts"
    Cells(1, 4) = "Appels reçus en état bloqué"
    Cells(1, 5) = "Appels reçus en état renvoi général"
    Cells(1, 6) = "Appels reçus par entraide"
    Cells(1, 7) = "Nombre maximum d'appels simultanés"
    Cells(1, 8) = "Débordements pendant sonnerie"
    Cells(1, 9) = "Appels servis sans attente"
    Cells(1, 10) = "Appels servis avec attente"
    Cells(1, 11) = "Appels envoyés en entraide"
    Cells(1, 12) = "Appels redirigés hors ACD"
    Cells(1, 13) = "Appels dissuadés"
    Cells(1, 14) = "Appels traités par un GT Guide"
    Cells(1, 15) = "Appels envoyés à un GT remote"
    Cells(1, 16) = "Appels rejetés pour manque de ressources"
    Cells(1, 17) = "Appels servis par un agent"
    Cells(1, 18) = "Servis par un agent conformément à la QS"
    Cells(1, 19) = "Appels servis sans code de transaction"
    Cells(1, 20) = "Appels servis avec code de transaction"
    Cells(1, 21) = "Redistributions ACD"
     
    'Cells(1, 22) = "Appels reçus en état bloqué"
    'Cells(1, 23) = "Appels reçus en état bloqué"
    'Cells(1, 24) = "Appels reçus en état bloqué"
    'Cells(1, 25) = "Appels reçus en état bloqué"
     
     
     
    'lig = 2
     
    Do While Fichier <> ""
        'Range("A2") = Dir
        Set ClasseurSource = Workbooks.Open(Chemin & Fichier)
        ClasseurSource.Worksheets("General").Select 'nom de la feuille source (commune à tous les fichiers sources)
     
        Range("B8:Y8").Select
        Range("Y8").Activate
     
     
     
        Range(Selection, Selection.End(xlDown)).Select 'selection de la zone à copier
        'Date = CDate(Range("A8"))
     
        Selection.Copy
     
        ThisWorkbook.Activate
     
        Sheets("Feuil1").Select
        fin = Cells(65535, 2).End(xlUp)(2).Select 'recherche de la première ligne vide
     
        ActiveSheet.Paste
     
        ClasseurSource.Close
     
        Fichier = Dir
    Loop
    Dim i As Variant
     
    Dim j As Variant
     
    i = 2
    j = 2
    ' boucle pour enlever "LE" de la date
    Do While i <> fin And i < 374
    Sheets("Feuil1").Cells(i, 2) = Right((Sheets("Feuil1").Cells(i, 2)), 10)
    i = i + 1
    Loop
     
    ' boucle pour transformer en format date
    j = 2
    Do While j <> fin And j < 374
       Sheets("Feuil1").Cells(j, 2) = CDate(Cells(j, 2).Value)
        ' i = i + 1
         j = j + 1
    Loop
     
    Application.EnableEvents = True
    Application.DisplayAlerts = True
     
    End Sub

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Utilise DateValue

    Exemple tiré du de l'aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyDate = DateValue("12 février 1969")    ' Renvoie une date.
    EDIT

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 64
    Par défaut
    oui j'avais vu cette exemple , mais je ne peux pas l'utiliser dans mon cas
    dans mes fichiers de base j'ai pas l'année!

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Exemple pour ton cas, l'année en cours est ajoutée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub MonTest()
    Dim Str As String
    Dim Dte As Date
     
    Str = "le 25 janvier"
    Str = Replace(Str, "le ", "")
    Dte = DateValue(Str)
    MsgBox Dte 'Donne 25/01/2012
    End Sub

  5. #5
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Re-bonjour,
    Sinon, la fonction CDate prend l'année courante.
    Exemple dans la fenêtre d'exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ?CDate("25 avril")
    25.04.2012
    Citation Envoyé par arni63 Voir le message
    @tedo02: pour enlever "le" j'y arrive bien, mais j'ai suivi ton conseil en utilisant le mid et ça marche bien aussi
    par contre j'ai toujours un soucis avec le Cdate
    Ma remarque concernait les mois plus courts.
    Par exemple, avec mars,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ?Right("le 25 mars", 10) 
    le 25 mars

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 64
    Par défaut
    @tedo02: pour enlever "le" j'y arrive bien, mais j'ai suivi ton conseil en utilisant le mid et ça marche bien aussi
    par contre j'ai toujours un soucis avec le Cdate

  7. #7
    Expert confirmé
    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

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 64
    Par défaut
    Re bonjour,
    je n'arrive toujours pas à trouver mon erreur!!
    Merci de me donner vos idées
    mercii

  9. #9
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    C'est cette ligne qui n'est pas correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Cells(i, 2) = Right((Sheets("Feuil1").Cells(i, 2)), 10)
    Elle n'enlève "LE" que pour les mois d'au moins 7 lettres.
    Une meilleure formule pourrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Cells(i, 2) = Mid(Sheets("Feuil1").Cells(i, 2), 4)
    Cette expression prend tout le contenu de la cellule à partir du 4e caractère.

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

Discussions similaires

  1. [AC-2010] Problème de conversion d'une chaine de texte en format date.
    Par Axe_Débutant dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/01/2015, 03h29
  2. [AC-2007] Requete_transformer une date format texte en format date
    Par jj4822 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/11/2011, 19h23
  3. [XL-2003] Convertir format texte en format date
    Par Sibuxian dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/09/2010, 14h07
  4. [SQL] Comparaison d'une date au format FR avec la date du jour au format US
    Par delcada dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/10/2007, 15h22
  5. [Requête]Convertir une chaine de texte en format date
    Par emjie dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/04/2007, 00h44

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