Changement de format de date

Bonjour,

Je travaille sur des données de Business Object qui sont réinjectées dans Excel. Ces données sont du texte de la forme jj/mm/aa. Mais c'est vraiment du texte.

J'ai essayé de forcer le format texte sous Excel mais rien à faire il me les met tout de même au format date et en anglais donc mm/jj/aaaa.

Je ne sais plus quoi faire. Voici le bout de code tout simple que j'ai tenté :

myxlapp.Application.worksheets(1).Columns("O:O").NumberFormat = "@"

Merci

Bonsoir,

As tu essayer avec la fonction STXT

Tu trouveras ci-dessous un exemple essayes le :

=STXT(E16;NBCAR(E16)-6;2)&"/"&STXT(E16;NBCAR(E16)-9;2)&"/"&STXT(E16;NBCAR(E16)-3;4)

Amitié

Air_2

Ce serait très bien si Excel me laissait un format 02/02/2009 au lieu de 2/2/2009. De plus, ce serait mieux d'éviter un traitement sur ce champs, c'est un peu mon dernier recours.

Il n'y a pas un moyen de bloquer l'auto-typage d'Excel lorsqu'il récupère les données ??

Bonsoir,

Si j ai bien compris ton problème, cette donnée provient soit d'une inputbox ou d'ailleurs (quid?). Mais ce qui en ressort c'est une donnée texte qu'il faut retraitée.

le code serait alors

a=[la source de] "myxlapp" ou inputbo("Question","TITRE")

myxlapp=STXT(a;NBCAR(a)-6;2)&"/"&STXT(E16;NBCAR(a)-9;2)&"/"&STXT(a;NBCAR(a)-3;4)

Personnellement, je ne vois que cette solution.

Mais je suis certain que les maîtres excel feront beaucoup mieux.

Je suis désolé de ne pas t'avoir apporté plus.

Amitié

Air_2

Bonsoir mea culpa,

La formule STXT doit être écrite en Anglais, désolé, tu trouveras ci-dessous le correctif

a= 'tu devras mettre ici la source de myxlapp
myxlapp=MID(a,LEN(a)-6,2)&"/"&MID(a,LEN(a)-9,2)&"/"&MID(a,LEN(a)-3,4)

Amitié

Air_2

Bonjour,

Merci Air_2 tu m'as donné une bonne idée. Je préfère faire un split (étant habituée à manipuler du java je reste près de ce que je connais).

J'ai juste un probleme, surement stupide mais je n'arrive pas à voir où est mon erreur.

Il me dit "Subscript out of range"... Je ne vois pas où

Sub SplitDate()
    Dim strDate, newDate As String
    Dim x As Variant
    Dim i As Long

    For i = 1 To Sheet1.Range("A65536").End(xlUp).Row 'De la ligne 1 à la dernière non vide
        If Not (Range("A" & i).Value = "") Then  'Si la cellule n'est pas vide

            strDate = Range("A" & i)

            x = Split(strDate, "/")

            newDate = x(1) & "/" & x(0) & "/" & x(2)  'J'inverse les mois/jours

            Range("A" & i) = newDate  'Je remplace
        End If
    Next i

End Sub

Bonjour Trinou,

Essaye avec le code suivant :

Sub SplitDate() 
    Dim strDate, newDate As String 
    Dim x As Variant 
    Dim i As Long 
    dim Fin as string

    fin = Sheet1.Range("A65536").End(xlUp).Row 

    For i = 1 To fin 'De la ligne 1 à la dernière non vide 
        If Not (Range("A" & i).Value = "") Then  'Si la cellule n'est pas vide 

            strDate = Range("A" & i) 

            x = Split(strDate, "/") 

            newDate = x(1) & "/" & x(0) & "/" & x(2)  'J'inverse les mois/jours 

            Range("A" & i) = newDate  'Je remplace 
        End If 
    Next i 

End Sub

Cela devrait le faire

Amitié

Air_2

Oui, c'est parfait ! Merci beaucoup !

Oups la j ai été un peu trop vite ou pas :

Je vous demande à tous de m'en excuser :

Sub SplitDate() 
    Dim strDate, newDate As String 
    Dim x As Variant 
    Dim i As string 
    dim Fin as string 

    fin = Sheet1.Range("A65536").End(xlUp).Row 

    For i = 1 To fin 'De la ligne 1 à la dernière non vide 
        If cell (i,1).Value <> "" Then  'Si la cellule n'est pas vide [i=ligne et 1=Colonne A]

            strDate = cell(i,1) 

            x = Split(strDate, "/") 

            cell(i,1) = x(1) & "/" & x(0) & "/" & x(2)  'J'inverse les mois/jours 

            End If 
    Next i 

End Sub

Cela devrait le faire .

Encore milles excuses à tous

Amitié

Air_2

Rechercher des sujets similaires à "changement format date"