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 :

Empêcher la conversion en date heure lors d'un chercher remplacer [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2015
    Messages : 51
    Points : 47
    Points
    47
    Par défaut Empêcher la conversion en date heure lors d'un chercher remplacer
    Bonjour,

    j'ai un problème sur une macro sur Excel 2007. Je copie/colle une liste de date/heure d'un fichier .csv

    Le format est en texte sous la forme dd/mm/aa-hh:mm:ss

    Le copier/coller ne me pose aucun problème.

    Par contre lorsque je fais un rechercher/remplace pour enlever le tiret (-), Excel me converti automatiquement les date/heure en format date heure (jj/mm/aaaa hh:mm:ss) pour toutes les date du 1 au 12 du mois en inversant les mm et jj et me laisse les autre au format texte.

    Exemple: 05/11/15-19:30:28 devient 11/05/2015 19:30:28 en format date/heure
    alors que 13/11/15-00:00:44 devient 13/11/15 00:00:44 en format texte

    Ma question est comment empêcher la conversion en date des 12 premiers jours pour avoir un format cohérent pour le traitement suivant?

    Ci-dessous mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        i = ligneForme + 1
        Do While Cells(i, 2) <> ""
        With Sheets("Feuil1").Cells(i, 2)
           .Replace What:="-", Replacement:=" "
           .Value = CDate(.Value)
           .NumberFormat = "dd/mm/yyyy hh:mm:ss"
        End With
        i = i + 1
        Loop
    Merci par avance si quelqu'un peut me dépanner... je sèche depuis 3 heures sur les forums

  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 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Salut.

    Attention que dans ton code, tu utilises Cells(i,2) pour ton test puis Sheets("Feuil1").Cells(i, 2) dans la boucle. Si Feuil1 n'est pas la feuille active, tu ne pointes pas vers les mêmes cellules.
    Attention également que dans le DO, tu boucles jusqu'à ce que la valeur de la cellule soit un espace (<> cellule vide)...

    Cela étant dit, le problème vient du fait que en VBA, les dates s'expriment selon la notation anglo-saxonne (MM/DD/YY). Je ne vois pas d'autre technique que de "parser" la valeur de la cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Test()
      Dim ligneforme As Long
      Dim Row As Long
      Dim Cell As Range
     
      ligneforme = 10
      Row = ligneforme + 1
      Set Cell = Cells(ligneforme + 1, 2)
      Do While Cell.Value <> ""
        Cell.Value = DateSerial(Mid(Cell.Value, 7, 2), Mid(Cell.Value, 4, 2), Left(Cell.Value, 2)) + _
          TimeSerial(Mid(Cell.Value, 10, 2), Mid(Cell.Value, 13, 2), Right(Cell.Value, 2))
          Set Cell = Cell(2)
      Loop
    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...
    ---------------

  3. #3
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2015
    Messages : 51
    Points : 47
    Points
    47
    Par défaut
    Merci beaucoup, cela fonctionne exactement comme je le souhaite.

    Merci aussi pour le signalement des maladresses de programmation (un copier collé d'un autre programme non correctement expurgé ).

    Je marque le problème comme résolu.

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour.

    Comment éviter l'inversion jour/mois : envoyer une valeur de type Date vers une cellule au format Date.

    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
    Sub Pour_Eviter_Inversion_Jour_Mois()
     
    For i = 1 To 10
     
        tout = Cells(i, 2)
        If tout <> "" Then
     
         tout = Replace(tout, "-", " ")
     
         Cells(i, 2).NumberFormat = "General" 'Le format joue un rôle essentiel.
         'Vers une cellule au format "General", le type Date s'impose pour éviter l'ìnversion jour/mois
         Cells(i, 2).Value = CDate(tout)
     
        End If
     
       Next
     
    End Sub
    Cordialement

    Docmarti.

  5. #5
    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 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Salut Docmarty

    Ca n'empêche pas l'inversion, dans la mesure où la date est comprise en fonction, notamment, des paramètres régionaux.

    De plus, le format n'influe en rien la valeur contenue dans la cellule. C'est au moment de la transformation de la date par la suppression du "-" que le problème se pose, pas au moment où la valeur est affectée à la cellule.

    Personnellement, j'ai rencontré de nombreuses fois ce problème entre mon pc où tout fonctionne bien et celui de certains clients chez qui l'inversion était effectuée, et à ce jour, la seule réponse que j'ai trouvée est celle que j'ai renseignée.

    Mais si tu as d'autres pistes testées sur divers environnements au niveau des paramètres régionaux, je suis preneur...
    "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...
    ---------------

  6. #6
    Invité
    Invité(e)
    Par défaut
    bonjour Pierre et Doc,
    il faut toujours passer les dates au format international! format(date,"yyyy-mm-dd")!

    ainsi cdat(format(date,"yyyy-mm-dd")) ! retourne bien une date en fonction des paramétrés régionaux!
    Dernière modification par Invité ; 02/12/2015 à 14h12.

  7. #7
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2015
    Messages : 51
    Points : 47
    Points
    47
    Par défaut
    bonjour Docmarti et Rdurupt,

    Effectivement, comme l'a souligné Pierre, c’est au moment du retrait du tiret que le problème se pose et cela quelque soit le format.

    Je les ai tous essayés.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cell.Value =format(Cell.value,"yyyy-mm-dd")
    Dernière modification par Pierre Fauconnier ; 02/12/2015 à 14h42.

  9. #9
    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 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Salut

    Citation Envoyé par rdurupt Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cell.Value =format(Cell.value,"yyyy-mm-dd")
    renvoie forcément une erreur avec la date telle que saisie dans la cellule, à savoir 15/04/15-12:41:19, puisque VBA ne sait pas traduire cette valeur en date, notamment à cause du tiret. Et enlever le tiret revient à inverser ou non la date en fonction des paramètres régionaux...
    "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...
    ---------------

  10. #10
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message

    Mais si tu as d'autres pistes testées sur divers environnements au niveau des paramètres régionaux, je suis preneur...
    Le code suivant produit l'inversion Jour/Mois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Replace What:="-", Replacement:=" "
    Tout comme le code suivant qui produit la même inversion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim tout as String
    tout = Replace(.Value, "-", " ")
    .Value = tout

    Par contre le code ci-dessous ne produit pas d'inversion Jour/Mois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim tout as String
    tout = Replace(.Value, "-", " ")
     .NumberFormat = "dd/mm/yyyy hh:mm:ss"
     .Value = CDate(tout)
    Testé avec de multiples paramètres régionaux.

    Ma théorie est que l'inversion ne se produit que quand une valeur de type String est assignée à une cellule qui n'est pas au format TEXTE.
    Et se produit également quand une valeur de type Date est assignée à une cellule qui n'est pas au format Date.

    Mais si la valeur et la cellule sont du même type (Ex.: valeur de type Date et cellule au format Date ), VBA n'a pas à effectuer une conversion d'un type à un autre et il n'y a donc pas d'inversion.
    Cordialement

    Docmarti.

  11. #11
    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 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Docmarty,

    Désolé, mais cela ne fonctionne pas, et l'inversion s'effectue toujours...

    Voici ton code adapté pour placer la conversion dans la cellule d'à côté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test1()
      Dim Tout As String
     
      Tout = Replace(ActiveCell, "-", " ")
      ActiveCell(1, 2).NumberFormat = "dd/mm/yy"
      ActiveCell(1, 2).Value = CDate(Tout)
    End Sub
    Nom : 2015-12-02_164806.png
Affichages : 350
Taille : 1,5 Ko

    Nom : 2015-12-02_163453.png
Affichages : 401
Taille : 14,4 Ko

    Ma conclusion: Actuellement, la seule solution qui fonctionne à tous les coups est de parser le texte pour reconstruire la date...
    "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...
    ---------------

  12. #12
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Docmarty,

    Désolé, mais cela ne fonctionne pas, et l'inversion s'effectue toujours...

    Voici ton code adapté pour placer la conversion dans la cellule d'à côté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test1()
      Dim Tout As String
     
      Tout = Replace(ActiveCell, "-", " ")
      ActiveCell(1, 2).NumberFormat = "dd/mm/yy"
      ActiveCell(1, 2).Value = CDate(Tout)
    End Sub

    Ma conclusion: Actuellement, la seule solution qui fonctionne à tous les coups est de parser le texte pour reconstruire la date...
    Je suis désolé également car, comme tu as choisi Anglais (Etats-Unis) dans les paramètres , l'inversion apparente est causée par ton choix du format de date dans la cellule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveCell(1, 2).NumberFormat = "dd/mm/yy"
    Le format de date aux Etats-Unis devrait être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveCell(1, 2).NumberFormat = "mm/dd/yy"
    Cordialement

    Docmarti.

  13. #13
    Invité
    Invité(e)
    Par défaut
    oui effectivement, j'ai fait la diagonale du fou dans ma lecture,je n'avais pas vue le "-"! mais je viens de tester ActiveCell=format(replace("13/11/15-00:00:44","-"," "),"yyyy-mm-dd hh:mm:ss") ! et ça marche.

  14. #14
    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 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    rdurupt

    Chez moi, avec ton code, j'obtiens le 15/11/2013

    Mais de toute façon, il faut tester avec une date "inversable", ce qui n'est pas le cas ici...
    Raté

    Mais p'têt ben qu'on arrivera à trouver...

    Docmarty,

    Cela ne change absolument rien chez moi... Et pour cause, puisque la transformation se fait indépendamment du format de la cellule. Pour rappel, le format de la cellule ne change jamais la valeur de la cellule (sauf pour les décimales si l'on coche une option très spécifique d'Excel, ce que je déconseille fortement).

    Ce que tu dois faire, c'est vérifier, via la fonction mois(), que la donnée est bien celle attendue. Le format que tu spécifies dans la formule te leurre visuellement sur la vraie valeur de la cellule.

    Ce qu'il faut comprendre, c'est qu'au départ, Excel reçoit du texte => "02/12/2015".

    Au moment de la conversion, en fonction des paramètres régionaux, Excel va comprendre "02 décembre" ou "12 février". Le format n'a rien à voir là-dedans! Tant que vous convertirez directement en date, quel que soit le format de la cellule, vous serez dépendant de la manière dont Windows comprend votre date.

    La seule solution fiable, quels que soient les paramètres régionaux, est donc de considérer ce qui est reçu, à savoir "02/12/2015", et de parser pour recréer la vraie date, à savoir "02 décembre"...
    "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...
    ---------------

  15. #15
    Invité
    Invité(e)
    Par défaut
    Ok alors disons que je n'ai rien dit, a l'occasion je configurerai un Vm pour tester, car ne voyant pas le problème, je n'arrive pas à évaluer mais j'ai entièrement confiance en toi!

  16. #16
    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 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    rdurupt,

    Ce qui intéressant dans cette discussion, c'est que si on ne trouve pas d'autres solutions que le parsing (perso, j'aurais apprécié), cela met au moins en évidence que la manipulation des dates est un casse-tête, rendu d'autant plus ardu qu'Excel "s'amuse" à inverser lorsqu'une "date" rentrée n'en est pas une mais que son inversion en est une (par inversion, j'entends jj/mm qui devient mm/jj ou mm/jj qui devient jj/mm).

    VBA vient mettre son grain de sel dans l'histoire, modifiant encore la donne. Au passage, je signalerai que VBA et Excel acceptent les débordements avec les trucs du genre dateserial(2015,23,35) (VBA) ou DATE(2015,23,35) (Excel)...

    Donc, pas simple, la gestion des dates lorsque les classeurs sont partagés entre personnes n'utilisant pas les mêmes paramètres régionaux. Mais tu as sûrement déjà été confronté à cela en ta qualité de développeur .net, et les gestionnaires de bases de données savent aussi que c'est "amusant" de gérer des DB avec les paramètres régionaux qui entrent en conflit avec les paramètres de la DB.

    Ce n'est pas sans raison que la norme ISO 8601 spécifie un format (texte!) pour les échanges de calendrier...
    "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...
    ---------------

  17. #17
    Invité
    Invité(e)
    Par défaut
    Au que oui, la date c'est un vrai casse tête!

    Moi dans mes base données il y a longtemps que je fais comme toi , du texte.

    MySql ne comprend le champ date qu'en yyyy-mm-dd H24:Mn:ss!

    Oracle a l'installation tu définis short long time.. Et a l'ouverture de la connection tu fais une requêtes pour modifier le format le temps de la session!

    Nous sommes confronté à la meilleur façon de développé et le confort de l'utilisateur!

    Bien sur l'un ne vas pas sens l'autre, mais les éditeurs de logiciel devient communiquer sur la façon la plus pertinente d'éviter ce conflit philosophique!

    Ça fait maintenant 20 et je ne me rappelle plus avoir vue ce genre d'informations.

    Potasser les 100Ko de doc Oracle oui!

  18. #18
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,
    comme cela ca marche aussi

    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
    Sub Macro1()
    '---------------------------------------------------------------------------------------
    ' Procedure : Macro1
    ' Author    : Oliv-
    ' Date      : 02/12/2015
    ' Purpose   :
    '---------------------------------------------------------------------------------------
    '
     
    Set c = Range("E2")
      c.NumberFormat = "@"
      c.Value = Replace(c.Value, "-", " ")
     
        c.TextToColumns Destination:=c, DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(1, 4), TrailingMinusNumbers:=True
        c.NumberFormat = "m/d/yyyy h:mm"
    End Sub

  19. #19
    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 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Oliv-,

    Recalé

    Avec mes paramètres régionaux (ceux illustrés plus tôt dans la discussion), si je testes le mois, je reçois 2 et pas 12...
    "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...
    ---------------

  20. #20
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    T es sûr?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Conversion de date et heure en Excel
    Par youcef81 dans le forum Excel
    Réponses: 2
    Dernier message: 03/10/2006, 13h39
  2. [datetime] conversion d'une chaîne en une date + heure
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 2
    Dernier message: 07/04/2005, 11h43
  3. [CR] pb (concaténation/Conversion/Addition) sur date/heure
    Par marvel dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 20/12/2004, 16h31
  4. Conversion date ->heures
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 02/09/2004, 17h08
  5. Conversion de date lors d'un import
    Par bilbon.S dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/03/2004, 15h33

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