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 :

formule date VBA [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut formule date VBA
    Bonjour,
    Une cellule Excel contient le texte : 17/10/2010
    Sous VBA, je souhaite le transformer en date et l'affecter à la variable maDate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    maCellule as ActiveCell.Value
    maDate.formula = "=Value(maCellule)"
    Ce code ne fonctionne pas
    Alain

  2. #2
    Membre confirmé
    Homme Profil pro
    ELECTROTECHNICIEN
    Inscrit en
    Mars 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ELECTROTECHNICIEN
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2010
    Messages : 61
    Par défaut
    Bonjour,

    Peut-être en utilisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activecell.value= Cdate(activecell.value)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Bonjour chyanon,
    merci pour ta proposition, mais ma recherche porte plutôt sur la façon d'affecter la formule à maDate
    Depuis le début de cette discussion je recherche une solution du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    set maValeur=range(maCellule)
    maValeur = "=Value (maValeur)"
    maDate.formula = maValeur
    Ce code ne fonctionne pas, j'ai une embrouille avec VBA ce matin

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taDate=range(taCellule).value

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Bonjour mercatog,
    A l'origine de ma discussion
    • la cellule contient un champ texte (17/10/2010)
    • à transformer en format date
    • et à affecter à la variable maDate

    et cela sans venir modifier une cellule de ma feuille
    Alain

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim taDate as date
    taDate=range(taCellule).value
    msgbox taDate
    tu ne change rien dans ta cellule mais tu récupère sa valeur dans ta variable taDate
    Attention quand même, la valeur de la cellule devra être une date valide

  7. #7
    Expert confirmé
    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
    Par défaut
    Bonjour,

    tu peux lire ce tutoriel voir si ça répond à certaines de tes questions :

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


    cordialement,

    Didier

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim taDate as date
    taDate=range(taCellule).value
    msgbox taDate
    tu ne change rien dans ta cellule mais tu récupère sa valeur dans ta variable taDate
    Attention quand même, la valeur de la cellule devra être une date valide
    Je ne dois pas être clair dans la formulation de mon problème

    la cellule contient un champ texte MAIS qui ressemble à une date, exemple : 17/10/2010
    Donc ta proposition ne fonctionne pas

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Citation Envoyé par Ormonth Voir le message
    Bonjour,

    tu peux lire ce tutoriel voir si ça répond à certaines de tes questions :

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


    cordialement,

    Didier
    Bonjour Didier,
    Je me suis replongé dans le tuto,
    chapitre II-E-5 Mise en application simple sur un format date non homogène après import de données
    (...) Mon Ami Benoit Timer a récupéré à son boulot un fichier Excel résultant d'un import de données en csv et il se retrouve avec un colonne de date qui lui pose le problème suivant (...) Certaines dates sont en format texte d'autres en format date ...

    le code ci-dessous semble répondre à mon problème.
    Je ne souhaite pas insérer de colonne, mais utiliser une variable. Peux-tu me dire les modifications STP
    Alain

    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
     
    Sub AppliTuto() 
    With Columns("D:D")
       .Insert Shift:=xlToRight
       '.select '' ne pas mettre dans le code surtout,
       ''à activer pour compréhension de la suite si besoin...
       ''le with column("D:D") pointe vers la colonne E apparente suite à l'insertion,
       ''mais qui représente toujours l'objet d'origine à savoir la colonne pointée via l'instruction With...
       .Offset(0, -1).FormulaR1C1 = "=IF(RC[1]<>"""",RC[1]*24/24,"""")"
       .Offset(0, -1).NumberFormat = "m/d/yyyy"
       .Offset(0, -1).Copy
       .Offset(0, -1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
       .Delete
    End With
    End Sub

  10. #10
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Oui ma proposition ne fonctionne pas par ce que ton texte n'a pas la forme d'une date.
    J'ai testé avec ton 17/10/2010 avec format texte de la cellule; je récupère très bien Une date

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Oui ma proposition ne fonctionne pas par ce que ton texte n'a pas la forme d'une date.
    J'ai testé avec ton 17/10/2010 avec format texte de la cellule; je récupère très bien Une date
    oui mais (sauf erreur) si tu applique "format nombre", tu n'auras pas de nombre, mais toujours un texte.

  12. #12
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    en changeant la format, il faudrait d'abord valider chaque cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim MADATE As Date
    With Range("A:A")
        .NumberFormat = "dd/mm/yyyy"
        .Value = .Value
    End With
    MADATE = Range("A5").Value
    Debug.Print MADATE
    End Sub

  13. #13
    Expert confirmé
    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
    Par défaut
    Bonjour,

    pas le temps de creuser, mais vois le reste du tuto ensuite, on joue comme précisé sur le pouvoir d'interprétation d'Exel qu'il faut comprendre pour l'utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub dada()
    Dim taDate As Date
    Dim taCellule As Variant
     
    taCellule = Cells(3, 3)
    taDate = taCellule
    Cells(3, 5) = taDate
    End Sub
    en 3,3 on a 17/10/2010 qu'on a écrit après avoir mis cette cellule en format texte, elle est du texte comme le confirme son alignement à gauche par défaut.

    si on exécute la macro, on obtient bien l'écriture en 5,5 d'une date si la cellule est en format standard (si elle est en format date de base, no pb). Si on la formate au préalable en texte, on aura l'équivalent de 3,3.

    Alors que si on la formate ensuite en texte, on aura en texte le numéro de série de la date...

    etc.. Donc soit on étudie les subtilités d'Excel à ce niveau soit on passe le temps de l'étude multiplié par x à tourner en rond


    cordialement,

    Didier

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Citation Envoyé par Ormonth Voir le message
    Bonjour,

    pas le temps de creuser, mais vois le reste du tuto ensuite, on joue comme précisé sur le pouvoir d'interprétation d'Exel qu'il faut comprendre pour l'utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub dada()
    Dim taDate As Date
    Dim taCellule As Variant
     
    taCellule = Cells(3, 3)
    taDate = taCellule
    Cells(3, 5) = taDate
    End Sub
    en 3,3 on a 17/10/2010 qu'on a écrit après avoir mis cette cellule en format texte, elle est du texte comme le confirme son alignement à gauche par défaut.

    si on exécute la macro, on obtient bien l'écriture en 5,5 d'une date si la cellule est en format standard (si elle est en format date de base, no pb). Si on la formate au préalable en texte, on aura l'équivalent de 3,3.

    Alors que si on la formate ensuite en texte, on aura en texte le numéro de série de la date...

    etc.. Donc soit on étudie les subtilités d'Excel à ce niveau soit on passe le temps de l'étude multiplié par x à tourner en rond


    cordialement,

    Didier
    Suite et fin
    En effet, les quelques lignes ci-dessus répondent bien au problème posé. Finalement je vais les mixer le code du chapitre II-E-5 (Mise en application simple sur un format date non homogène après import de données) de ton tutoriel.
    Merci à tous et bonne fin de WE
    Alain

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

Discussions similaires

  1. [XL-2010] Excel VBA recherche de valeur de formule dates
    Par sharivary dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/11/2014, 23h56
  2. [VBA-E] ecrire une formule en vba
    Par Huubb dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/01/2007, 14h15
  3. tirage formules en VBA avec excel
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 46
    Dernier message: 23/11/2006, 18h33
  4. Paramétrer une formule en vba
    Par arnogef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/08/2006, 11h48
  5. Copier une formule avec vba
    Par NAMORJOSE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/05/2006, 00h12

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