Dates en format Français et Us dans un fichier

Le
Al
Bonjour,

Je récupère, en téléchargement dans un fichier, des dates en formats mixtes
français et anglais tel que
30/04/2009 pour le 30 avril, et dans une cellule au dessous 05/04/2009 pour
le 4 Mai 2009.
Mes opérations sur les dates ne marchent pas (les dates devraient être dans
un sens croissant, et à cause du format anglais, je ne sais plus gérer.)

Pouvez vous m'aidez ?

D'avance merci à tous
Al
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrick BASTARD
Le #19352871
Bonjour, Al.
Les infos contenues dans les colonnes suivantes permettent-elles de
déterminer si la ligne est en anglais ou en français ?
Les dates en anglais ou en français) suivent-elles une règle permettant de
les repérer ? (Chaque 5° ligne par exemple)

Si ce n'est pas le cas, je ne vois pas comment Excel pourra deviner.
A moins qu'un test sur l'ordre croissant ???

Un fichier exemple permettrait de creuser plus avant (cjoint.com).

--
Bien ,

Patrick
patrick.bastardchezdbmail.com


"Al" news:4a0fcf15$0$16588$
Bonjour,

Je récupère, en téléchargement dans un fichier, des dates en formats
mixtes français et anglais tel que
30/04/2009 pour le 30 avril, et dans une cellule au dessous 05/04/2009
pour le 4 Mai 2009.
Mes opérations sur les dates ne marchent pas (les dates devraient être
dans un sens croissant, et à cause du format anglais, je ne sais plus
gérer....)

Pouvez vous m'aidez ?

D'avance merci à tous
Al





MichDenis
Le #19353071
Bonjour Al,

Essaie cette macro pour la colonne contenant tes dates.

Adapte dans la macro, le nom de la feuille et la plage de
cellules concernées.
(procédure à tester ! )
'----------------------------------------
Sub test()
Dim Rg As Range, T()
Dim X, A As Long, B As Integer
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = Rg.Value
End With
For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
T = Split(X(A, B), "-")
If Val(T(0)) <= 12 Then
tt = T(1) & "-" & T(0) & "-" & T(2)
X(A, B) = T(1) & "-" & T(0) & "-" & T(2)
End If
Next
Next
Rg.Clear
Rg.NumberFormat = "DD/MM/YY"
Rg.Value = X
End Sub
'----------------------------------------



"Al" 4a0fcf15$0$16588$
Bonjour,

Je récupère, en téléchargement dans un fichier, des dates en formats mixtes
français et anglais tel que
30/04/2009 pour le 30 avril, et dans une cellule au dessous 05/04/2009 pour
le 4 Mai 2009.
Mes opérations sur les dates ne marchent pas (les dates devraient être dans
un sens croissant, et à cause du format anglais, je ne sais plus gérer....)

Pouvez vous m'aidez ?

D'avance merci à tous
Al
MichDenis
Le #19353211
Ceci est la même procédure, mais elle gère automatiquement
le séparateur des éléments d'une date défini dans le panneau
de configuration :

NB- La fonction Split() requiert Excel 2000 ou plus récent.
'--------------------------------------
Sub test()
Dim Rg As Range, T, Sep As String
Dim X, A As Long, B As Integer

Sep = Application.International(xlDateSeparator)
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = Rg.Value
End With
For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
T = Split(X(A, B), Sep)
If Val(T(0)) <= 12 Then
X(A, B) = T(1) & Sep & T(0) & Sep & T(2)
End If
Next
Next
Rg.Clear
Rg.NumberFormat = "DD/MM/YY"
Rg.Value = X
End Sub
'--------------------------------------



"MichDenis" #
Bonjour Al,

Essaie cette macro pour la colonne contenant tes dates.

Adapte dans la macro, le nom de la feuille et la plage de
cellules concernées.
(procédure à tester ! )
'----------------------------------------
Sub test()
Dim Rg As Range, T()
Dim X, A As Long, B As Integer
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = Rg.Value
End With
For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
T = Split(X(A, B), "-")
If Val(T(0)) <= 12 Then
tt = T(1) & "-" & T(0) & "-" & T(2)
X(A, B) = T(1) & "-" & T(0) & "-" & T(2)
End If
Next
Next
Rg.Clear
Rg.NumberFormat = "DD/MM/YY"
Rg.Value = X
End Sub
'----------------------------------------



"Al" 4a0fcf15$0$16588$
Bonjour,

Je récupère, en téléchargement dans un fichier, des dates en formats mixtes
français et anglais tel que
30/04/2009 pour le 30 avril, et dans une cellule au dessous 05/04/2009 pour
le 4 Mai 2009.
Mes opérations sur les dates ne marchent pas (les dates devraient être dans
un sens croissant, et à cause du format anglais, je ne sais plus gérer....)

