[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
 

Pièces jointes

  • test.xlsm
    39.5 KB · Affichages: 145
  • test.xlsm
    39.5 KB · Affichages: 136
  • test.xlsm
    39.5 KB · Affichages: 129

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.
 

Pièces jointes

  • test.xlsm
    25.1 KB · Affichages: 112
  • test.xlsm
    25.1 KB · Affichages: 101
  • test.xlsm
    25.1 KB · Affichages: 109
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

Réponses
11
Affichages
281

Statistiques des forums

Discussions
312 103
Messages
2 085 317
Membres
102 862
dernier inscrit
Emma35400