[XL 2011] manipulation de date dans matrice

  • Initiateur de la discussion Initiateur de la discussion thehaker42
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

thehaker42

Guest
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

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

Dernière édition:
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
19
Affichages
866
Retour