Mille mercis olivthill, j'ai abouti grace à ton aide !!!
alors pour résumer,
-bien garder en tête qu'il y a un format externe visible et interne invisible,
-il faut surprimer une cellule, lui attribuer son format et réecrire ensuite son contenu
-les data que je devais traiter ne sont pas au format excel mais au format TXT, donc en imposant le format, si la syntaxe ne correspond à rien de reconnaissable par excel , le logiciel ne fera rien
-pour ma part il a fallu que je force les cellules en format TXT, puis traiter les data comme du texte pour une remise en forme, puis insérer le format voulu après une sauvegarde et suppresion de cellule pour imposer le format.
ça donne ça :
'met en forme la colonne des dates au format txt pour le traitement qui suit
Columns("A:A" ).Select
Selection.NumberFormat = "@"
'permute le mois et la date
Set celluleCourante = Worksheets("Feuil1" ).Range("A1" )
compteur = 3
Do While compteur <> 0
Set celluleSuivante = celluleCourante.Offset(1, 0)
If IsEmpty(celluleCourante) Then
compteur = compteur - 1
End If
If Not IsEmpty(celluleCourante) Then
compteur = 3
chaine = celluleCourante.Value
chaine = Mid(chaine, 5, 3) & Mid(chaine, 2, 3) & Right(chaine, 2)
celluleCourante.Value = chaine
End If
Set celluleCourante = celluleSuivante
Loop
'met en forme le texte pour quil devienne une date par loutil convertir
Columns("A:A" ).Select
Selection.TextToColumns Destination:=Range("A1" ), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4)
'met en forme les gains/pertes en txt et enlève la dernière parenthèse si elle existe
Columns("C:C" ).Select
Selection.NumberFormat = "@"
Selection.TextToColumns Destination:=Range("C1" ), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:=" )", FieldInfo:=Array(Array(1, 1), Array(2, 9))
'enlève le $ ou remplace le ($ en -Set celluleCourante = Worksheets("Feuil1" ).Range("C1" )
compteur = 3
Do While compteur <> 0
Set celluleSuivante = celluleCourante.Offset(1, 0)
If IsEmpty(celluleCourante) Then
compteur = compteur - 1
End If
If Not IsEmpty(celluleCourante) Then
compteur = 3
chaine = celluleCourante.Value
If Mid(chaine, 2, 1) = "$" Then chaine = Right(chaine, Len(chaine) - 2)
If Mid(chaine, 2, 2) = "($" Then chaine = "-" & Right(chaine, Len(chaine) - 3)
celluleCourante.Value = chaine
End If
Set celluleCourante = celluleSuivante
Loop
'met la colonne gain/perte au format 0.00
Set celluleCourante = Worksheets("Feuil1" ).Range("C1" )
compteur = 3
Do While compteur <> 0
Set celluleSuivante = celluleCourante.Offset(1, 0)
If IsEmpty(celluleCourante) Then
compteur = compteur - 1
End If
If Not IsEmpty(celluleCourante) Then
compteur = 3
chaine = celluleCourante.Value
celluleCourante.Clear
celluleCourante.NumberFormat = "0.00"
celluleCourante.Value = chaine
End If
Set celluleCourante = celluleSuivante
Loop
'tri les 3 colonnes en fonction de la date et lheure
Columns("A:C" ).Select
Selection.Sort Key1:=Range("A2" ), Order1:=xlAscending, Key2:=Range("B2" ) _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
Encore merci pour ton aide olivthill
Amitiés à tous !!
Message édité par phanou44 le 08-12-2005 à 10:07:09