VBA- probleme pour afficher l'heure au bon format

airsage

XLDnaute Junior
Bonjour,

Dans le fichier joint dans la feuille "Incident", j'ai des cellules du type "JJ/MM/AAAA HH:MM:SS"
Je viens scinder la date et l'heure dans 2 cellules differentes.
- Pas de problème pour le format date, par contre impossible de mettre l'heure au format heure mais reste au format texte.
Vous pouvez voir la macro "Module_test" que j'ai créé

Merci par avance pour votre aide.
 

Pièces jointes

  • test date.xlsx
    113.9 KB · Affichages: 61
  • test date.xlsx
    113.9 KB · Affichages: 54
  • test date.xlsx
    113.9 KB · Affichages: 53

Modeste geedee

XLDnaute Barbatruc
Re : VBA- probleme pour afficher l'heure au bon format

Bonsour®

2 possibilités :
par formule :
date Evénement=Ent(DateHeureEvt) nformat de cellule jj/mm/aaaa
H évenement = MOD(DateHeureEvt ; 1) format de celleule hh:mm:ss

par conversion de données
selectionner la colonne (après avoir ajouté une colonne à droite
menu données > Convertir
largeur fixe(date 8pos ,2espaces,heure 8pos,fin de ligne
à l'étape 3
1er colonne date choisir JMA
2eme colonne : non distribuée
3eme colonne : standard
4eme colonne : non distribuée
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    55.8 KB · Affichages: 83
  • Capture.JPG
    Capture.JPG
    55.8 KB · Affichages: 60
  • Capture.JPG
    Capture.JPG
    55.8 KB · Affichages: 64

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA- probleme pour afficher l'heure au bon format

Bonjour le fil, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)

With Sheets("Incident") 'prend en compte l'onglet "Incident"
    dl = .Cells(Application.Rows.Count, 7).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 7 (=G)
    Set pl = .Range("G2:G" & dl) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Incident"
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    cel.Offset(0, 5).NumberFormat = "dd/mm/yyyy" 'définit le format de la cellule en colonne L (à adapter à ton cas)
    cel.Offset(0, 6).NumberFormat = "hh:mm:ss" 'définit le format de la cellule en colonne M (à adapter à ton cas)
    cel.Offset(0, 5).Value = cel.Value 'copie la valeur de la cellule cel en colonne L
    cel.Offset(0, 6).Value = cel.Value 'copie la valeur de la cellule cel en colonne M
Next cel 'prochaine cellule de la boucle
End Sub
 

airsage

XLDnaute Junior
Re : VBA- probleme pour afficher l'heure au bon format

Re bonjour a tous,

Merci à vous pour le temps passé sur mon problème mais je n'ai pas été assez clair la première fois. voici ce que je veux essayer de faire.

@Modeste geedee : le principe est bon quand je fais le test à la main, pas pas quand je l'automatise par une macro. Je dois avoir un problème de format anglais/français

@Robert : ta macro fonctionne visuellement mais que tu cliques sur une cellule je vois la date et l'heure apparaitre. Je ne peux pas exploiter cette manière dans un tableau croisé dynamique.

@Paf : voici le code utilisé pour la colonne D :

Sub test()

Dim NbLignes As Integer
Dim f As Worksheet

Set f = ActiveSheet 'selectionne ta feuille active
NbLignes = f.UsedRange.Rows.Count

' Génération colonnes "Date Ouverture Incident" et "Heure Ouverture Incident"

Columns("E:E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("E1").Select
ActiveCell.FormulaR1C1 = "Date Ouverture Incident"
Range("F1").Select
ActiveCell.FormulaR1C1 = "Heure Ouverture Incident"
Range("E2").Select
ActiveCell.FormulaR1C1 = "=DATEVALUE(DAY(LEFT(RC[-1],10))&""/""&MONTH(LEFT(RC[-1],10))&""/""&YEAR(LEFT(RC[-1],10)))"
Range("F2").Select
ActiveCell.FormulaR1C1 = "=LEFT(RIGHT(RC[-2],8),8)"
Selection.AutoFill Destination:=Range("F2:F" & NbLignes), Type:=xlFillDefault
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E" & NbLignes), Type:=xlFillDefault
Columns("E:E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("F:F").Select
Selection.Copy
Columns("E:E").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("G:G").Select
Application.CutCopyMode = False
Selection.Copy
Columns("F:F").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("G:G").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("D:D").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("D:D").Select
Selection.NumberFormat = "m/d/yyyy"
Columns("E:E").Select
Selection.NumberFormat = "hh:mm:ss"
end sub

Merci par avance pour votre aide.
 

Discussions similaires

Réponses
2
Affichages
245
Réponses
2
Affichages
305

Statistiques des forums

Discussions
312 206
Messages
2 086 203
Membres
103 157
dernier inscrit
youma