Format Date

Bonjour,

Je vous explique mon problème :

J'ai des grande listes de donnée de cours d'une action avec la date sur Excel. J'ai besoin de faire apparaître le jour avec la date cependant quand j'essaye de modifier cela ne fonctionne pas, il ne reconnaît pas la date en tant que telle et donc ne peut pas la modifier.

Comment faire ?

Il faut ensuite que je sélectionne seulement tous les mercredis de cette liste et les transfert sur une autre feuille Excel.

Pouvez vous m'aider aussi pour cela ?

Merci beaucoup.

Bonjour,

Merci de joindre un fichier à ta demande.

Cdlt.

Bonjour,

Afin de répondre au mieux à ton besoin, il serait judicieux de joindre un fichier anonymisé, respectant la structure du fichier réel, et surtout avec la colonne comportant les dates (ou ressemblant à des dates...) telle quelle.

Pour les extractions des "mercredis", cela ne serait pas un problème, mais il faut vraiment voir à quoi ressemblent tes "dates"..

@ te relire, avec un fichier test

Edit : Oupss, collision, bjr J-E

16forum.xlsx (51.28 Ko)

Voici le fichier

Et étant donné que le format n'est pas en date je ne peux pas non plus inverser le sens chronologique.

Merci

Bonjour,

une p'tite démonstration pour convertir les colonnes du classeur joint au format date :

Sub Demo()
MOIS = [{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","December"}]

For Each C In [{1,5}]
    With Feuil1.Cells(3, C).CurrentRegion.Columns(1)
        VA = .Value

        For R& = 1 To UBound(VA)
                          SP = Split(Replace(VA(R, 1), ",", ""))
                           V = Application.Match(SP(0), MOIS, 0)
            If Not IsError(V) Then
                   SP(0) = V
                VA(R, 1) = Join(SP, "/")
            End If
        Next

        .NumberFormat = "ddd dd/mm/yyyy "
               .Value = VA
    End With
Next
End Sub

Re-,

Tu as joint un fichier exemple, cependant dans les colonnes C, D, G, H ou autres, est-ce qu'il y a des données?

Si c'est le cas, et afin de répondre à ta 2ème question (extraction vers autre feuille des "mercredis"), est-ce que tu peux donner les titres de colonnes?

Et est-ce que le fait de changer les titres des colonnes "E" et "F" (titrées comme les colonnes "A" et "B", soit "Date" et "Last") serait pénalisant?

@ te relire

PS :

@ Marc L, une autre manière, bien sûr adaptée à son fichier :

Sub Convert_Date()
Dim DerLig As Long
Dim MoisA
Dim I As Byte
Application.ScreenUpdating = False
MoisA = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "December")
DerLig = Cells(Rows.Count, "A").End(xlUp).Row
With Range("A4:A" & DerLig & ",E4:E" & DerLig)
    .Replace " ", "/", xlPart
    .Replace ",", "", xlPart
    For I = LBound(MoisA) To UBound(MoisA)
        .Replace MoisA(I), I + 1, xlPart
    Next I
    .NumberFormat = "dddd dd/mm/yyyy "
End With
End Sub

Bon W-E

Oui j'y ai aussi pensé; j'ai préféré la célérité de la variable tableau en mémoire …

Merci de vos réponses !

Non il n'y a rien dans les colonnes C,D,G,H et ce ne serait pas pénalisant de changer le nom des colonnes.

Je comprends vos réponses cependant j'ai toujours eu une utilisation basique de Excel, où dois-je rentrer ces données ?

Merci beaucoup

Bonjour,

Une nouvelle proposition en complément de cousinhub et de Marc L.

ALT F11 pour ouvrir l'éditeur VBE.

Voir modDEMO dans VBAProject.

Cdlt.

Option Explicit
Option Private Module
Public Sub Demo()
Dim l As Long, dl As Long, col As Long, i As Long
Dim tbl
    Application.ScreenUpdating = False
    'on rétablit l'alignement horizontal par défaut des cellules
    Cells.HorizontalAlignment = xlGeneral
    l = 4   'ligne départ
    For col = 1 To 5 Step 4   'colonne 1 puis colonne 5
        dl = Cells(Rows.Count, col).End(xlUp).Row    'ligne fin
        'on crée un tableau des dates texte
        tbl = Application.Transpose(Range(Cells(l, col), Cells(dl, col)))
        On Error Resume Next
        For i = 1 To dl
           tbl(i) = CDbl(CDate(tbl(i)))   'conversion texte en nombre
        Next i
        On Error GoTo 0
        'le résultat des conversions est affiché en lieu et place
        With Cells(l, col).Resize(dl - l + 1)
            .NumberFormat = "dd/mm/yyyy"    'à adapter
            .Value = Application.Transpose(tbl)
        End With
        Erase tbl
    Next col
    ' bonus : on formate les nombres des cours!!!
    For col = 2 To 6 Step 4   'colonne 2 puis colonne 6
        Range(Cells(l, col), Cells(dl, col)).NumberFormat = "#,##0.00"  'à adapter
    Next col
End Sub

Bonjour Jean-Eric !

J'ai aussi commencé par tester la fonction CDate mais elle déclenche l'erreur #13 d'incompatibilité de type (même en direct

via la console de la fenêtre Exécution) avec les dates "December" sous une version 2003, d'où ma procédure par équivalence …

