IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Mise en forme relevé de banque CSV pour exploitation dans access 2019


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 142
    Par défaut Mise en forme relevé de banque CSV pour exploitation dans access 2019
    Bonjours,
    Lorsque j'importe mon relevé au format CSV et que je l'ouvre avec Excell avant de l'intégrer à ma base Access
    J'ai les 5 premiers lignes que je voudrai transformer en colonnes à coté des ligne d'opération
    pour récupérer le numéro du compte la date du relevé et le solde de fin du relevé
    Comment Puis-je procéder, actuellement je fait cela manuellement
    Dans Excell 2019
    Merci de vos conseils et votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2018
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 281
    Par défaut
    Bonjour,

    L'astuce est de passer par PowerQuery qui permet de manipuler les lignes et colonnes plus facilement qu'avec Excel.
    En revanche je n'ai pas la solution.
    Mais sur le forum il y a des pro de PQ.
    Philippe

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 241
    Par défaut
    Hello,
    Citation Envoyé par MONANGE Voir le message
    Bonjours,
    Lorsque j'importe mon relevé au format CSV et que je l'ouvre avec Excell avant de l'intégrer à ma base Access
    J'ai les 5 premiers lignes que je voudrai transformer en colonnes à coté des ligne d'opération
    pour récupérer le numéro du compte la date du relevé et le solde de fin du relevé
    Il y a plusieurs formats de lignes dans ton fichier csv ? Peux-tu nous mettre les 10 premières lignes de ton fichier csv ? Bien sûr avec des données transformées en données non confidentielles.

    Ami calmant, J.P

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour
    Nom du fichier et encoding à adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    let
    let
        Source = Csv.Document(File.Contents("T:\TEMP\XXX.csv"),[Delimiter=";", Columns=3, Encoding=65001, QuoteStyle=QuoteStyle.None]),
        #"Conserver les premières lignes" = Table.FirstN(Source,5),
        #"Lignes filtrées" = Table.SelectRows(#"Conserver les premières lignes", each ([Column1] <> "Compte tenu" and [Column1] <> "Type")),
        #"Colonnes supprimées" = Table.RemoveColumns(#"Lignes filtrées",{"Column3"}),
        #"Valeur remplacée" = Table.ReplaceValue(#"Colonnes supprimées","Date","Date relevé",Replacer.ReplaceText,{"Column1"}),
        #"Table transposée" = Table.Transpose(#"Valeur remplacée"),
        Header = Table.PromoteHeaders(#"Table transposée", [PromoteAllScalars=true]),
        #"Supprimer 1èeres lignes" = Table.Skip(Source,6),
        Data = Table.PromoteHeaders(#"Supprimer 1èeres lignes", [PromoteAllScalars=true]),
        #"Personnalisée ajoutée" = Table.AddColumn(Header, "Data", each Data),
        #"Data développé" = Table.ExpandTableColumn(#"Personnalisée ajoutée", "Data", {"Date", "Libellé", "Montant(EUROS)"}, {"Date", "Libellé", "Montant(EUROS)"}),
        #"Type modifié" = Table.TransformColumnTypes(#"Data développé",{{"Date relevé", type date}, {"Date", type date}, {"Montant(EUROS)", Currency.Type}, {"Solde (EUROS)", Currency.Type}, {"Numéro Compte", type text}, {"Libellé", type text}})
    in
        #"Type modifié"
    Ajouter le typage des données à la fin

  5. #5
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 289
    Par défaut
    Bonjour

    en complément à la solution de Chris, une autre possibilité par Power Query en passant par du code (et non pas par l'interface utilisateur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let
        Source = Votre source ici,
    
        Data = #table(
            {"Numéro Compte", "Date relevé", "Solde(EUROS)", "Data"},
            {{Source[Column2]{0}, Source[Column2]{3}, Source[Column2]{4}, Table.PromoteHeaders(Table.Skip(Source,6))}}),
    
        #"Data développé" = Table.ExpandTableColumn(Data, "Data", {"Date", "Libellé", "Montant(EUROS)"}, {"Date", "Libellé", "Montant(EUROS)"})
    in
        #"Data développé"

    le principe est de récupérer directement dans une table les cellules B1 = Source[Column2]{0}) , B4 = Source[Column2]{3} et B5 = Source[Column2]{4} ainsi que les données à partir de la ligne 7 = Table.PromoteHeaders(Table.Skip(Source,6))
    il ne reste plus qu'à développer les données et à typer les colonnes

    Stéphane

  6. #6
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Bonjour

    Il est tout à fait possible de faire cette transformation avec VBA Excel et même d'importer ton csv en appliquant cette étape dans Access.

    Comme demandé plus haut il nous faudrait un exemple de csv

  7. #7
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Boinjour
    Citation Envoyé par Raccourcix Voir le message
    en complément à la solution de Chris, une autre possibilité par Power Query en passant par du code (et non pas par l'interface utilisateur)

    le principe est de récupérer directement dans une table les cellules B1 = Source[Column2]{0}) , B4 = Source[Column2]{3} et B5 = Source[Column2]{4} ainsi que les données à partir de la ligne 7 = Table.PromoteHeaders(Table.Skip(Source,6))
    il ne reste plus qu'à développer les données et à typer les colonnes
    Waouh : je range ça dans ma boîte à malice ! Sûr que cela resservira... J'ai d'ailleurs un truc sur le feu où je vais le tester !

    Merci Stéphane

    EDIT : Testé et approuvé

  8. #8
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 289
    Par défaut
    Merci Chris pour le retour
    surtout que dans le cas présent le #table n'est pas très compliqué à mettre en oeuvre :
    - une liste de 4 éléments pour les en-têtes,
    - une liste avec une seule liste pour la seule ligne.

    Au final, une seule étape au lieu de 9 dans ton code, c'est bien plus lisible

    Stéphane

Discussions similaires

  1. [XL-2010] Mise en forme cellule Excel vers .csv
    Par Francois2601 dans le forum Excel
    Réponses: 0
    Dernier message: 04/07/2016, 12h27
  2. [XL-2000] Mise en forme d'un fichier Csv contenant des informations Hexa
    Par lexxor dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/09/2013, 14h22
  3. Quel Layout pour une meuilleur mise en forme quelque soit le système d'exploitation?
    Par Klemsy78 dans le forum Agents de placement/Fenêtres
    Réponses: 0
    Dernier message: 15/03/2013, 17h53
  4. mise en forme conditionnelle d'un csv avec php
    Par hindioriental dans le forum Langage
    Réponses: 3
    Dernier message: 03/05/2011, 08h17
  5. Réponses: 2
    Dernier message: 23/05/2007, 07h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo