Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Extraction

11 réponses
Avatar
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

10 réponses

1 2
Avatar
DanielCo
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
Avatar
Jacquouille
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
Avatar
Brat'ac
DanielCo a émis l'idée suivante :
Bonjour,
Tu fais une extraction par VBA ou avec la fonction DROITE ?
Cordialement.
Daniel

Oui par VBA
Avatar
Brat'ac
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
Avatar
DanielCo
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
Avatar
News.aioe.org
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
Avatar
Brat'ac
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.
Avatar
News.aioe.org
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
Avatar
News.aioe.org
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
Avatar
News.aioe.org
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
1 2