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 :

Format de date


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Par défaut Format de date
    Bonjour,

    Voilà, je sèche sur un problème qui consiste à modifier un format de date pour permettre une insertion dans une BDD.

    Je récupère sous XL une colonne avec des dates au format JJ/MM/AAAA.
    Le but est d'arriver à un format jjmmaaaa dans une autre colonne pour me permettre ensuite de créer des phrases SQL et de faire des updates dans la base.

    Je n'arrive à pas forcer le changement du format de la cellule sans perdre son contenu. Si je choisis texte, je me retrouve avec une valeur du genre 38051...
    J'ai aussi essayé de passer en utilisant les formules =jour(), =mois()... mais idem, je n'arrive pas à extraire la seule valeur...

    Une idée, voire mieux, un script tout prêt ?

    Merci

    Nico

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Essaye cette fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =JOUR(A1)&MOIS(A1)&ANNEE(A1)
    La date étant en A1

  3. #3
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Bonjour,

    Peut être

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 45
    Par défaut
    Je viens de pondre ce code, pas du tout optimisé, mais qui a le mérite de fonctionner...

    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
     
    Sub conv_jjmmaaaa_to_jjmmaaaa()
     
    'conversion d'un format JJ/MM/AAAA à un format JJMMAAAA
     
    'Se placer sur la première cellule de la colonne des dates JJ/MM/AAAA
    'Prévoir 6 colonnes de vide à droite
     
    'conversion:
    While ActiveCell <> ""
        ActiveCell.Offset(0, 1).FormulaR1C1 = "=DAY(RC[-1])"
        ActiveCell.Offset(0, 2).FormulaR1C1 = "=MONTH(RC[-2])"
        ActiveCell.Offset(0, 3).FormulaR1C1 = "=YEAR(RC[-3])"
     
        ActiveCell.Offset(0, 1).Select
        cell1 = ActiveCell.Address
        cell2 = ActiveCell.Offset(0, 2).Address
        Range(cell1, cell2).Select
        Selection.Copy
        ActiveCell.Offset(0, 3).Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
     
        'ajout d'un zéro si le jour est inférieur à 10
        ActiveCell.Offset(0, -3).Select
        Selection.NumberFormat = "General"
        ActiveCell.FormulaR1C1 = "=IF(RC[3]<10,""0""&RC[3],RC[3])"
     
        'ajout d'un zéro si le mois est inférieur à 10
        ActiveCell.Offset(0, 1).Select
        Selection.NumberFormat = "General"
        ActiveCell.FormulaR1C1 = "=IF(RC[3]<10,""0""&RC[3],RC[3])"
     
        'refaisons un copier-coller
        Range(cell1, cell2).Select
        Selection.Copy
        ActiveCell.Offset(0, 3).Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
     
        'concaténons joyeusement tout ça !
        ActiveCell.Offset(0, -3).Select
        ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[3],RC[4],RC[5])"
        ActiveCell.Offset(1, -1).Select
    Wend
     
    End Sub
    VBA Powaaa !



    EDIT :

    =JOUR(A1)&MOIS(A1)&ANNEE(A1

    Vachement + court et aussi efficace...
    Quand je disais que ce n'était pas optimisé...

    seul souci, pour les valeurs des jours et mois inférieur à 10, j'ai un format du genre jmaaaa et non jjmmaaaa ; et mon sql ne passe pas

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    sous VBA,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    format(la_date, "ddmmyyyy")
    marche sans histoire chez moi ...

Discussions similaires

  1. Format de date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/06/2004, 17h32
  2. Détecter le format de date au démarrage
    Par stigma dans le forum Access
    Réponses: 2
    Dernier message: 20/02/2004, 11h04
  3. Réponses: 11
    Dernier message: 02/09/2003, 14h20
  4. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19
  5. Réponses: 3
    Dernier message: 06/05/2002, 18h24

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