Comment séparer colonne AAAAMMJJHHMMSS en 2 colonnes au format date et heure

Thierry.dev

XLDnaute Nouveau
Bonjour aux fans d'excel,
Quelqu’un pourrait-il m'aider.
J'ai un appareil de pointage horaire qui me génère un fichier log tel que joint à cette discussion.
La première colonne concerne la date et l'heure qui forment 1 bloc au format AAAAMMJJHHMMSS.
A partir de ce fichier log brut, je désire créer un fichier excel qui sépare la date et heure en 2 colonnes AAAAMMJJ en colonne 1 et HHMMSS en colonne 2.
Bien entendu les autre colonnes du fichier restent telle quelle.

Un grand merci d'avance.
Thierry.
 

Pièces jointes

  • morpho man.zip
    973 bytes · Affichages: 63

Dranreb

XLDnaute Barbatruc
Bonjour.
Bien entendu les autre colonnes du fichier restent telle quelle.
VB:
Option Explicit

Sub import()
Dim ChNomF, TSpl$(), ZStr$, L&, C&, TRés(1 To 1000, 1 To 6)
ChNomF = Application.GetOpenFilename("Text Files (*.*), *.*", , "Sélectionner un fichier")
If VarType(ChNomF) <> vbString Then Exit Sub
Open ChNomF For Input As #1
Do While Not EOF(1)
  Line Input #1, ZStr
  TSpl = Split(ZStr, ",")
  L = L + 1
  TRés(L, 1) = Left$(TSpl(0), 8)
  TRés(L, 2) = Right$(TSpl(0), 6)
  For C = 3 To 6: TRés(L, C) = TSpl(C - 1): Next C
  Loop
Close #1
Feuil1.[A1:F1000].Value = TRés
End Sub
 

Thierry.dev

XLDnaute Nouveau
Bonjour,

A tester
Bonjour M12,
Super géniel,...Un grand merci.
Effectivement cela fonctionne, mais les autres colonnes du fichier source n'apparaissent pas dans l'excel.
Autre choses:
Comment comment peut-on mettre la date et l'heure dans un format plus agréable à l’œil. J'ai essayé de changer le format des 2 colonnes Date et Heure moi même mais je n'arrive pas.
Dans votre fichier, est-il possible de mettre ou pré-enregistrer des titres pour les colonnes de la sorte:
Date/Heure/Vide (ce sont les deux , , )/Matricule (format avec tous les chiffres tel que généré inclus les 0)/Prénom/Nom/Lieu/Pointage
Comment déplacer votre bouton "importer" de façon à le mettre à un endroit plus approprié sans qu'il gène le page excel et que votre outil excel puisse être pratique à utiliser tous les jours ?

Je vous souhaite une agréable journée.

Thierry.
 

Thierry.dev

XLDnaute Nouveau
Bonjour.

VB:
Option Explicit

Sub import()
Dim ChNomF, TSpl$(), ZStr$, L&, C&, TRés(1 To 1000, 1 To 6)
ChNomF = Application.GetOpenFilename("Text Files (*.*), *.*", , "Sélectionner un fichier")
If VarType(ChNomF) <> vbString Then Exit Sub
Open ChNomF For Input As #1
Do While Not EOF(1)
  Line Input #1, ZStr
  TSpl = Split(ZStr, ",")
  L = L + 1
  TRés(L, 1) = Left$(TSpl(0), 8)
  TRés(L, 2) = Right$(TSpl(0), 6)
  For C = 3 To 6: TRés(L, C) = TSpl(C - 1): Next C
  Loop
Close #1
Feuil1.[A1:F1000].Value = TRés
End Sub

A vous également Danreb, un grand merci mais je suis tellement nul que je ne sais pas comment exploiter votre code ;)
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Comme celui de M12: Clic droit sur l'onglet, Visualiser le code.
Pourquoi n'avez vous pas dit tout de suite que vous vouliez récupérer la date et l'heure ?
Essayez en mettant:
VB:
  TRés(L, 1) = DateSerial(Left$(TSpl(0), 4), Mid$(TSpl(0), 5, 2), Mid$(TSpl(0), 7, 2))
  TRés(L, 2) = TimeSerial(Mid$(TSpl(0), 9, 2), Mid$(TSpl(0), 11, 2), Mid$(TSpl(0), 13, 2))
