Creer des fichiers excel à partir d'une base de donnée et critèr

Signaler
Messages postés
3
Date d'inscription
jeudi 4 septembre 2014
Statut
Membre
Dernière intervention
4 septembre 2014
-
YMONTE
Messages postés
3
Date d'inscription
jeudi 4 septembre 2014
Statut
Membre
Dernière intervention
4 septembre 2014
-
Bonjour,

je souhaite créer une macro me permettant de créer des fichiers excel à partir d'une base de donnée excel.
A chaque changement de nom de fournisseur dans la colonne F, il faut reprendre l'en-tête (lignes 1 à 5) et les lignes correspondante au fournisseur, les copier dans un nouveau fichier excel et nommer le fichier excel par le nom du fournisseur.

Il faudrait que la macro créée autant de fichiers qu'il existe de nom de fournisseur dans le tableau. (plus de 100 noms possibles).

Merci pour votre aide, je suis novice en Macro Excel.

4 réponses

Messages postés
27951
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2020
325
Bonjour,

je souhaite créer une macro
Bonne idée :-)

je suis novice en Macro Excel.
Il faut bien débuter un jour... on est tous passé par là.

Merci pour votre aide,
Y'a pas de quoi.... heu... encore faudrait-il qu'il y ai une QUESTION dans la description de ce que tu souhaites faire....

Pour rappel :
Merci de garder à l'esprit que CodeS-SourceS est une communauté d'entraide.

Toutes les réponses sur le forum sont assurées par des bénévoles
qui donnent de leur temps libre pour aider à résoudre les problèmes.

A noter également que nous ne faisons pas dans le "tout cuit" et ne sommes pas là pour remplacer votre moteur de recherches...
... Soit tu trouves ton bonheur dans la partie source du site, soit à l'aide de ton moteur de recherche favori.

Ici, nous aidons volontiers sur des sujets techniques précis et clairement identifiés.

Je t'invite à lire avec attention le contenu du lien suivant :
charte-de-commentcamarche-net : conseils-d-ecriture

Ainsi que celui concernant l'utilisation de la coloration syntaxique :
Utilisation des Balises de code

Merci donc de reformuler ta demande en respectant ces quelques points.

Quelques points essentiels à retenir :
- On ne pose qu' UNE question par discussion
- Le titre de la question doit refléter le souci rencontré ( Help.. SOS.. Urgent.. n'apporte aucune information utile !)
- Lorsque votre question est résolue.. merci de clore le sujet (lien Marquer comme résolu se trouvant sous le titre de votre question).
- Une question obtiendra de meilleurs réponses si elle est correctement rédigée, que les explications sont clairs et qu'éventuellement vous postez le code qui pose problème.
- Si vous avez un message d'erreur..... MARQUEZ LE (dans son intégralité).

Merci.



Messages postés
3
Date d'inscription
jeudi 4 septembre 2014
Statut
Membre
Dernière intervention
4 septembre 2014

Bonjour,

désolé si ma demande n'est pas clairement exprimée. J'ai longuement chercher sur mon moteur de recherche ainsi que sur le site mais je n'ai rien trouvé. Alors j'ai jeté une bouteille à la mer.

Ma question:

j'aimerai connaitre les codes de base (Je l'adapterai à mon besoin) pour :

1- Créer un fichier excel à partir d'un base de données Excel en reprenant l'en tête du tableau de la base de données.

2- créer une boucle dans la macro permettant de renouveler la création du fichier à chaque changement de nom de fournisseur dans le tableau.

J'aimerai poster l'exemple de mon tableau mais je ne sais pas comment faire.

Schématiquement, cela se présente ainsi :

colonne1 colonne 2 colonne 3
ligne1 En-tete
ligne2 En-tete
ligne3 En-tete
ligne4 nom fourn1
ligne5 nom fourn1
ligne6 nom fourn2
ligne7 nom fourn3


A partir de là, je souhaite que la macro extrait dans un nouveau fichier Excel dénommé

1er fichier excel:
colonne1 colonne 2 colonne 3
ligne1 En-tete
ligne2 En-tete
ligne3 En-tete
ligne4 nom fourn1

2ème fichier Excel
colonne1 colonne 2 colonne 3
ligne1 En-tete
ligne2 En-tete
ligne3 En-tete
ligne6 nom fourn2

3ème fichier excel :
colonne1 colonne 2 colonne 3
ligne1 En-tete
ligne2 En-tete
ligne3 En-tete
ligne7 nom fourn3


J'espère que vous pourrait m'aider. j'ai quelques notions mais je suis réellement incapable de démarrer la macro.

Merci pour votre aide
Messages postés
27951
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2020
325
Donc... pour reformuler ton (tes) besoin(s) :

Tu disposes d'un fichier Excel ( ta "base de données").
A partir de se fichier... tu souhaites :
- Pour chaque "nouveau" nom de fournisseur ( colonne 2) OU chaque nouveau fournisseur( colonne3) créer un nouveau classeur

créer un nouveau classeur
Workbooks.Add


- Dans ces "nouveaux" classeurs... Y mettre les mêmes en-têtes que dans le classeur source
=> voir la méthode COPY

- Puis.. y ajouter les données correspondantes ... là aussi... voir la méthode COPY

- Et pour finir... les sauvegarder : Voir
 Workbook.SaveAs   

http://msdn.microsoft.com/en-us/library/office/ff841185%28v=office.15%29.aspx


TOUS ces points ont déjà été abordés maintes fois dans ce forum et dans d'autres....



j'aimerai connaitre les codes de base
Il existe l' Enregistreur de macros... lui.. peut te permettre de générer assez facilement du code de "base"... qu'il ne te restera plus qu'à adapter.
Pour les fonctions plus "poussées"... Internet est là.... il suffit de lui mettre les bons mots clés...(mais pour ça..il faut déjà être capable de formuler correctement son besoin).
.. Il existe aussi une aide intégrée à Excel (touche F1) de ton classeur... tu y trouveras la syntaxe des fonctions et quelques exemples...


... Pour ce qui est des "BOUCLES" .. tu en as plusieurs types possibles...
La plus connues : FOR / NEXT
Tu as aussi les boucles WHILE

... pour les conditions (si Nom fournisseur <> nom fournisseur précédente ligne..) ... tu as la possibilité d'utiliser des IF / ELSE / THEN ... ou des SELECT CASE...




J'ai quelques notions mais je suis réellement incapable de démarrer la macro.

1 - Trier ta source ( ton tableau) sur le nom des fournisseurs
2 - Faire une boucle qui parcoure l'ensemble de tes lignes
2 -b - Regarder si le nom du fournisseur de la ligne actuelle est = ou <> de la précédente ligne ... Si = Ajouter la ligne dans le classeur
si <> = Sauvegarder le classeur puis le fermer... puis Créer un nouveau classeur .. y ajouter les en-têtes..y coller la ligne
...



Une autre solution (un peu plus compliquée à coder mais plus efficace je pense) c'est :
1 - Faire un Filtre sur la colonne Fournisseur
2 - Créer un nouveau classeur ..
3 - y ajouter les en-têtes
4 - Y copier/coller les lignes filtrées correspondante au fournisseur
5 - Sauvegarder puis fermer le "nouveau" classeur
6 - Passer au fournisseur suivant ( en re-filtrant )... reprendre l'étape 2...


Voilou... tu n'as plus qu'à commencer à écrire.

Messages postés
3
Date d'inscription
jeudi 4 septembre 2014
Statut
Membre
Dernière intervention
4 septembre 2014

Merci beaucoup,

je m'y mets de ce pas maintenant que j'ai un ordre à suivre et les bons codes à utiliser. Je vous tiens informer de la suite