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 date en format américain automatique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 7
    Par défaut Conversion date en format américain automatique
    Bonjour,

    J’ai un problème, je récupère des données que j’affiche dans un tableau. Ces données sont dans les colonnes A, B, C. Je dois alors effectuer des opérations sur ces données à l’aide d’une macro. J’affiche alors les données dans bdd après macro

    Vous trouverez le fichier en pièce jointe !

    Problème : Cependant, lorsque je rentre les données dans un tableau puis les affiche de nouveau cela me change la date (en orange) en inversant les mois et jours.

    Du coup j’ai essayé de régler le problème en convertissant les dates au préalable à l’aide de CNUM(). Et ça marche, seulement, cela créé des colonnes en plus et cela affiche 0 ou #VALEUR alors qu’il ne devrait pas y avoir de date. Donc pour 100000 lignes de données, cela prend du temps.

    N’y aurait-il pas un autre moyen de régler le problème sans ma méthode =CNUM( ) ? En changeant les formats ou autres… ?

    J’ai pu remarquer qu’en double cliquant par exemple sur la cellule C5 puis en faisant entrée. Cela me règle le problème. La macro n’échange pas les jours et mois. Y a-t-il un moyen de faire « Entrée » sur toutes les cellules d’un coup par macro?
    Sinon, pourquoi cela affiche #VALEUR alors que la case est vide ?

    Merci infiniment d'avance pour votre aide !!!

    Pour les flemmards :p

    Nom : Capture5.PNG
Affichages : 1375
Taille : 28,2 Ko


    Avec le code de la macro
    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 Test()
    Worksheets("Bdd initiale").Activate
     
    Range("A2:C15").NumberFormat = "General"
     
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "=VALUE(RC[-2])"
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "=VALUE(RC[-2])"
    Range("D2:E2").Select
    Selection.AutoFill Destination:=Range("D2:E15")
     
    Dim Tableau_1()
    Tableau_1 = Range("A2:E15")
     
    Worksheets("Bdd après macro").Activate
    Range("A2").Resize(14, 5) = Tableau_1
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Par Macro Range("A:C") = Range("A:C").Value

  3. #3
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour

    @rdurupt : Ta suggestion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C2:C15").Value = r.Value
    provoque la conversion de valeurs STRING en valeurs DATE (les cellules étant au format DATE ). Il y a donc inversion jour/mois.

    Mieux vaut FormulaLocal qui ne provoque pas de conversion, donc pas le problème d'inversion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Corriger_Cellules()
     Set r = Range("C2:C15")
     r.NumberFormat = "m/d/yyyy"
     r.FormulaLocal = r.Value
     
    End Sub

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    juste histoire d'ajouter de l'eau au moulin


    http://didier-gonard.developpez.com/...-excel-et-vba/

    C'est devenu un livre de chevet et je te conseille le chapitre III

    A+

  5. #5
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    La technique:
    1) Définir la propriété NumberFormat désirée
    2) Ré-écrire la valeur dans la cellule en utilisant FormulaLocal pour que les valeurs ne soient pas modifiées.

    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
    Sub Appel()
    Set origine = Worksheets("Bdd initiale").Range("A1:E15")
    Set fdest = Worksheets("Bdd après macro")
     
    fdest.Activate
    fdest.Cells.Clear
     
    origine.Copy fdest.Cells(1, 1)
     
    Call tt_A2(fdest.Range("A2:A15"))
     
    Call tt_B2(fdest.Range("B2:C15"))
     
    fdest.Columns("A:E").AutoFit
    End Sub
     
    Sub tt_A2(r)
     
     r.Select
     
     r.NumberFormat = "0"
     r.FormulaLocal = r.Value
    End Sub
    Sub tt_B2(r)
     
     r.Select
     
     r.NumberFormat = "m/d/yyyy"
     r.FormulaLocal = r.Value
    End Sub

Discussions similaires

  1. [XL-2003] Date au format américaine dans un csv
    Par qltmi dans le forum Excel
    Réponses: 1
    Dernier message: 05/02/2010, 19h50
  2. [RegEx] Date au format américain
    Par thierry.kunzi dans le forum Langage
    Réponses: 2
    Dernier message: 09/07/2009, 08h40
  3. Afficher une date au format américain
    Par Gregory.M dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/11/2008, 17h04
  4. Problème Date au format Américain
    Par nocrash dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/06/2007, 14h58
  5. Exporter dates au format américain
    Par RKU01 dans le forum Access
    Réponses: 5
    Dernier message: 01/12/2006, 21h28

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