Microsoft 365 Problème pour traiter un fichier csv

Did95

XLDnaute Nouveau
Bonsoir,
toutes les semaines je dois analyser les entrées journalières de parking.
Je souhaiterai savoir si il y a un moyen d'automatiser la transformation du fichier csv vers excel?

Les log indiquent les jours et heures de personnes qui passent la porte,
j'ai besoin de ressortir les noms et si ils sont passés une fois par jour, actuellement si la personne badge 3 fois cela me compte trois.
Pour remédier a ce problème, je suis obligé de modifier la date en précisant uniquement le jour, puis je passe par supprimer les doublons et enfin un tableau croisé.

si vous penser avoir un solution je pourrai vous fournir un fichier csv de test.

Merci d'avance pour vos réponses
Didier
 
Solution
Re,

Ce fichier est bon

voici une requête Power Query qui reprends vos données. Pour le reste il faut détailler ce que vous voulez exactement. La requête ajoute une colonne 'Jour'

Changez le chemin du fichier dans l'étape source de la requête.

Difficile avec une seule ligne de données de faire une démonstration mais vous pouvez faire vos propre transformation dans power query

Cordialement

@Staple1600 : oui j'ai testé le fichier d'origine avec pleins de page de codes possibles.

Staple1600

XLDnaute Barbatruc
Re

@Di95
Ton CSV est mal "formaté"
J'ai donc fait un test (avec deux façons d'ouvrir un CSV en VBA)
En utilisant ce fichier exemple
NB: pour tester ne pas oublier de changer le chemin et le nom du dossier contenant le *.csv
VB:
Sub essai_A()
Dim CSVPath$
CSVPath = "C:\Users\STAPLE\Downloads\export test\"
Workbooks.OpenText Filename:=CSVPath & "trees.csv", DataType:=xlDelimited, Comma:=True, DecimalSeparator:="."
ActiveSheet.Copy
ActiveWorkbook.SaveAs CSVPath & ActiveSheet.Name & ".xlsx", 51
ActiveWorkbook.Close True
End Sub
Sub essai_B()
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Users\STAPLE\Downloads\export test\trees.csv", Destination:=Range("$A$1"))
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = True
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .TextFileDecimalSeparator = "."
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

Maintenant, reste la suite de la question.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

L'ami @Staple1600 a raison votre fichier (celui communiqué au post#5) n'est pas conforme et son codage incertain.

Chaque ligne est entourée de guillemet, les noms de colonnes avec espace sont donc double-côté:
"Date,Status,Reason,""Parking lot"",Gate,""Access type"",Beneficiary,""Beneficiary ID"",""Profile ID"",""External ID"",""Identifier type"",Identifier,""Group of spots"",""Access right"",""Access method"",Organisation,Tenant"
Au lieu de
Date,Status,Reason,"Parking lot",Gate,"Access type",Beneficiary,"Beneficiary ID","Profile ID","External ID","Identifier type",Identifier,"Group of spots","Access right","Access method",Organisation,Tenant

Bien sûr avec power query on peut arranger ça, mais je ne pense pas que vos fichiers originaux vous arrivent comme ça.

Comme le disait @Staple1600 anonymisez vos .csv dans le bloc-note

Cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

voilà mon PQ en 4 feuilles. Euh 4 étapes. Changer le chemin vers le fichier dans la source

let
Source = Csv.Document(File.Contents("----------\export test.csv"),[Delimiter=",", Columns=1, Encoding=65001, QuoteStyle=QuoteStyle.None]),
#"Fractionner la colonne par délimiteur" = Table.SplitColumn(Source, "Column1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3", "Column1.4", "Column1.5", "Column1.6", "Column1.7", "Column1.8", "Column1.9", "Column1.10", "Column1.11", "Column1.12", "Column1.13", "Column1.14", "Column1.15", "Column1.16", "Column1.17"}),
#"En-têtes promus" = Table.PromoteHeaders(#"Fractionner la colonne par délimiteur", [PromoteAllScalars=true]),
#"Type modifié" = Table.TransformColumnTypes(#"En-têtes promus",{{"Date", type datetime}, {"Status", type text}, {"Reason", type text}, {"Parking lot", type text}, {"Gate", type text}, {"Access type", type text}, {"Beneficiary", type text}, {"Beneficiary ID", Int64.Type}, {"Profile ID", Int64.Type}, {"External ID", type text}, {"Identifier type", type text}, {"Identifier", type text}, {"Group of spots", type text}, {"Access right", type text}, {"Access method", type text}, {"Organisation", type text}, {"Tenant", type text}})
in
#"Type modifié"
 

Did95

XLDnaute Nouveau
Bonjour
Malheureusement oui fichier comme cela avec le bloc notes.
Date,Status,Reason,"Parking lot",Gate,"Access type",Beneficiary,"Beneficiary ID","Profile ID","External ID","Identifier type",Identifier,"Group of spots","Access right","Access method",Organisation,Tenant

je remet le fichier mais avec une seule entrée modifié avec bloc notes.

Cordialement
 

Pièces jointes

  • test export.zip
    427 bytes · Affichages: 8

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Ce fichier est bon

voici une requête Power Query qui reprends vos données. Pour le reste il faut détailler ce que vous voulez exactement. La requête ajoute une colonne 'Jour'

Changez le chemin du fichier dans l'étape source de la requête.

Difficile avec une seule ligne de données de faire une démonstration mais vous pouvez faire vos propre transformation dans power query

Cordialement

@Staple1600 : oui j'ai testé le fichier d'origine avec pleins de page de codes possibles.
 

Pièces jointes

  • PQ test import.xlsx
    26.1 KB · Affichages: 3

Did95

XLDnaute Nouveau
Bonjour,
Merci pour ces retours, mon but final est de faire une extraction du fichier CSC afin de savoir le nombre de personne par jour qui passe la porte.
ce que je veux eviter c'est que si la personne passe trois dans la journée je ne veux la compter qu'une seule fois.

Cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

J'avais bien compris, mais avec une seule ligne de données dans votre fichier exemple il est difficile de vous faire une démonstration.

Une fois le fichier chargé dans Power Query vous pouvez faire toutes les transformations possibles.
Vous pouvez regrouper par Date (ou colonne jour) et identifiant

Cordialement
 
Dernière édition:

Discussions similaires

Réponses
10
Affichages
481

Statistiques des forums

Discussions
315 146
Messages
2 116 763
Membres
112 856
dernier inscrit
Jonono21