Microsoft 365 TCD et format date

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 !

DJARNAUD

XLDnaute Occasionnel
Bonjour à tous,

J'ai un soucis avec le tableau excel ci-joint. la macro me permets de télécharge un fichier CSV, et d'en récupérer les données. Le probléme porte sur la colonne avec les dates. Je n'arrive pas à faire pour que le TCD me fasse un tri par mois ou années. J'ai tenté plusieurs choses sur le format de date de la colonne mais rien à faire.
Je viens donc solliciter votre aide 🙂

merci
 

Pièces jointes

Bonjour,
Pourquoi ne pas utiliser Power Query (nativement intégré à ta version Excel)?
Le traitement se ferait entièrement par le code, avec recherche du fichier le plus récent, et suppression des lignes inutiles, qui t'empêchent ici ce regroupement par date...
A voir?
Si ça te tente, l'idéal serait que tu joignes un fichier "vierge", ne contenant que les titres. Ce fichier doit être élaboré à partir de ton fichier original, au format csv. Tu l'édites avec un éditeur de texte (Notepad++ ou le bloc-note, par exemple), puis tu supprimes toutes les données (ou tu laisses quelques lignes anonymisées), avec les en-têtes. Et tu le zippes pour pouvoir le joindre ici.
 
Dernière édition:
Bonjour le forum,

Une solution VBA qui utilise le filtre avancé, c'est très rapide :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim An As Range, Mois As Range, dest As Range, critere As Range
Set An = [F1]: An.Name = "An"
Set Mois = [H1]: Mois.Name = "Mois"
Set dest = [J1:L1]
Set critere = [Z2]
Application.ScreenUpdating = False
Application.EnableEvents = False
critere = "=AND(YEAR(C2)=An,IF(Mois="""",TRUE,MONTH(C2)=Mois))"
dest.Rows(2).Resize(Rows.Count - dest.Row).ClearContents 'RAZ
[A1].CurrentRegion.AdvancedFilter xlFilterCopy, critere(0).Resize(2), dest
critere = ""
Application.EnableEvents = True
End Sub
A+
 

Pièces jointes

Bonjour,
Dans le fichier joint, une requête Power Query (PQ) permet de :
- déterminer automatiquement le nom d'utilisateur ("Username")
- récupérer le dernier fichier .csv dans le dossier "Téléchargement" ("Downloads")
- filtrer les valeurs nulles ou vides
- transformer les dates au format "Date"
- déverser les données dans un TCD, avec 2 segments sur les mois et les dates

Pour configurer PQ, regarde d'abord dans l'onglet "Lisez-moi" (à faire une seule fois).
Pour mettre à jour, clic droit dans le TCD, "Actualiser" (ou ruban "Données", "Actualiser tout")

J'ai pris comme constante les deux en-têtes présents dans ton fichier :
- "Mode de règlement"
- "Date de validation/refus"
Si les en-têtes diffèrent, tu réponds à mes questions du post #2 😉

Le fichier xlsx et le fichier csv source dans le zip (fichier csv à placer donc dans le dossier "Téléchargement"...)
Si ça t'intéresse
 

Pièces jointes

Bonjour à tous,

je vous remercie pour vos retours rapide!

Le fichier source est un fichier CSV que je télécharge à partir d'un logiciel interne. Je voudrais donc minimiser les modifications de forme et c'est la raison pour laquelle le TCD me convenait bien. La macro me semble être la meilleure solution mais est il possible de l'appliquer au dossier d'origine de mon premier post? merci
 
Bonjour DJIARNAUD, Cousinhub,
Le fichier source est un fichier CSV que je télécharge à partir d'un logiciel interne. Je voudrais donc minimiser les modifications de forme et c'est la raison pour laquelle le TCD me convenait bien. La macro me semble être la meilleure solution mais est il possible de l'appliquer au dossier d'origine de mon premier post? merci
Dans ce fichier (2) la feuille source n'est pas modifiée et les résultats sont dans la feuille "Filtre", le code de cette feuille :
VB:
Private Sub Worksheet_Activate()
Worksheet_Change [A1] 'lance la macro
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim F As Worksheet, An As Range, Mois As Range, dest As Range, critere As Range
Set F = Sheets(1) 'feuille source
Set An = [B1]: An.Name = "An"
Set Mois = [D1]: Mois.Name = "Mois"
Set dest = [F1:H1]
Set critere = F.[Z2]
Application.ScreenUpdating = False
Application.EnableEvents = False
dest.Rows(2).Resize(Rows.Count - dest.Row).ClearContents 'RAZ
With F.[A1].CurrentRegion
    .Cells(1).EntireColumn.Insert
    critere = "=AND(YEAR(C2)=An,IF(Mois="""",TRUE,MONTH(C2)=Mois))"
    .Columns(0) = "=ROW()"
    .Cells(1, 0) = "Ligne" 'le titre est indispensable
    Union(.Columns(0), .Cells).AdvancedFilter xlFilterCopy, critere(0).Resize(2), dest
    .Columns(0).EntireColumn.Delete
End With
critere = ""
dest.Resize(, 2).EntireColumn.HorizontalAlignment = xlCenter 'centrage
Application.EnableEvents = True
End Sub
La feuille est mise à jour quand on l'active ou qu'on modifie une cellule quelconque.

A+
 

Pièces jointes

Bonjour à tous,

je vous remercie pour vos retours rapide!

Le fichier source est un fichier CSV que je télécharge à partir d'un logiciel interne. Je voudrais donc minimiser les modifications de forme et c'est la raison pour laquelle le TCD me convenait bien. La macro me semble être la meilleure solution mais est il possible de l'appliquer au dossier d'origine de mon premier post? merci
Bonjour,
Tu n'as sans doute pas testé ma proposition...
Le fichier csv est importé sans l'ouvrir, donc aucune modification dans le fichier.
Si tu veux maintenir les cellules/lignes entières contenant des valeurs "null", on peut modifier.
Et le tout est déversé dans un TCD, comme tu le souhaites..
M'enfin, si la macro est un passage obligé, dommage...
Bon courage
 
- 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

Discussions similaires

Réponses
2
Affichages
312
  • Résolu(e)
Microsoft 365 DateDif()
Réponses
5
Affichages
187
Réponses
3
Affichages
493
Retour