Incrémentation de feuille dans un nouveau classeur

Bonjour,

J'ai un classeur excel qui me permet de gérer des stocks. A la fin de chaque jour, une de mes feuilles contient un résumé de la journée. J'aimerais copier cette feuille résumé (si possible uniquement un nombre de colonne limité, c'est à dire uniquement les 5 premières) dans un autre classeur qui reprendrait tous ces résumés.

Je suis parvenu à faire la sauvegarde sur un nouveau classeur, mais ce que j'aimerais c'est que les nouvelles données se mettent à chaque fois sur la même feuille du nouveau classeur, à la suite l'une de l'autre et ne crée pas à chaque fois un nouveau fichier.

Donc concrètement, le 1er février j'ai un classeur avec ma feuille résumé X, le 2 février une feuille Y , etc. J'aimerais que mon nouveau classeur résumé ne comprenne qu'une seule feuille avec X suivi de Y suivi de Z, etc.

J'utilise un bouton pour cette application sauvegardée donc il me faudrait une macro, mais je ne m'y connais pas assez pour la faire moi même.

Merci de votre aide

Salut,

Quels sont les noms exacts de:

  • Ton fichier de stock quotidien
  • Ta feuille résumé dans ce fichier
  • Ton fichier résumé général
  • Ta feuille résumé dans ce fichier.

Par soucis de confidentialité je vais mettre de faux noms que j'adapterai par la suite

Mon fichier de stock quotidien s'appelle "stock_jj_mm_aa" (avec jj_mm_aa la date)

Ma feuille la dedans s'appelle "résumé sorties"

Mon fichier résumé général s'appelle "résumé"

Et ma feuille la dedans s'appelle "synthèse"

Merci !

ça roule je regarde ça et je te fais une petite proposition dès que je peux.

Merci beaucoup !

Et voilà un petit code à tester (impossible chez moi car pas de fichier exemple)

Tiens moi au jus!

Option Base 1
Option Explicit

Sub copie_resume()

Dim i As Integer
Dim Ligres As Integer
Dim Ligstock As Integer
Dim Datstock As String

Workbooks(stock_jj_mm_aa).Activate
Datstock = Split(ActiveWorkbook.Name, "_")(2) & "/" & Split(ActiveWorkbook.Name, "_")(3) & "/" & Split(ActiveWorkbook.Name, "_")(4)

Sheets("résumé sorties").Activate
Ligstock = ActiveSheet.UsedRange.Rows.Count

Range("A2:E" & Ligstock).Select
Selection.Copy

Workbooks("résumé").Sheets("synthèse").Activate
Ligres = ActiveSheet.UsedRange.Rows.Count

Range("A" & Ligres + 1).Select
ActiveSheet.Paste

Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

For i = Ligres + 1 To Ligres + 1 + Ligstock
    Cells(i, 1).value = Datstock
Next i

End Sub

Merci je test ça !

Le code je le mets dans mon fichier stock ou dans mon fichier résumé ?

Stock

Ca n'a pas l'air de marcher :/

Sinon j'ai réussi à trouver et un peu modifier un code ailleurs et ça fonctionne presque à un petit détail près.

Voilà mon code :

Sub Import()

Dim principal As ThisWorkbook

Dim repertoire As String, fichier As String

Application.ScreenUpdating = False

Set principal = ThisWorkbook

repertoire = "C:\Users\btombal\xxx"

ChDir repertoire

fichier = Dir("*.xlsm")

Do While fichier <> ""

If fichier <> principal.Name Then

Workbooks.Open fichier

On Error GoTo suivant

With Sheets("résumé sorties")

On Error GoTo 0

On Error Resume Next

.[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete

.[A:A].Insert Shift:=xlToRight

.Range("A1:A" & .[b65536].End(xlUp).Row) = Left(fichier, Len(fichier) - 4)

.UsedRange.EntireRow.Copy Destination:=principal.Sheets(1).[a65536].End(xlUp).Offset(1)

End With

ActiveWorkbook.Close False

End If

suivant:

If Err.Number = 9 Then MsgBox "Pas de feuille ""synth"" dans le fichier " & fichier, vbExclamation: ActiveWorkbook.Close False

fichier = Dir

Loop

End Sub

Le seul soucis c'est que j'aimerais copier les valeurs de mes autres excel et pas les formules. En effet étant donné que j'ai 50 lignes par fichier et qu'il me copie donc 50 lignes, lorsque j'arrive au fichier 2 je commence à la ligne 51 dans mon fichier résumé; mais comme ce code me copie la formule, il prend la formule ligne 51 du fichier 2 et les valeurs de mes cellules à partir du fichier 2 sont donc 0 partout.

Je ne sais pas si c'est très claire :/

essayes un collage spécial valeurs:

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Que j'ajoute où dans mon code ?

(Désolé je suis vraiment super débutant )

Bon c'est difficile de répondre sans avoir le fichier mais remplace ça:

.UsedRange.EntireRow.Copy Destination:=principal.Sheets(1).[a65536].End(xlUp).Offset(1)
End With

Par ça:

    .UsedRange.EntireRow.Copy

    End With

    principal.Sheets(1).[a65536].End(xlUp).Offset(1).Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Je pense que c'est ok, le problème c'est que mon fichier est trop gros et qu'il n'arrive pas à tout copier, mais je vais trouver une solution ! Merci beaucoup pour ton temps !

Petit conseil si le problème c'est la taille du fichier, enregistres le en .xlsb

Espérant que ça va t'aider.

Rechercher des sujets similaires à "incrementation feuille nouveau classeur"