Bonjour,
Une cellule Excel contient le texte : 17/10/2010
Sous VBA, je souhaite le transformer en date et l'affecter à la variable maDate
Ce code ne fonctionne pasCode:
1
2
3 maCellule as ActiveCell.Value maDate.formula = "=Value(maCellule)"
Alain
Version imprimable
Bonjour,
Une cellule Excel contient le texte : 17/10/2010
Sous VBA, je souhaite le transformer en date et l'affecter à la variable maDate
Ce code ne fonctionne pasCode:
1
2
3 maCellule as ActiveCell.Value maDate.formula = "=Value(maCellule)"
Alain
Bonjour,
Peut-être en utilisant:
Code:Activecell.value= Cdate(activecell.value)
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:
Ce code ne fonctionne pas, j'ai une embrouille avec VBA ce matin :cry:Code:
1
2
3
4 set maValeur=range(maCellule) maValeur = "=Value (maValeur)" maDate.formula = maValeur
Code:taDate=range(taCellule).value
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
tu ne change rien dans ta cellule mais tu récupère sa valeur dans ta variable taDateCode:
1
2
3 Dim taDate as date taDate=range(taCellule).value msgbox taDate
Attention quand même, la valeur de la cellule devra être une date valide
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 :oops:
Alain
Code:
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
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
en changeant la format, il faudrait d'abord valider chaque cellule
Code:
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
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.
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.Code:
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
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 :ccool:
Alain