Extraction

Le
Brat'ac
Bonjour,

Si j'extrais les dix derniers caractères d'une cellule qui contient
"19-05-2017 au 17-07-2017"
j'obtiens "17-07-2017"

Par contre la même chose avec une cellule qui contient "10-01-2017 au
07-03-2017"
j'obtiens "03-07-2017"

Excel m'inverse systématiquement mois et jour si le mois est inférieur
au jour

Une idée ?

Merci
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DanielCo
Le #26439794
Bonjour,
Tu fais une extraction par VBA ou avec la fonction DROITE ?
Cordialement.
Daniel
Bonjour,
Si j'extrais les dix derniers caractères d'une cellule qui contient
"19-05-2017 au 17-07-2017"
j'obtiens "17-07-2017"
Par contre la même chose avec une cellule qui contient "10-01-2017 au
07-03-2017"
j'obtiens "03-07-2017"
Excel m'inverse systématiquement mois et jour si le mois est
inférieur au jour
Une idée ?
Merci
Jacquouille
Le #26439793
Salut
A mon avis, mon XL2003 n'a pas cet inconvénient.
Qu'utilises-tu comme formule?
http://www.cjoint.com/doc/17_07/GGynX1MkVGu_date-brat-ac.xls
Ne serait-ce pas le syndrome de la date US ?
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Brat'ac" a écrit dans le message de groupe de discussion :

Bonjour,
Si j'extrais les dix derniers caractères d'une cellule qui contient
"19-05-2017 au 17-07-2017"
j'obtiens "17-07-2017"
Par contre la même chose avec une cellule qui contient "10-01-2017 au
07-03-2017"
j'obtiens "03-07-2017"
Excel m'inverse systématiquement mois et jour si le mois est inférieur
au jour
Une idée ?
Merci
Brat'ac
Le #26439801
DanielCo a émis l'idée suivante :
Bonjour,
Tu fais une extraction par VBA ou avec la fonction DROITE ?
Cordialement.
Daniel


Oui par VBA
Brat'ac
Le #26439800
Jacquouille a formulé ce lundi :
Salut
A mon avis, mon XL2003 n'a pas cet inconvénient.
Qu'utilises-tu comme formule?

right en vba
DanielCo
Le #26439828
DanielCo a émis l'idée suivante :
Bonjour,
Tu fais une extraction par VBA ou avec la fonction DROITE ?
Cordialement.
Daniel

Oui par VBA

Alors, ajoute une ligne :
Range(x).Numberformmat="dd/mm/yyyy"
Daniel
News.aioe.org
Le #26439843
Bonjour,
'--------------------------------------------------------
Sub test()
Dim T As String
Dim An As Long, Mois As Long, Jour As Long
Dim X As Date
'La date "11-07-2017" à extraire.
T = "19-05-2017 au 11-07-2017"
An = CLng(Right(T, 4))
Mois = CLng(Mid(T, Len(T) - 6, 2))
Jour = CLng(Mid(T, Len(T) - 9, 2))
X = DateSerial(An, Mois, Jour)
With Range("A1")
'ou le format date que tu désires
.NumberFormat = "DD/MM/YYYY"
.Value = X
End With
End Sub
'--------------------------------------------------------
MichD
Brat'ac
Le #26439901
News.aioe.org a présenté l'énoncé suivant :
Bonjour,
'--------------------------------------------------------
Sub test()
Dim T As String
Dim An As Long, Mois As Long, Jour As Long
Dim X As Date
'La date "11-07-2017" à extraire.
T = "19-05-2017 au 11-07-2017"
An = CLng(Right(T, 4))
Mois = CLng(Mid(T, Len(T) - 6, 2))
Jour = CLng(Mid(T, Len(T) - 9, 2))
X = DateSerial(An, Mois, Jour)
With Range("A1")
'ou le format date que tu désires
.NumberFormat = "DD/MM/YYYY"
.Value = X
End With
End Sub
'--------------------------------------------------------
MichD

Bonjour,
Super.
Merci et bonne journée.
News.aioe.org
Le #26439921
Tu as aussi cette possibilité un peu plus courte...
'-----------------------------------------------------
Sub test1()
Dim T As String
'La date "11-07-2017" à extraire.
T = "19-05-2017 au 11-07-2017"
With Range("A1")
'ou le format date que tu désires
.NumberFormat = "DD/MM/YYYY"
.Value = DateValue(Right(T, 10))
End With
End Sub
'-----------------------------------------------------
Une "Note" de l'aide d'Excel sur la fonction "DateValue" :
"
Notes
Si date est une chaîne qui inclut uniquement des nombres séparés par des
séparateurs de date valides, DateValue reconnaît l'ordre pour le mois, le
jour et l'année, conformément au format de date courte que vous avez
spécifié dans votre système. DateValue reconnaît également les dates non
ambiguës qui contiennent les noms de mois sous forme longue ou abrégée. Par
exemple, outre 30/12/1991 et 30/12/91, DateValue reconnaît 30 décembre 1991
et 30 déc 1991.
Si la date ne précise pas l'année, DateValue utilise l'année en cours
correspondant à la date système de votre ordinateur.
Si l'argument de date inclut des informations horaires, DateValue ne les
renvoie pas. Mais si date inclut des informations horaires incorrectes
(comme 89:98), une erreur se produit."
MichD
News.aioe.org
Le #26439968
Tu peux aussi transformer cette procédure en fonction comme ceci :
'--------------------------------------------------------
Sub Test()
Dim T As String
'La date "11-07-2017" à extraire.
T = "19-05-2017 au 11-07-2017"
With Range("A1")
'ou le format date que tu désires
.NumberFormat = "DD/MM/YYYY"
.Value = Extrait_Date(T)
End With
End Sub
'--------------------------------------------------------
Function Extrait_Date(LaDate As String) As Date
Dim An As Long, Mois As Long, Jour As Long
Dim X As Date
An = CLng(Right(LaDate, 4))
Mois = CLng(Mid(LaDate, Len(LaDate) - 6, 2))
Jour = CLng(Mid(LaDate, Len(LaDate) - 9, 2))
X = DateSerial(An, Mois, Jour)
Extrait_Date = X
End Function
'--------------------------------------------------------
MichD
News.aioe.org
Le #26439970
Pour inclure une petite gestion de l'erreur ....
'--------------------------------------------------------
Sub Test()
Dim T As String
'La date "11-07-2017" à extraire.
T = "19-05-2017 au 19-07-2017"
If IsDate(Right(T, 10)) Then
With Range("A1")
'ou le format date que tu désires
.NumberFormat = "DD/MM/YYYY"
.Value = Extrait_Date(T)
End With
Else
MsgBox "Les 10 derniers caractères """ & Right(T, 10) & _
""" ne représentent pas une date reconnue par Excel."
End If
End Sub
'--------------------------------------------------------
Function Extrait_Date(LaDate As String) As Date
Dim An As Long, Mois As Long, Jour As Long
Dim X As Date
An = CLng(Right(LaDate, 4))
Mois = CLng(Mid(LaDate, Len(LaDate) - 6, 2))
Jour = CLng(Mid(LaDate, Len(LaDate) - 9, 2))
X = DateSerial(An, Mois, Jour)
Extrait_Date = X
End Function
'--------------------------------------------------------
MichD
Publicité
Poster une réponse
Anonyme