[XL 2011] manipulation de date dans matrice

thehaker42

XLDnaute Nouveau
Bonjour à tous
j'ai un gros classeur avec plusieurs feuille
j'ai mis en ci joint un petit extrait, en copiant les dates du deuxième onglet un problème aléatoire apparait les dates se transforme en format US!
Avez vous une idée d'ou peut venir le problème ?

Bonne soirée
 

Fichiers joints

Gareth

XLDnaute Impliqué
Re : [XL 2011] manipulation de date dans matrice

Bonjour,

Il y a une explication ...
Tes données semblent etre importées par un copier/coller.
La colonne Date contient en fait des dates au format texte (voir la fontion TYPE dans le fichier joint).
TYPE = 2 => Texte
TYPE = 1 => Nombre

Comme tu copies tes dates par Macro, la macro évalue un texte qui ressemble à une date le traite ne format US et le réaffiche au format FR (car ta feuille est en FR) mais dans l'intervalle, il y a eu conversion :( ...

Ce code permet de reproduire le phénomène.
Code:
Sub test()
[c9].Value = "4/3/2012"
End Sub
Le probleme peut etre contourné en utilisant la fontion DateValue (Voir le fichier joint).
Ton code continue à mettre la date en format US. Il faudrait inserer DateValue dans le traitement.
 

Fichiers joints

Dernière édition:

thehaker42

XLDnaute Nouveau
Re : [XL 2011] manipulation de date dans matrice

j'ai peut etre une piste
est-ce :
Code:
Dim coule(0 To 4, 0 To 999) As String
est ce le STRING qui est litigieux ? j'ai essayé de changer en Byte et en Date -> ca me renvoi une erreur a la ligne :
Code:
coule(0, c) = Cells(a, 1)
Code:
Dim coule(0 To 4, 0 To 999) As String 'variable matrice de stockage des valeurs de la liste
Dim temp(0 To 1, 0 To 99) As String

Sub macro()
'Création de la liste coule

Sheets("COULE").Select
c = 0

For a = 2 To 1001

    doublon = False
    For b = 0 To c - 1
        If coule(0, b) = Cells(a, 1).Value Then
            coule(3, b) = coule(3, b) + Cells(a, 4).Value
            doublon = True
        End If
    Next b
  
    If doublon = False Then
        coule(0, c) = Cells(a, 1).value
        coule(1, c) = Cells(a, 2).value
        coule(2, c) = Cells(a, 3).value
        coule(3, c) = Val(Cells(a, 4).value)
        coule(4, c) = 3 + 20 * c
        c = c + 1
    End If
Next a


'Création de la feuille suivit

Sheets("SUIVIT").Select
Cells.Select
Selection.Delete Shift:=xlUp

inter = 3
For j = 0 To 999
    For i = 0 To 3
        Cells(inter, i + 1).Value = coule(i, j)
    Next i
    inter = inter + 20
    
Next j
End Sub
 

thehaker42

XLDnaute Nouveau
Re : [XL 2011] manipulation de date dans matrice

Code:
    If doublon = False Then
        coule(0, c) = Cells(a, 1).Value
        coule(1, c) = Cells(a, 2).Value
        coule(2, c) = CDate(Cells(a, 3).Value)
        coule(3, c) = Val(Cells(a, 4).Value)
        coule(4, c) = 3 + 20 * c
        c = c + 1
    End If
en utilisant CDate ca marche :)
bonne journée à tous
 

Discussions similaires


Haut Bas