Gestion croisée de fichiers .CSV

Oi.

J’ai posté dans « Softs & Apps » car je rêve d’une solution logicielle à mon problème. Bien qu’il soit probable que la solution soit dans un macro ou ligne de commande… :sob:

Donc, pour le contexte, je veux migrer mes données comptable d’un logiciel (SageOne) vers un autre (je sais pas encore lequel). Mon souci principal c’est que des petits malins chez Sage ont bien fait attention de ne pas associer l’intégralité des données nécessaires dans leurs différents fichiers d’export.

En l’occurrence : j’ai un fichier A avec en colonne 1 le nom du compte tiers (fournisseur ou client) et en 2 son numéro. Et j’ai un fichier B avec en 1 le nom du compte et en 2 l’adresse, en 3 le téléphone etc, mais naturellement pas le numéro du compte.

Donc, mon bonheur se trouverait dans une solution simple permettant de créer dans le fichier B, une colonne avec le numéro de compte correspondant au nom. En gros, une routine qui prend le nom B1, regarde en A1 quel A2 lui est associé et l’ajoute au fichier B.

Ne me dites pas de tout mettre dans une base SQL et de jouer avec les commandes, de grâce. Par contre si vous avez un petit soft qui permet des manipulations conditionnelles de fichiers .CSV : :heart_eyes: :kissing_heart:

Et passer par de l’excel (format xlsx) c’est envisageable ?
A coup de RECHERCHE(V) tu devrais pouvoir tout faire.

Tu peux créer des feuilles qui sont liées à tes fichiers CSV et peuvent se rafraichir juste en cliquant sur Rafraichir les données et avoir une feuille cible alimentée à coups de formules.

