XL 2010 [Résolu] Formatage date différent

  • Initiateur de la discussion Initiateur de la discussion guy72
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

guy72

XLDnaute Impliqué
Bonjour,
Dans un fichier, dans la colonne A, j'ai la date et l'heure:
Time
2019/12/01 17:46
Etc ......




Dans le 2ème fichier, dans la colonne A
Colonne A>DateColonne B
20191201174600
Etc ......




Ma question est:
Est-il possible de transformer la date et l'heure de la colonne A du 1er fichier, et de les séparer au format de celui du 2ème fichier ??
Exemple:
2019/12/01 17:46 en
Colonne A> DateColonne B> Heure
20191201174600
Merci de votre aide



Cordialement
 
Dernière édition:
Bonsour® Guy85
impossible par formule sans modifier la valeur initiale(*) de la colonne A

mais possible en affichage
format cellule A1 :
aaaammjj

formule en B1 :
=mod(A1;1)
format de cellule :
"hhmmss"

attention !!!
(*) le contenu réel de la cellule A1 est inchangé (i.e. 2019/12/11 17:46 mais s'ecrit 11/12/2019 17:46 à la saisie selon parametres Excel)
le contenu réel de B1 est une valeur correspondante à la partie décimale de A1
 
Bonsoir le fil, guy72

guy72
Si en A1
alors en B1 (format: Standard)
=TEXTE(A1;"aaaammjj")
et en C1 (format personnalisé: hhmmss)
=TEMPS(HEURE(A1);MINUTE(A1);0)

Si besoin faire ce test sur une feuille vide (pour voir un exemple)
VB:
Sub Test()
[A1:C1] = Array("=NOW()", "=TEXT(RC[-1],""aaaammjj"")", "=TIME(HOUR(RC[-2]),MINUTE(RC[-2]),0)")
[B1].NumberFormat = "General"
[C1].NumberFormat = "hhmmss"
End Sub

EDITION: Houps pas rafraîchi la page à temps.
Bonsoir Simply, Modeste geedee
 
D'accord, il est beaucoup question de format cellule.
En fait:
1) Il faut que j'ai la date en colonne A (à partir de A2) sur 1441 lignes (20191201)
Je fais une insertion de colonne
2) Et en colonne B (à partir de B2) sur 1441 lignes (174600)
Il y a juste un problème que je ne vois pas dans la formule de Modeste

mais possible en affichage
format cellule A1 :
aaaammjj
Ça me donne 19000100
 
Dernière édition:
Re,

guy72
Et que donne ma proposition (message#4) ?

(A part que je souhaitais en cellule A2 (c'est de ma faute, je n'ai pas précisé)), car en ligne 1 j'ai du texte
En A1, ça me donne "03/12/2019 22:07"
En C1, ça me donne "220700"

Donc ce que je souhaitais (sauf erreur de ma part)
Transformer la colonne A en A et B (donc une insertion de colonne avant C)

En A2 le 1er jour du mois (par exemple) > de 20191201 jusqu'à 20191231
En B2 l'heure (par exemple) > 0 à 235900
 
Re, bonsoir job75

=>guy72
Sauf erreur de ma part, ce que tu décris dans le message#8 ne l'était pas dans le message#1
Or je me suis basé sur le message#1
Transformé 2019/12/01 17:46 en 20191201 et 174600
Ce que fait mon petit exemple, non ?
Je parle de la macro exemple.

Pour la suite de ta question, je passe le relais à mes camarades de jeux du forum.
 
Bonsoir guy72, Simply, Modeste geedee, JM,

Voyez le fichier joint et la formule en C2 =--TEXTE(B2;"aaaammjj")

A+
Comme je l'ai dis précédemment, j'ai oublier de dire, que je souhaitais avoir le résultat en A2 et B2😡
En colonne A (à partir de A2), il faudrait la date> exemple 20191201 jusquà 20191231
En colonne B ( à partir de B2) il faudrait l'heure> exemple 0 à 235900
 
Bonsour®
voici une macro à appliquer au fichier Backup-B.xlsx
attention travailler sur une copie
la macro ne fonctionnera qu'une fois (comme précisé en #3 les valeurs initiales de la colonne A sont écrasées !!)
VB:
Sub Macro1()
' ====== !!!!!! directement issue de l'enregistreur ....
    Columns("B:B").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
   
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=TEXT(RC[-1],""hhmmss"")"
    Selection.AutoFill Destination:=Range("B2:B1564")
    Range("B2:B1564").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
   
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=1*TEXT(RC[-1],""aaaammjj"")"
    Selection.AutoFill Destination:=Range("B2:B1564")
    Range("B2:B1564").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
       
    Columns("A:A").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Range("A1") = "date"
    Range("B1") = "time"

End Sub
 
Dernière édition:
Bonjour Modeste.
C'est tout à fait ça !!!
Comme j'ai une nouvelle station, le fichier des données que je récupère (Bacukp.B) n'est pas pareil à l'ancien (Next_Meteo), sinon le logiciel "GrarphWeather" ne l'accepte pas et il se plante.
Il faut de dans le fichier je récupère les données de la journée concernée - 1h.
Comme par exemple, pour le 3 décembre:

Données du 20191202 de 230000 au 20191203 225900

Car le logiciel "Xnet_Meteo" récupère les données à l'heure du soleil (1 heure avant)
Maintenant, je vais faire une simple macro pour mettre les colonnes à l'identique de l'ancien (un clone en fait).
Merci encore de ton aide
Cordialement
 
Dernière édition:
Bonjour guy72, le forum,

L'enregistreur a ses limites, voyez plutôt le fichier joint et cette macro :
VB:
Sub Convertir()
Dim tablo, i&, x$, dat As Date
With ActiveSheet.UsedRange
    If Application.CountIf(.Columns(1), "*/*") = 0 Then Exit Sub 'si la macro a déjà été exécutée
    Application.ScreenUpdating = False
    .Replace ".", "." 'remplace le point par la virgule et convertit
    .Columns(1).EntireColumn.Insert 'insère une colonne
    .Cells(1, 0) = "Date"
    tablo = .Columns(0).Resize(, 2) 'matrice, plus rapide
    For i = 2 To UBound(tablo)
        x = tablo(i, 2)
        If IsDate(x) Then 'sécurité
            dat = CDate(x)
            tablo(i, 1) = Mid(dat, 7, 4) & Mid(dat, 4, 2) & Left(dat, 2)
            tablo(i, 2) = Replace(Right(dat, 8), ":", "")
        End If
    Next
    .Columns(0).Resize(, 2) = tablo 'restitution
    .Columns(0).Resize(, 2).AutoFit 'ajustement largeurs
End With
End Sub
Elle fonctionne sur toutes versions, françaises ou anglaises.

Bonne journée.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
180
Réponses
12
Affichages
463
Réponses
4
Affichages
215
Réponses
3
Affichages
226
Retour