Découper fichier XLS en plusieurs fichiers selon critére

Bonjour,

je suis tout nouveau sur votre forum et j'aurais besoin svp de votre savoir

Cela fait plusieurs semaines que je cherche une solution mais étant vraiment novice en macro j'ai beaucoup de mal à avancer. Voici Ce que je souhaiterais réaliser.

Une macro qui me permet de diviser mon fichier excel (exemple vide ci joint) en fonction d'un critère en plusieurs fichier .XLS

Mon fichier est une extraction quasi similaire chaque semaine, le nombre et l'ordre des colonnes ne changent pas. Seul le nombre de lignes peut évoluer allant de 5 à 9000

Je souhaiterais que la division de mon fichier se réalise selon le critère "Fournisseur" colonne B . Soit un fichier par fournisseur identique à la forme du fichier initial. dont le nom du fichier serait idéalement (nom du fournisseur et date du jour) .

Attention les colonnes S à X en saumon sont utile dans mon fichier de base mais ne doivent pas être prise en compte dans la division en sous fichier . soit une sélection des colonnes A à R.

J'espère avoir été assez clair dans mon explication et j'espère vraiment que vous pourrez me donner un petit coup de main .

Merci par avance pour votre aide

399test.xlsm (37.96 Ko)

bonjour

je te propose de faire au début un fichier par fournisseur, vides

chaque fichier va lire les données qui le concernent. Il filtre les lignes voulues, et les colonnes

ceci se fait sans VBA, avec Power Query (à télécharger gratuitement, inclus dans les Excel plus récents

il n'y a aucun code, et les mises à jour se font par un simple clic (ça sera facile pour 5 fichiers, mais trèèès long si tu en a 100.

ça te tente ?

amitiés

Bonjour ,

Merci pour ton retour mais désolé cette alternative ne fonctionnera pas car le réseau protégé de mon entreprise ne me permet pas de télécharger de logiciel complémentaires sans validation d'un admin donc compliqué ...

Je souhaiterais donc plutôt passer par du VBA sans faire qqch de trop compliqué

merci

Bonjour,

regarde si ceci peut convenir

edit : bonjour jmd

Bonjour Steelson,

C'est exactement ce que je souhaitais . Merci beaucoup pour votre aide . Vous allez me faire gagner un temps fou de copier coller fastidieux ...

Encore merci pour la réactivité et l'aide fournie

je mets le sujet en résolu

Bonjour,

regarde si ceci peut convenir

edit : bonjour jmd

Petit déterrage de topic Steelson.

j'ai une problématique avec ta macro as tu un peu de temps pour moi ?

"j'ai un message d'erreur "la méthode paste du worksheet à echoué " (message disponible en fichier joint)

je te laisse un exemple de fichier uniquement la colonne A est suffisante pour engendrer l'erreur

est-il possible de choisir l'extension de la sauvegarde ? j'ai besoin que le fichier soit en CSV en sortie

Merci d'avance super outil au passage

Joyce

erreur v1 erreur
116classeur-test.xlsx (30.30 Ko)

Je n'ai eu aucune erreur !

Tu as bien choisi A comme critère de fragmentation ?

capture d ecran 597

J'ai de beaucoup simplifié le code depuis ...

https://www.excel-pratique.com/fr/telechargements/utilitaires/dispatcher-compiler-excel-no466

Pour le csv, je regarde.

en CSV

en CSV

Merci @steelson pour ton retour.

je regarde et reviens vers toi rapidement

mille mercis

Joyce

Merci pour ton retour

si le champ du dispatching est une date cela engendre une erreur sur les deux outils une idée ? si la correction peut etre faite sur les deux outils je suis preneuse

Merci en tout cas

As-tu un fichier même simplifié ?

Peux-tu préciser où se trouve cette erreur ...

As-tu un fichier même simplifié ?

Peux-tu préciser où se trouve cette erreur ...

Absolument

si joint un fichier avec seulement une ligne

cela concerne par exemple la colonne en jaune (colonne F)

Merci

PS: après réflexion c'est surement le nommage du fichier de sortie qui pose problème car celui ci ne peut contenir de "/ " je suppose peut être mettre une variable si c'est une date alors mettre des tirets

Joyce

PS: après réflexion c'est surement le nommage du fichier de sortie qui pose problème car celui ci ne peut contenir de "/ " je suppose peut être mettre une variable si c'est une date alors mettre des tirets

Hé oui ! sans doute.

Dans le nom remplace la date par ...

format(__la_date___,"yyyy-mm-dd")

PS: après réflexion c'est surement le nommage du fichier de sortie qui pose problème car celui ci ne peut contenir de "/ " je suppose peut être mettre une variable si c'est une date alors mettre des tirets

Hé oui ! sans doute.

Dans le nom remplace la date par ...

format(__la_date___,"yyyy-mm-dd")

Merci pour tes retours

je continue mes recherches car la colonne qui me sert de critère est une date et c'est l'information du critère qui est reprise dans le nom de chaque fichier

si j'ai plusieurs dates

le fichier numero 1 en sortie va se nommer dispatcher avec modèle puis compiler_31/12/2019

le fichier numéro 2 en sortie va se nommer dispatcher avec modèle puis compiler_31/11/2019

c'est cela qui crée l'erreur je ne sais pas si il est possible à l'enregistrement du nom du fichier d'interdire les "/" ou de remplacer par autre chose

je ne sais pas si mon indication est compréhensible ou si c'est corrigeable

Merci à toi

Joyce

Fais ceci :

        wb.SaveAs (MonRepertoire & "\" & racine & "_" & Format(cle1, "yyyy-mm-dd") & ".csv"), FileFormat:=xlCSV, local:=True
        wb.Close SaveChanges:=False

n'oublie le fileformat sinon en ouverture excel va hurler !

Résultat =

Fais ceci :

        wb.SaveAs (MonRepertoire & "\" & racine & "_" & Format(cle1, "yyyy-mm-dd") & ".csv"), FileFormat:=xlCSV, local:=True
        wb.Close SaveChanges:=False

n'oublie le fileformat sinon en ouverture excel va hurler !

Résultat =

Merci c'est parfait

problème résolu pour ma part

Dernier petit probleme ensuite promis je ne t'embetes plus ^^

si mon fichier est consequent de l'ordre de 500k lignes

j'ai le message suivant

Erreur 6 dépassement de capacité

aucune variable dans ton code ne contient INTEGER pourtant une idée ?

Joyce

capture100
Rechercher des sujets similaires à "decouper fichier xls fichiers critere"