Pouvez vous m'aidez ?

D'avance merci à tous
Al
Al
Le #19355161
Merci, super,
Ca marche.....

"MichDenis"
Ceci est la même procédure, mais elle gère automatiquement
le séparateur des éléments d'une date défini dans le panneau
de configuration :

NB- La fonction Split() requiert Excel 2000 ou plus récent.
'--------------------------------------
Sub test()
Dim Rg As Range, T, Sep As String
Dim X, A As Long, B As Integer

Sep = Application.International(xlDateSeparator)
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = Rg.Value
End With
For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
T = Split(X(A, B), Sep)
If Val(T(0)) <= 12 Then
X(A, B) = T(1) & Sep & T(0) & Sep & T(2)
End If
Next
Next
Rg.Clear
Rg.NumberFormat = "DD/MM/YY"
Rg.Value = X
End Sub
'--------------------------------------



"MichDenis" discussion :
#
Bonjour Al,

Essaie cette macro pour la colonne contenant tes dates.

Adapte dans la macro, le nom de la feuille et la plage de
cellules concernées.
(procédure à tester ! )
'----------------------------------------
Sub test()
Dim Rg As Range, T()
Dim X, A As Long, B As Integer
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = Rg.Value
End With
For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
T = Split(X(A, B), "-")
If Val(T(0)) <= 12 Then
tt = T(1) & "-" & T(0) & "-" & T(2)
X(A, B) = T(1) & "-" & T(0) & "-" & T(2)
End If
Next
Next
Rg.Clear
Rg.NumberFormat = "DD/MM/YY"
Rg.Value = X
End Sub
'----------------------------------------



"Al" 4a0fcf15$0$16588$
Bonjour,

Je récupère, en téléchargement dans un fichier, des dates en formats
mixtes
français et anglais tel que
30/04/2009 pour le 30 avril, et dans une cellule au dessous 05/04/2009
pour
le 4 Mai 2009.
Mes opérations sur les dates ne marchent pas (les dates devraient être
dans
un sens croissant, et à cause du format anglais, je ne sais plus
gérer....)

Pouvez vous m'aidez ?

D'avance merci à tous
Al



Al
Le #19380911
Bonjour,

Dans un fichier test, ta macro marche, mais quand je l'inclue dans un autre
ficher
UBound(X,1) me donne une erreur "Tableau attendu"

Peux tu m'aider ?

D'avance Merci
Al


"Al" 4a105ade$0$27592$
Merci, super,
Ca marche.....

"MichDenis"
Ceci est la même procédure, mais elle gère automatiquement
le séparateur des éléments d'une date défini dans le panneau
de configuration :

NB- La fonction Split() requiert Excel 2000 ou plus récent.
'--------------------------------------
Sub test()
Dim Rg As Range, T, Sep As String
Dim X, A As Long, B As Integer

Sep = Application.International(xlDateSeparator)
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = Rg.Value
End With
For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
T = Split(X(A, B), Sep)
If Val(T(0)) <= 12 Then
X(A, B) = T(1) & Sep & T(0) & Sep & T(2)
End If
Next
Next
Rg.Clear
Rg.NumberFormat = "DD/MM/YY"
Rg.Value = X
End Sub
'--------------------------------------



"MichDenis" discussion :
#
Bonjour Al,

Essaie cette macro pour la colonne contenant tes dates.

Adapte dans la macro, le nom de la feuille et la plage de
cellules concernées.
(procédure à tester ! )
'----------------------------------------
Sub test()
Dim Rg As Range, T()
Dim X, A As Long, B As Integer
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = Rg.Value
End With
For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
T = Split(X(A, B), "-")
If Val(T(0)) <= 12 Then
tt = T(1) & "-" & T(0) & "-" & T(2)
X(A, B) = T(1) & "-" & T(0) & "-" & T(2)
End If
Next
Next
Rg.Clear
Rg.NumberFormat = "DD/MM/YY"
Rg.Value = X
End Sub
'----------------------------------------



"Al" 4a0fcf15$0$16588$
Bonjour,

Je récupère, en téléchargement dans un fichier, des dates en formats
mixtes
français et anglais tel que
30/04/2009 pour le 30 avril, et dans une cellule au dessous 05/04/2009
pour
le 4 Mai 2009.
Mes opérations sur les dates ne marchent pas (les dates devraient être
dans
un sens croissant, et à cause du format anglais, je ne sais plus
gérer....)

Pouvez vous m'aidez ?

D'avance merci à tous
Al







MichDenis
Le #19382121
| UBound(X,1) me donne une erreur "Tableau attendu"

Quand tu as défini ta plage de cellules par ce code :

Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = Rg.Value

Si la variable "Range" Rg ne représente qu'une cellule alors
X ne sera pas une variable de type tableau (colonne par y lignes)
mais représentera simplement la valeur d'une cellule

