Convertir un nombre en date

Axel22

XLDnaute Nouveau
Bonjour je suis recherche une macro qui pourrait me convertir un nombre en date sous format dd/mm/yyyy.
Sauf que mes nombres sont sous cette forme : 19950529 et je voudrais qu'il devienne 29/05/1995
Si quelqu'un à la solution je suis preneur.
Merci d'avance ;)
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Par formule, avec nombre en "B7"
VB:
=DATE(ANNEE(GAUCHE(B7;4));MOIS(STXT(B7;5;2));JOUR(DROITE(B7;2)))
copier vers le bas
Après recopie, tu sélectionnes les dates et copier/collage spécial/valeur
puis tu supprimes la colonne des nombres.


JHA
 

job75

XLDnaute Barbatruc
Bonjour Axel22, M12, JHA, Roblochon,
j'aurai besoin d'un code VBA pour automatiser la conversion de du nombre en date
Voyez le fichier joint et ces macros :
VB:
Sub NombreVersDate()
Dim P As Range, tablo, i&, x$
With ActiveSheet
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    Set P = .UsedRange.Columns(1) '1ère colonne, à adapter
End With
tablo = P.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
Application.ScreenUpdating = False
P.NumberFormat = "dd/mm/yyyy" 'format Date
For i = 1 To UBound(tablo)
    x = tablo(i, 1)
    If x Like "########" Then
        x = Right(x, 2) & "/" & Mid(x, 5, 2) & "/" & Left(x, 4)
        If IsDate(x) Then tablo(i, 1) = CDate(x) Else P(i).NumberFormat = "General"
    Else
        P(i).NumberFormat = "General" 'format Standard
    End If
Next
P = tablo 'restitution
End Sub

Sub DateVersNombre()
Dim P As Range, tablo, i&, x
With ActiveSheet
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    Set P = .UsedRange.Columns(1) '1ère colonne, à adapter
End With
tablo = P.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo)
    x = tablo(i, 1)
    If IsDate(x) Then tablo(i, 1) = Format(x, "yyyymmdd")
Next
Application.ScreenUpdating = False
P.NumberFormat = "General" 'format Standard
P = tablo 'restitution
End Sub
A+
 

Pièces jointes

  • Dates(1).xlsm
    25.3 KB · Affichages: 9

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour je suis recherche une macro qui pourrait me convertir un nombre en date sous format dd/mm/yyyy.
Sauf que mes nombres sont sous cette forme : 19950529 et je voudrais qu'il devienne 29/05/1995
Si quelqu'un à la solution je suis preneur.
Merci d'avance ;)
les nombres sont-ils toujours dans la(es) meme(s) colonne(s) ????
dans ce cas :
selectionner la colonne
données > convertir
à l"étape 3 choisir
format AMJ
terminer

appliquer ensuite le format de date qui vous convient ...
 

job75

XLDnaute Barbatruc
BonjourAxel22, le forum,

Fichier (2) avec un seul bouton et une seule macro :
VB:
Sub Conversion()
If IsError(Application.Caller) Then Exit Sub
Dim P As Range, tablo, o As Object, i&, x
With ActiveSheet
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    Set P = .UsedRange.Columns(1) '1ère colonne, à adapter
    tablo = P.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
    Set o = .DrawingObjects(Application.Caller)
End With
Application.ScreenUpdating = False
If o.Text Like "Nombre*" Then
    o.Text = "Date vers Nombre"
    P.NumberFormat = "dd/mm/yyyy" 'format Date
    For i = 1 To UBound(tablo)
        x = tablo(i, 1)
        If x Like "########" Then
            x = Right(x, 2) & "/" & Mid(x, 5, 2) & "/" & Left(x, 4)
            If IsDate(x) Then tablo(i, 1) = CDate(x) Else P(i).NumberFormat = "General"
        Else
            P(i).NumberFormat = "General" 'format Standard
        End If
    Next
Else
    o.Text = "Nombre vers Date"
    For i = 1 To UBound(tablo)
        x = tablo(i, 1)
        If IsDate(x) Then tablo(i, 1) = Format(x, "yyyymmdd")
    Next
    P.NumberFormat = "General" 'format Standard
End If
P = tablo 'restitution
End Sub
Bonne journée.
 

Pièces jointes

  • Dates(2).xlsm
    25.3 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
315 106
Messages
2 116 268
Membres
112 706
dernier inscrit
Pierre_98