Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

Loka

XLDnaute Nouveau
Bonjour à tous,
Dans le cadre d'un stage en contrôle de gestion je me lance dans un projet.
Dans un premier temps :

Pour faire bref, je synthétise TOUTES les factures de chaque mois, dans une feuille base de données d'un autre fichier.
Les factures sont mises dans un fichier client avec une feuille par mois.

En 1 : Arriver à faire l'extraction.

En 2 : J'aimerai créer un bouton sur le fichier de mon projet qui met à jour la BDD. (en gros l'ensemble des factures)
La mise à jour consiste simplement en l'ajout des nouvelles feuilles MOIS.
Est-il possible de créer un code pour qu'automatiquement excel aille chercher TOUTES les feuilles d'un classeur et qu'il les fusionne dans une BDD?

Merci d'avance,
Si besoin je peux vous envoyer le fichier, cependant ce sera en MP à des posteurs actifs. (assez confidentiel.)

Merci beaucoup, je suis un peu dépendant de vous la !
 

don_pets

XLDnaute Occasionnel
Re : Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

'llo,

Pour t'aider au mieux, peux tu m'éclairer sur quelques points :
- Tu importes tes fichiers dans un seul onglet ? du genre les uns à la suite ?
- Tu importes dans différents onglets ?

L’idéal serait, il est vrai d'avoir un fichier d'exemple, afin d’affiner le code
 

Modeste

XLDnaute Barbatruc
Re : Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

Bonjour Loka,

(Je précise que ça sera utiliser par le directeur, le but est donc de faire quelque chose très simple à l'utilisation/MAJ)
Voilà qui est flatteur pour le cher homme :rolleyes:

Plus sérieusement, avec une demande comme celle-là, tu aurais tout intérêt à relire la Charte et particulièrement l'article suivant:
5 – La possibilité de joindre des fichiers est donnée sur ce forum. Ne pas hésiter à utiliser cette fonction, tout en veillant que les données soient bidons et donc qu’aucune donnée confidentielle, nominative ne soit dans le fichier.
Crée pour l'occasion, un fichier qui reprendra la structure de ton fichier "de base" et celui avec la "base de données" ... 2-3 mois avec chacun une vingtaine de lignes devraient suffire.

Précise s'il y a des cas de figure particuliers ... et démarrons avec ça (même si je ne suis pas certain de pouvoir aider, je suis par contre persuadé que sans fichier, tu risques de n'avoir que peu de réponses!)

[Edit:] bonjour don_pets, désolé pour la collision!
 

Loka

XLDnaute Nouveau
Re : Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

Hum,
En fait l'idée finale c'est de créer un TCD automatisé (je sais faire), du coup il sera plus simple qu'il puisse (pour la partie facture) dans un onglet (qui réunit tous les mois, plutôt que dans tous les onglets).

Ce qui serait bien serait donc d'importer les onglets mois dans UN onglet, tous à la suite, en omettant la première ligne de chaque feuille (titres colonnes) après je sais qu'il y a des espaces dans mes onglets mois, est-ce que ça va abimer?

Je t'envoie en MP le fichier que tu vois ;)

Voilà qui est flatteur pour le cher homme

C'est plus dans l'idée : Il veut un truc rapide et pratique, il est déjà overbooké !

Je vous envoie un fichier modifié ;)
 

Loka

XLDnaute Nouveau
Re : Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

Voilà le fichier exemple :
-Au fur et à mesure des mois des onglets sont ajoutés.
-Comme vous pouvez le voir, c'est un peu moche.
-Il y a des sauts de ligne, des lignes de séparations toutes bleues.

Je ne vais pas refaire le format de ces fichiers (le but est de ne pas bousculer les habitudes)...

Le but
Prendre tous ces onglets et les ramener automatiquement dans un même onglet sur un autre fichier.

Ou alors créer un tableau qui vient puiser dans ces onglets mais qui peut automatiquement puiser dans les nouveaux onglets. (on verra après)

Merci d'avance :)
 

Pièces jointes

  • Règlements Clients exemple.xlsx
    46.1 KB · Affichages: 52
  • Règlements Clients exemple.xlsx
    46.1 KB · Affichages: 55
  • Règlements Clients exemple.xlsx
    46.1 KB · Affichages: 58

don_pets

XLDnaute Occasionnel
Re : Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

Yep,

Alors voici un début de solution :

ce qui était ennuyeux c'est ton histoire de tableau avec des lignes (a-t-on idée ??). L'idée générale, tu crées un on glet temp dans lesquel tu colles tout un onglet, genre juillet, ensuite tu shootes les lignes vierges, tu copies ce résultat dans un onglet de synthèse, ensuite tu prends le mois suivant et youpi tralala.

What do you think about it, c'est bricole girl mais ça marche ^^

(ps pour info j'ai crée un onglet "index" dans lequel j'ai crée ma macro

Code:
    ' Juillet
        
        ' Création fichier temp
Set NewFeuil = Worksheets.Add(Sheets(1))
NewFeuil.Name = " temp"

        ' Copie / Colle feuille

Sheets("juillet").Activate
Sheets("juillet").Cells.Select
Selection.Copy

Sheets(1).Activate
Sheets(1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

        ' Mise en forme
Sheets(1).Columns("A").Select
Selection.Delete Shift:=xlUp
Sheets(1).Range("F1:F65536").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

        ' sortie vers Synthèse
Sheets(1).Range("a1").Select
Selection.CurrentRegion.Select
Selection.Copy

Sheets("Synthèse").Activate
Sheets("Synthèse").Range("A65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

        ' Suppression Temp
Application.DisplayAlerts = False
Worksheets(1).Delete
Application.DisplayAlerts = True

Sheets("index").Select


    ' Août

        ' Création fichier temp
Set NewFeuil = Worksheets.Add(Sheets(1))
NewFeuil.Name = " temp"

        ' Copie / Colle feuille

Sheets("Août").Activate
Sheets("Août").Cells.Select
Selection.Copy

Sheets(1).Activate
Sheets(1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

        ' Mise en forme
Sheets(1).Columns("A").Select
Selection.Delete Shift:=xlUp
Sheets(1).Range("F1:F65536").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

        ' sortie vers Synthèse
Sheets(1).Range("a1").Select
Selection.CurrentRegion.Select
Selection.Copy

Sheets("Synthèse").Activate
Sheets("Synthèse").Range("A65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

        ' Suppression Temp
Application.DisplayAlerts = False
Worksheets(1).Delete
Application.DisplayAlerts = True

Sheets("index").Select
 

Loka

XLDnaute Nouveau
Re : Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

Merci pour cette solution.
Hélas, il faudrait que je puisse automatiser le tout... (Qu'en gros, le fichier final aille piocher tout seul dans les onglets (donc les nouveaux onglets) du fichier règlement.
La le fait de copié/collé dans un temp (+ devoir adapter la maccro en rajoutant des lignes pour chaque mois) ca va être trop compliqué/chiant à faire pour mon chef :/ (si j'ai bien compris)

Cependant, l'idée de créer un onglet temp est plutôt bonne.
 

don_pets

XLDnaute Occasionnel
Re : Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

je t'envoie mon fichier, afin d'être sur que nous parlions de la même chose

PS - Supprime ;le contenu de l'onglet "Synthèse" et lance la macro que tu trouveras sur "index"
 

Pièces jointes

  • Synth_Rglt_Client.xlsm
    67.7 KB · Affichages: 67
  • Synth_Rglt_Client.xlsm
    67.7 KB · Affichages: 67
  • Synth_Rglt_Client.xlsm
    67.7 KB · Affichages: 70
Dernière édition:

Loka

XLDnaute Nouveau
Re : Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

Merci pour l'exemple que je garde bien au chaud (pour la maccro de remise en forme) :
Si je ne me trompe pas le problème c'est que :
-Il faut copier les onglets "mois" à chaque fois
-Il faut rajouter dans les maccros les lignes correspondant à chaque mois (par exemple, dans ton exemple, le mois de septembre n'est pas mis dans "synthèse". Pour qu'il y soit il faudrait rajouter des lignes de codes à la main.
(Hors moi j'aimerai qu'en cliquant sur un bouton, toutes les feuilles du fichier règlement soit ramené dans le projet puis qu'en un clique sur un autre bouton, tout les onglets soient incorporés dans synthèse....)

JE ne sais pas si je suis compréhensible. :)
 

don_pets

XLDnaute Occasionnel
Re : Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

Aucun problème,

Simplement cela sous-entend que tu ne fais cette manipulation qu'une seule fois pas an.

D'abord tu rapatries les fichiers dans un seul et unique, et ensuite de ces onglets tu n'en fais qu'un seul : la synthèse.

C'est bien ça ?
 

Loka

XLDnaute Nouveau
Re : Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

Ah oui désolé mon explication de base était mauvaise...
En gros, j'aimerai qu'à tout moment de l'année mon boss puisse ouvrir le fichier, cliquer sur 2/3 boutons dans un ordre précis genre 1) Mise à jour des mois (pour les nouveaux mois) 2) Mise à jour des tcd (en incorporant les nouveaux mois)

Le but serait que mon patron puisse avoir à un moment T le montant de ses règlements clients (après ça ira un peu plus loin dans le TCD mais ça c'est pas le propos atm).
 

don_pets

XLDnaute Occasionnel
Re : Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

Hey what's up ?

Piste :

Code:
Dim WbDest As Workbook, WbSource As Workbook
Dim WksNewSheet As Worksheet
Dim NomFichier As String, Chemin As String
Dim I As Long

  Set WbDest = ActiveWorkbook

  Chemin = "ici tu mets ton chemin avec un \ à la fin"
  NomFichier = Dir(Chemin & "*.xlsX")
 
  Do While NomFichier <> ""
Set WbSource = Workbooks.Open(Chemin & NomFichier)
Set WksNewSheet = WbSource.Sheets(1)
    WksNewSheet.Activate
    WksNewSheet.Select
    WksNewSheet.Range("A1:N500").Select
   Selection.Copy
   WbDest.Activate
Sheets("synthèse").Activate
   Sheets("synthèse").Range("a1").Select
   I = Sheets("synthèse").UsedRange.Rows.Count
   Sheets("synthèse").Cells(I + 1, 1).Select
   ActiveSheet.Paste
   Application.CutCopyMode = False
   WbSource.Close
   NomFichier = Dir
 Loop
 WbDest.Activate

Sheets("synthèse").Columns("A").Select
Selection.Delete Shift:=xlUp
Sheets("synthèse").Range("F1:F65536").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
 

don_pets

XLDnaute Occasionnel
Re : Projet - Fusion de plusieurs feuilles dans un autre classeur (VBA?)

je t'envoie un fichier exemple, c'est mieux ^^
 

Pièces jointes

  • Synth_Rglt_Client.xlsm
    22.8 KB · Affichages: 48
  • Synth_Rglt_Client.xlsm
    22.8 KB · Affichages: 61
  • Synth_Rglt_Client.xlsm
    22.8 KB · Affichages: 59

Discussions similaires

Réponses
5
Affichages
163

Membres actuellement en ligne

Statistiques des forums

Discussions
312 413
Messages
2 088 199
Membres
103 763
dernier inscrit
p.michaux