un script powershell qui charge les 2 fichiers et en forme un troisième en sortie ? c’est l’affaire de quelques lignes à écrire. Si tu me files les fichiers (sans les données, j’ai en vrai besoin que des en-têtes, je dois pouvoir te faire ça pour ce soir

Ouaaa, merci pour vos réponses rapides !

@darkhy : Mac OS et LibreOffice ici.
@djktk : je suis en train de préparer les fichiers au plus propre et avec uniquement le nécessaire et je reviens vers toi.

J’ai parlé d’Excel mais Calc doit tout aussi bien pouvoir le faire, c’est quand même du standard comme fonctionnalités.
Powershell ça fonctionne sur Mac :slight_smile: ?

1 « J'aime »

Vu qu’il y a des modules pour linux, j’ai pas réfléchi au sujet, mais apparemment ça peut s’installer.

Si ça marche pas en powershell, avec les entêtes, je te fais un executable .NetCore pour Mac qui le fera.
Il y en a pas pour longtemps.

Pour ne pas répondre à la question (désolé), je pense que tu te donnes peut-être du boulot pour rien.

Soit ton futur logiciel aura une fonctionnalité d’import compatible avec SageOne, soit les infos que va contenir ton fichier homemade ne seront pas importables car non compatibles avec le format de champs existants (ce n’est déjà même pas sur que tu puisse conserver le numéro des comptes, certains logiciels sont un peu pointilleux sur la dénomination des tiers).

Pour répondre à la question, comme le disais @darkhy tu colles tes 2 csv dans un fichier Calc et RechercheV() entre tes onglets pour récuperer les infos.

Alors, voici deux fichiers test qui sont en fait les « vrais fichiers », mais avec moins de données.

Dans le fichier « GZ_ecritures.csv » :

  • les numéros de comptes sont dans la même cellule que le nom du compte.
  • et pour le fournisseur (DMO, TNT ou FLIR), c’est le compte global 401000 qui est spécifié ----> c’est ça le problème !

Il faudrait donc que là où la colonne « Compte du grand livre » indique « Fournisseurs (401000) » la macro regarde la colonne « Nom », aille dans le fichier « GZ_comptes.csv », pêche le numéro de compte correspondant et aille le mettre soit à la place du 401000, soit dans une nouvelle colonne. :blush:

Archive.zip (1,1 Ko)

Alors c’est tout le paradoxe… La compta c’est très simple : des lignes et des colonnes. L’import devrait être aussi très simple : on choisit les champs à exporter, puis on importe dans le nouveau logiciel en faisant correspondre à la main s’il le faut, les champs.

Sauf que dans mon cas, SageOne, par exemple, bien qu’il vous rassure en vous disant que vous pourrez exporter vos données, le permet mais de façon juste assez incomplète pour ruiner toute constitution d’un fichier importable ailleurs.

Dans mon cas précis, je veux exporter des écritures. Or il faut associer une ligne d’écriture à un numéro de compte (sinon, ça n’a pas de sens). SageOne exporte bien l’écriture, mais au lieu de lâcher le numéro de compte (en l’occurrence un « sous-compte », mais passons), il donne (pour les comptes tiers fournisseurs / clients) le nom du compte et … le compte global (401 et 410)… Or si je veux importer correctement, il me faut l’identifiant du compte : son numéro. D’où ma requête.

Alors, je suis pas sûr d’avoir compris, mais j’ai plusieurs centaines de lignes… Ce que tu proposes est une recherche manuelle, non ? Je vais creuser le truc…

Non la fonction recherchev ou son équivalent dans Calc prend en paramètre une valeur (la clé recherchée), une plage de recherche (la liste des clés) et éventuellement une plage de résultat (la valeur associé à la clé).
Ca te permet de compléter ton tableau automatiquement en étendant la formule à chaque ligne.

GZ_ecritures_recherchev.zip (728 Octets)

Je t’ai mis la formule (en language Excel, mais je pense que Calc utilise le même) en clair car l’enregistrement en .csv fait sauter les formules (normal).

En copiant tes comptes en O1:P3 (et en mettant le nom du compte en premier, recherchev marche de gauche à droite), ta formule en M1 et suivante sera
=SI(I2=« Fournisseurs (401000) »;RECHERCHEV(E2;$O$1:$P$3;2;FAUX);I2)

Qui se traduit par :
Si I2 = « Fournisseur (401000) », alors recherche E2 (le nom du compte) dans la première colonne de la zone O1 à P3 et quand tu l’as trouvé donne moi le valeur de la 2eme colonne (donc le numéro du compte) de la ligne de cette valeur (le FAUX à la fin indique qu’on veut une correspondance exacte entre le nom recherché et le la liste des noms en colonne O).
Et si M1 n’est pas égal à « Fournisseur (401000) », alors indique la valeur de I2

Edit : les fichiers de moins de 1Ko je pensais pas que ça existait encore ^^

1 « J'aime »

J’essaie demain et je te tiens au courant. Là, j’en peux plus des chiffres… :exploding_head:

EDIT : bon, j’ai essayé et je dois avoir rien compris. Ou alors LibreOffice marche pas comme Excel… Je regarderai plus en détail comment fonctionnent les fonctions demain.

Il faut que les données sources de recherchev() soient triées il me semble. Le $c’est pour avoir une adresse absolue, qui ne change pas.

Hello,

Si tu veux, voilà le résultat.
Comme je disais, ça a besoin d’avoir powershell installé, mais au pire ça peut être adapté dans un autre langage, j’ai juste fait avec celui que j’ai l’habitude d’utiliser au taf. J’y joins le résultat attaché pour voir si ça te convient aussi.

transform_csv.zip (1,2 Ko)

edit J’ai rajouté une ligne d’en-tête pour le CSV compte « Numero;Nom », pour simplifier le truc

1 « J'aime »

Alors, j’ai une VM windows 10… J’ai tout mis dans le même rep (les fichiers GZ_comptes.csv et GZ_ecriture.csv) et j’ai simplement lancé .\test.ps1.

Ca me génère bien un fichier sortie.csv, mais vide.

Je mets pas les fichiers au bon endroit ?

(Jamais utilisé PS avant, hein. :face_with_hand_over_mouth:)

si tu as jamais utilisé ça, je suggèrerais d’ouvrir une fenêtre powershell, je pense qu’il te manque à faire une commande « set-executionPolicy remotesigned » en tant qu’admin, sinon il voudra pas exécuter du code non signé. Par contre, tu as bien remis la ligne d’en-tête comme je l’avais mise dans le fichier gz_comptes.csv ?

en python : https://colab.research.google.com/drive/1mnegSTx34lrNFKvCTTgzklxLccp7Ww-3?usp=sharing

T’as juste a uploader tes fichiers et télécharger le csv produit.

Je vais faire mon responsable informatique chiant, mais mon DAF et/ou le comptable me raconte un truc comme ca, je lui dit qu’il faudra pas venir pleurer s’il se rends compte, 6 mois/3 ans/20 ans plus tard, d’une erreur de l’enfer a cause d’un script cool trouvé sur internet.

Toutes les personnes qui te proposent de l’aide ici sont, je pense, de bonne foi, mais elle seront pas capable de gérer le cas a la con™ qui va péter toute ta comptabilité. Si tu viens poser la question ici, c’est que t’as probablement pas de service info dans ta boite, et que t’as pas le choix des outils, mais cette manière de faire est une monumentale erreur

Bref, à problème professionnel, cherche une solution pro.

  • Demande a Sage de te faire une solution officielle de transfert entre SageOne et le nouveau logiciel. Ça coutera des sous.
  • Demande a l’éditeur du nouveau logiciel de te faire une passerelle. Oui, c’est payant.

Je cherche pas a défendre les éditeurs qui font payer ces services une fortune - même si le prix est souvent justifié pour te garantir que la passerelle fonctionnera dans TOUS LES CAS - je cherche a t’alerter sur les dangers d’une solution bricolo-bricolette: Tu le regretteras à terme. Quand, je sais pas, mais ca arrivera obligatoirement. Et tu n’auras personne pour t’aider. Là ou la passerelle de l’éditeur, tu pourras lui dire que c’est de la merde si jamais ça génère une erreur.

You’ve been warned.

1 « J'aime »

Vu le contexte (il écrit sur le sujet compta en ligne qu’il fait « une activité agricole ou de vente de produits physiques »), c’est pas le genre de budget qui va passer pour une opération de migration chez sage, faut aussi se mettre à la place des gens qui sont pas dans une grande structure. Là il veut une opération en one shot pour migrer sur un nouveau produit, pas forcément faire un double run sur deux solutions pro pendant X temps pour vérifier que ça fera pareil.

Merci LoneWolf de te soucier (sincèrement), mais la compta, c’est très basique (au delà des règles comptables que le fisc s’amuse à changer régulièrement). Là, il s’agit d’identifiants de compte, c’est tout.

Et c’est un vaste débat de « mettre ses sous (moyens) au bon endroit », c’est même ce qui définit le succès (ou l’échec) d’une boîte. Et au final c’est toujours la prise de risque qui est récompensée… Et rien d’autre. Mais là, on diverge :wink:

Pour en revenir au script, @djktk, j’avais pas mis les en-tête, non !! Je viens de le faire et ça marche ! :partying_face:
Maintenant, je devrai m’en sortir tout seul.
Un grand merci à tous ! Vraiment, on se sent tout de suite moins seul ici (même pour régler des soucis de compta !) :kissing_heart:

Edit : @Ewi ton lien ne marche pas :thinking:
Edit : bon même google.com est unreachabeul.
Haaa la campagne… (mais je suis pas agriculteur !)