Sinon là il n'y a pas de souci vu le peu de lignes mais imagine un fichier en comportant des dizaines de milliers,

la fonction TRANSPOSE d'Excel étant limitée, elle risque de ne pas passer surtout qu'elle n'est pas vraiment utile dans ce cas,

autant travailler directement avec une variable tableau à deux dimensions …

Re,

J'ai eu cette même erreur avec Cdate seul et pas que pour décembre!!!

Mais en ajoutant Cdbl, et en reformatant les valeurs, le souci a disparu.

Cdlt.

Je viens d'éditer mon précédent message … Merci pour l'info ‼

OK aussi sur la version 2003 grâce au On Error Resume Next :

Sub DemoJE()
Dim col&, i&, tbl
Application.ScreenUpdating = False

For col = 1 To 5 Step 4
    With Range(Cells(4, col), Cells(Rows.Count, col).End(xlUp))
        tbl = .Value
        On Error Resume Next
        For i = 1 To UBound(tbl):  tbl(i, 1) = CDbl(CDate(tbl(i, 1))):  Next i
        On Error GoTo 0
                    .NumberFormat = "ddd dd/mm/yyyy "
                           .Value = tbl
        .Offset(, 1).NumberFormat = "#,##0.00"
    End With
Next col

Erase tbl
End Sub

Version sans On Error Resume Next :

Sub Demo2()
                              Application.ScreenUpdating = False
For C& = 1 To 5 Step 4
    With Feuil1.Cells(3, C).CurrentRegion.Columns(1).Offset(1)
                             VA = .Value
        For R& = 1 To UBound(VA)
            If IsDate(VA(R, 1)) Then VA(R, 1) = CDate(VA(R, 1))
        Next
             .HorizontalAlignment = xlGeneral
                    .NumberFormat = "ddd dd/mm/yyyy "
                           .Value = VA
        With .Offset(, 1)
             .HorizontalAlignment = xlGeneral
                    .NumberFormat = "#,##0.00 "
        End With
    End With
Next
End Sub

Merci Jean-Eric pour le fichier joint j'ai réussi à ensuite convertir et avoir les jours !!!!!!!

Juste dernières questions :

- mes données sont classées de 2014 à 2011 et je souhaiterai l'inverse, comment faire ?

- comment puis-je sélectionner juste les mercredis ou jeudis et les envoyer sur une autre feuille ?

Merci beaucoup !!!

Merci Marc aussi bien que je n'ai pas le niveau excel pour appliquer ces formules ...

J'ai réussi à classer mes données en insérant une colonne nombre de 1 à N !

Ne me reste plus qu'a copier les jeudis ou mercredis (si jeudi n'y est pas) dans une autre feuille !

Si vous pouvez m'aide pour cela ce serait super

Merci encore !!

Le tri est possible directement sur une colonne de dates !

Avec un filtre avancé, il est facile de copier les mercredi et les jeudi vers une autre feuille, encore faut-il savoir laquelle et où …

Rechercher des sujets similaires à "format date"