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 :

Problème de Dates dans un tableau avec changement de format [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut Problème de Dates dans un tableau avec changement de format
    Bonsoir à tous,

    Je rencontre un problème avec des dates de type dd/mm/yyyy qui se transforme après copie depuis un tableau dans une feuille sous la forme mm/dd/yyyy.

    J’alimente un tableau de 4 colonnes et X lignes avec une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ReDim Preserve tab_1(3, uv)
    tab_1(0, uv) = Feuil3.Range("AP" & i).Value
        tab_1(1, uv) = Feuil3.Range("I" & i).Value
        tab_1(2, uv) = Val(Feuil3.Range("K" & i).Value)
        tab_1(3, uv) = CDate(Feuil3.Range("B" & i).Value) ' colonne du tableau avec dates
    uv = uv + 1
     
    Next

    J'ai mis un Cdate mais rien n'y fait !


    Après j'injecte dans une plage de cellules le tableau et la date se transforme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab_1(3, uv) = CDate(Format(Feuil3.Range("B" & i).Value, "dd/mm/yyyy"))
    Quelqu'un aurait il une astuce pour corriger ça ?

    Bien cordialement

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut
    J'ai parcouru pas à pas la constitution de mon tableau et la date s'inscrit sous le bon format !
    donc la transformation se fait quand j'injecte mon tableau dans la feuille comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil6.Range("A" & "1" & ":D" & uv) = Application.Transpose(tab_1)

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    bien entendu que le format se remet il te faut mettre les cellules au bon format D ABORDS (numberformat)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with Feuil6.Range("A" & "1" & ":D" & uv) 
    .numberformat="dd/mm/yyyy"'ou le format que tu veux 
    .value= Application.Transpose(tab_1)
    end with
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut
    Bonsoir et merci pour cette aide,

    Hélas j'ai toujours mon inversion malgré tout !
    J'avais aussi pensé à cela, ce qui est étrange c'est que je part d'un format de date française et qu'il me le transforme en date us

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    essaie ca
    .numberformat="@"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut
    Merci je teste ce soir et te tiens au courant

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut
    Bonsoir à toi,

    Je viens d'essayer avec "@" donc j'obtiens sur les dates qui posaient problème ceci :

    43132
    43191
    43313
    43344
    43435
    14/01/2018
    17/01/2018
    18/01/2018
    23/01/2018
    28/01/2018
    43344
    43405
    43405
    13/01/2018


    la première série de chiffre est inversée soit en forma us

    01/02/2018
    01/04/2018
    01/08/2018
    01/09/2018
    01/12/2018

    donc certaines sont en fr et celles qui sont des chiffres sont en us

    A y perdre son latin !

    Une idée ?

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    dernier recour le format salvateur
    il me semble que c'est numberformat "d/m/yyyy"a appliquer toujour avant l'injection du tableau
    apres il me faudrait ton sheets pour que je fasse d'autre tests
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    Salut,

    ca fait beaucoup de choses qu'on peut simplifier...

    Ta cellule excel contient une valeur de type date, alors pourquoi vouloir faire une modification et ne pas passer directement par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ReDim Preserve tab_1(3, uv)
    tab_1(0, uv) = Feuil3.Range("AP" & i).Value
        tab_1(1, uv) = Feuil3.Range("I" & i).Value
        tab_1(2, uv) = Val(Feuil3.Range("K" & i).Value)
        tab_1(3, uv) = Feuil3.Range("B" & i).Value ' colonne du tableau avec dates
    uv = uv + 1
    Next
    43132 n'es rien d'autre que le nombre de jours passés depuis le 01/01/1901...

    La valeur intrinsèque de ta cellule doit rester la même, tu dois possiblement changer ton format d'affichage, mais la valeur ne doit pas être modifiée.

    Tu pourras d'ailleurs constater qu'à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil3.Range("B" & i).Value 'qui te donnera effectivement la date
    tu peux simplifier ton raisonnement avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil3.Range("B" & i).Value2 'qui te donnera la valeur numérique qui correspond à ta date

    le reste de ton code n'étant pas à modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil6.Range("A" & "1" & ":D" & uv) = Application.Transpose(tab_1)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut
    Bonjour à vous deux,

    Toutes mes excuses pour ce retard de réponse, j'étais en déplacement pro.
    Je regarde demain et je vous tiens au courant.

    Un grand merci à vous deux

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Par défaut
    Bonjour merci à vous deux,

    avec value2 c'est bon je n'ai plus de soucis de date, encore merci

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

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 04/05/2015, 00h29
  2. [XL-2007] Problème de tri de date dans un tableau croisée dynamique
    Par marcelisa2 dans le forum Excel
    Réponses: 4
    Dernier message: 15/04/2013, 14h45
  3. mettre une date dans une cellule avec le bon format
    Par wrm8787 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/02/2009, 18h54
  4. [DisplayTag] Problème pour trier les dates dans un tableau
    Par Pascale38 dans le forum Taglibs
    Réponses: 13
    Dernier message: 01/09/2006, 10h58
  5. Problème de date dans MONTHS_BETWEEN
    Par ghostlord79 dans le forum Oracle
    Réponses: 10
    Dernier message: 07/04/2004, 12h21

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