Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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® 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…