Là vous pourrez mettre des formats de cellule de date et heure.
Pour laisser une ligne vide devant, terminez par :
VB:
Me.[A2:F1001].Value = TRés
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour aux fans d'excel,
Quelqu’un pourrait-il m'aider.
J'ai un appareil de pointage horaire qui me génère un fichier log tel que joint à cette discussion.
La première colonne concerne la date et l'heure qui forment 1 bloc au format AAAAMMJJHHMMSS.
A partir de ce fichier log brut, je désire créer un fichier excel qui sépare la date et heure en 2 colonnes AAAAMMJJ en colonne 1 et HHMMSS en colonne 2.
Bien entendu les autre colonnes du fichier restent telle quelle.

Un grand merci d'avance.
Thierry.
brut de fonderie en utilisant l'enregistreur de macro à partir de l'mport :
VB:
Sub Macro1()
'
' Macro1 Macro
'

'
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 5), Array(8, 2), Array(14, 1)), TrailingMinusNumbers:= _
        True
    Columns("C:C").Select
    Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 2), Array(4, 1), Array(5, 1), Array(6, 1)), _
        TrailingMinusNumbers:=True
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "=TEXT(RC[-1],""00\:00\:00"")"
    Selection.AutoFill Destination:=Range("C1:C110")
    Range("C1:C110").Select
End Sub
 

Thierry.dev

XLDnaute Nouveau
Bonjour
Bonjour Dranreb

A tester
Bonjour M12,
Je vous remercie pour votre projet à tester "import.xlsm" envoyé hier, mais après importation est généré un fichier excel mutilé dont je vous envoie une copie.
Après avoir cliqué sur le bouton import, il y a également une fenêtre "erreur 400 " qui apparaît.

Pour être un peut plus précis dans ma requête, je joint un screenshot du type de fichier final que j'aimerai avoir.

Bien cordialement et bonne journée.

Thierry.
 

Pièces jointes

  • ScreenHunter_514 May. 24 06.44.jpg
    ScreenHunter_514 May. 24 06.44.jpg
    121.9 KB · Affichages: 50
  • ScreenHunter_514 May. 24 06.34.jpg
    ScreenHunter_514 May. 24 06.34.jpg
    73.8 KB · Affichages: 56
  • ScreenHunter_514 May. 24 06.50.jpg
    ScreenHunter_514 May. 24 06.50.jpg
    68.9 KB · Affichages: 51

Thierry.dev

XLDnaute Nouveau
Bonjour.
Comme celui de M12: Clic droit sur l'onglet, Visualiser le code.
Pourquoi n'avez vous pas dit tout de suite que vous vouliez récupérer la date et l'heure ?
Essayez en mettant:
VB:
  TRés(L, 1) = DateSerial(Left$(TSpl(0), 4), Mid$(TSpl(0), 5, 2), Mid$(TSpl(0), 7, 2))
  TRés(L, 2) = TimeSerial(Mid$(TSpl(0), 9, 2), Mid$(TSpl(0), 11, 2), Mid$(TSpl(0), 13, 2))
Là vous pourrez mettre des formats de cellule de date et heure.
Pour laisser une ligne vide devant, terminez par :
VB:
Me.[A2:F1001].Value = TRés
Bonjour Dranreb,

Je vous remercie pour votre code VBA.
Malheureusement je ne sais pas le tester vu que je ne maîtrise pas le sujet et ne sais pas comment le mettre dans un classeur xlsx et créer les boutons ....

J'aime beaucoup excel, mais ne maîtrise pas toute sa puissance.
J'aimerai bien recevoir de la part d'un spécialiste comme il y en a sur ce forum, une solution stable, qui peut-être utilisée sur plusieurs version d'excel et prête à l'emploi ;)

Je vous souhaite une agréable journée.

Thierry
 

Pièces jointes

  • ScreenHunter_514 May. 24 06.50.jpg
    ScreenHunter_514 May. 24 06.50.jpg
    68.9 KB · Affichages: 43

Thierry.dev

XLDnaute Nouveau
Bonjour

De mon côté voilà le résultat
Re bonjour M12,....waow...super,...c'est exactement ce que j'aimerai avoir
D'après vous, pourquoi chez moi j'ai l'erreur 400 après avoir cliqué sur le bouton "importer" et ensuite un fichier excel mutilé ?
J’utilise excel 2010.
Votre VBA est-il compatible avec toutes les version d'excel ?

En tout cas votre résultat chez vous est super

Thierry
 

M12

XLDnaute Accro
Bon,

Alors tu ouvres mon classeur
tu fait ALT F11 pour aller au développeur
tu te places sur la feuil1 (par double clic)
et tu appuis sur la touche F8 . La macro va se dérouler ligne par ligne
et dis moi où cela coince
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    14.5 KB · Affichages: 47

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa