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 :

Transformation d'une donnée de type date en format standard [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Points : 106
    Points
    106
    Par défaut Transformation d'une donnée de type date en format standard
    Bonsoir,

    J'ai conçu un programme sous excel 2007 en vba qui à un moment:
    1 - Récupère dans une cellule A de type date, la date au format jj/mm/aaaa et la met dans une variable de type string.
    2- copie la date dans la cellule b de type standard de la façon suivante : valeur de la cellule b " - " valeur de la cellule A

    Il peut ainsi y avoir avoir dans la cellule b plusieurs dates à ce format normalement: jj/mm/aaaa - jj/mm/aaaa - jj/mm/aaaa

    Malheureusement pour une raison que je comprends pas, la première date et donc le premier copie coller se colle comme une date au format anglais soit mm/jj/aaaa

    et bien sûr, avec une facheuse conséquence en lecture

    Avez vous une explication et une correction possible ?

    Merci pour votre aide

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Montre nous ton code ..

  3. #3
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Points : 106
    Points
    106
    Par défaut
    bonsoir

    ci desous le code :
    la variable qui sert à déplacer est datr.
    D

    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
    numero = ""
    numero = ActiveCell.Row
    'verifie si affaire pas close
    If Range("i" & numero).Value = "" Then
    Else
        MsgBox ("Cet écart est clos, vous ne pouvez faire de relance"), vbCritical, "RELANCE"
        Sheets("PARAMETRES").Activate
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        Sheets("LISTE").Activate
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        Exit Sub
    End If
     
    osr = ""
    prestataire = ""
    typ = ""
    description = ""
    datr = ""
    descriptionr = ""
    dat1mail = ""
     
     
    osr = Cells(numero, 1).Value
    prestataire = Cells(numero, 2).Value
    typ = Cells(numero, 3).Value
    description = Cells(numero, 4).Value
    dat = Cells(numero, 5).Value
    dat1mail = Cells(numero, 6).Value
    datr = Cells(numero, 7).Value
    descriptionr = Cells(numero, 8).Value
    If Cells(numero, 6).Value = "" Then echange = "sans email" Else echange = "avec email"
     
    Load UserForm2
    UserForm2.hosr.Value = osr
    UserForm2.hprestataire.Value = prestataire
    UserForm2.htype.Value = typ
    UserForm2.hdate.Value = dat
    UserForm2.hdescription.Value = description
    If dat1mail = "" Then UserForm2.datemail1.Value = "PAS DE MAIL ENVOYE" Else UserForm2.datemail1.Value = dat1mail
    UserForm2.hdrelance.Value = datr
    UserForm2.hmessages.Value = descriptionr
    If typ = "REFUS ETUDE" Then UserForm2.echang.Visible = False
    If echange = "avec email" Then UserForm2.echang.Visible = False
    UserForm2.Show
     
     
    End Sub
     
    Sub suite_relance()
     
    message = UserForm2.message.Value
     
    If typ = "REFUS ETUDE" Then
    Else
        If echange = "sans email" Then
            If UserForm2.echangoui Then
                echange = "echange avec email"
            Else
                'test si donnée rempli
                If UserForm2.echangnon Then
                Else
                    MsgBox "Vous n'avez pas répondu à la question concernant l'échange", vbCritical, "ALERTE RELANCE"
                Exit Sub
                End If
            End If
        End If
    End If
     
     
    'test si donnée rempli
    If message = "" Then
    MsgBox "Vous n'avez pas saisi de COMMENTAIRES", vbCritical, "ALERTE RELANCE"
    Exit Sub
    End If
     
    Unload UserForm2
     
    textechange = ""
     
    'remplir la feuille LISTE
     
    Sheets("LISTE").Activate
    If echange = "echange avec email" Then Cells(numero, 6).Value = Range("k2").Value
    If datr = "" Then Cells(numero, 7).Value = Date Else Cells(numero, 7).Value = datr & " - " & Date
    If descriptionr = "" Then Cells(numero, 8).Value = message Else Cells(numero, 8).Value = descriptionr & " - " & message
    Cells(numero, 10).Value = Date
    Cells(numero, 11).Value = Cells(numero, 11).Value + 1
    petite erreur de manip, alors explications : Dans la premire sub la variable datr récupère l'ensemble des dates et dans le second elle modifie à nouveau la cellule

  4. #4
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Bonjour,

    Malheureusement pour une raison que je comprends pas, la première date et donc le premier copie coller se colle comme une date au format anglais soit mm/jj/aaaa
    vois ceci :

    Comprendre et gérer les dates sous Excel et en VBA


    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  5. #5
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format(dt, "dd/mm/aaaa")
    plutôt que directement la date dt au moment où tu l'ajoute dans la cellule.

    En regardant ton code c'est ligne 84 et avec datr ou Date à la place de dt dans ce que je te disais
    « Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

  6. #6
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Points : 106
    Points
    106
    Par défaut
    Bonjour,

    Merci pour ton aide Zebreloup,

    en utilisant ta solution j'ai réussi à bloquer le format comme je le souhaitais.
    Pour explication : j'ai rajouter une variable "dates" de type string
    J'ai défini son format comme le propose Zebreloup et je me ser de cette dernière pour écrire dans les tableaux

    merci pour ton aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/11/2008, 21h10
  2. Réponses: 8
    Dernier message: 02/09/2008, 14h28
  3. comment declarer une variable de type date ?
    Par MAJIK_ENIS dans le forum JDBC
    Réponses: 1
    Dernier message: 26/05/2006, 00h02
  4. [MySQL] Tester une égalité avec une donnée de type PASSWORD
    Par tiyolx dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/03/2006, 16h06
  5. Réponses: 14
    Dernier message: 28/10/2005, 18h41

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