En conséquence, on ne peut pas ces lignes de code car elle
suppose que X est un tableau à 2 dimensions.

For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
Jacquouille
Le #19382511
Salut Denis
Perso, j'ai un grand tableau de 7500 lignes X 26 col.(voir mon msg "titre de
colonne"
La macro bute sur cette ligne:
T = Split(X(A, B), "/") ... et mes séparateurs sont bien de "/".
-------------------
Sub AAtest()
Dim Rg As Range, T()
Dim X, A As Long, B As Integer
With Worksheets("CopieBase")
Set Rg = .Range("H2:H" & .Range("H65536").End(xlUp).Row)
X = Rg.Value
End With
For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
T = Split(X(A, B), "/")
If Val(T(0)) <= 12 Then
tt = T(1) & "/" & T(0) & "/" & T(2)
X(A, B) = T(1) & "/" & T(0) & "/" & T(2)
End If
Next
Next
Rg.Clear
Rg.NumberFormat = "DD/MM/YY"
Rg.Value = X
End Sub
------------------

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"MichDenis"
| UBound(X,1) me donne une erreur "Tableau attendu"

Quand tu as défini ta plage de cellules par ce code :

Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = Rg.Value

Si la variable "Range" Rg ne représente qu'une cellule alors
X ne sera pas une variable de type tableau (colonne par y lignes)
mais représentera simplement la valeur d'une cellule

En conséquence, on ne peut pas ces lignes de code car elle
suppose que X est un tableau à 2 dimensions.

For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)









MichDenis
Le #19382811
Si tu dois retenir une procédure, c'est celle-ci :

Si cela génère une erreur, tu me dis qu'elle est le
message d'erreur.

Cette macro utilise comme séparateur de date celui
définit dans le panneau de configuration de Windows.

Si tu as des cellules au format texte, il se peut que le
contenu de la cellule utilise un autre séparateur de date
que celui définit dans Windows. Alors, il faut adapter
la valeur de la variable "sep"

'---------------------------------------------------------
Sub test()
Dim Rg As Range, T, Sep As String
Dim X, A As Long, B As Integer

Sep = Application.International(xlDateSeparator)
With Worksheets("CopieBase")
Set Rg = .Range("H2:H" & .Range("H65536").End(xlUp).Row)
X = Rg.Value
End With
For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
T = Split(X(A, B), Sep)
If Val(T(0)) <= 12 Then
X(A, B) = T(1) & Sep & T(0) & Sep & T(2)
End If
Next
Next
Rg.Clear
Rg.NumberFormat = "DD/MM/YY"
Rg.Value = X
End Sub
'--------------------------------------
Jacquouille
Le #19383501
Bonsoir Denis
Je t'ai envoyé le fichier litigieux en BAL perso.
Jacques.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"MichDenis" %
Si tu dois retenir une procédure, c'est celle-ci :

Si cela génère une erreur, tu me dis qu'elle est le
message d'erreur.

Cette macro utilise comme séparateur de date celui
définit dans le panneau de configuration de Windows.

Si tu as des cellules au format texte, il se peut que le
contenu de la cellule utilise un autre séparateur de date
que celui définit dans Windows. Alors, il faut adapter
la valeur de la variable "sep"

'---------------------------------------------------------
Sub test()
Dim Rg As Range, T, Sep As String
Dim X, A As Long, B As Integer

Sep = Application.International(xlDateSeparator)
With Worksheets("CopieBase")
Set Rg = .Range("H2:H" & .Range("H65536").End(xlUp).Row)
X = Rg.Value
End With
For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
T = Split(X(A, B), Sep)
If Val(T(0)) <= 12 Then
X(A, B) = T(1) & Sep & T(0) & Sep & T(2)
End If
Next
Next
Rg.Clear
Rg.NumberFormat = "DD/MM/YY"
Rg.Value = X
End Sub
'--------------------------------------





MichDenis
Le #19383631
voici la procédure modifiée :

Sub test()
Dim Rg As Range, T, Sep As String
Dim X, A As Long, B As Integer
Dim C As Range

Sep = Application.International(xlDateSeparator)
With Worksheets("feuil1")
Set Rg = .Range("A2:B" & .Range("B65536").End(xlUp).Row)
For Each C In Rg.Columns
With C
.Replace "/", "-"
X = C
End With

For A = 1 To UBound(X, 1)
For B = 1 To UBound(X, 2)
T = Split(X(A, B), Sep)
If Val(T(0)) <= 12 Then
X(A, B) = CDate(T(1) & Sep & T(0) & Sep & T(2))
Else
X(A, B) = CDate(X(A, B))
End If
Next
Next
C.Clear
C.NumberFormat = "DD/MM/YY"
C.Value = X
Next
End With
End Sub
Publicité
Poster une réponse
Anonyme