Incrémentation de feuille dans un nouveau classeur Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
m
martinfebrap
Jeune membre
Jeune membre
Messages : 15
Inscrit le : 31 janvier 2017
Version d'Excel : 2013 FR

Message par martinfebrap » 1 février 2017, 08:54

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 :)
n
nono78
Membre habitué
Membre habitué
Messages : 111
Inscrit le : 5 janvier 2017
Version d'Excel : 2010 FR

Message par nono78 » 1 février 2017, 15:05

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.
m
martinfebrap
Jeune membre
Jeune membre
Messages : 15
Inscrit le : 31 janvier 2017
Version d'Excel : 2013 FR

Message par martinfebrap » 1 février 2017, 15:08

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 !
n
nono78
Membre habitué
Membre habitué
Messages : 111
Inscrit le : 5 janvier 2017
Version d'Excel : 2010 FR

Message par nono78 » 1 février 2017, 15:11

ça roule je regarde ça et je te fais une petite proposition dès que je peux.
m
martinfebrap
Jeune membre
Jeune membre
Messages : 15
Inscrit le : 31 janvier 2017
Version d'Excel : 2013 FR

Message par martinfebrap » 1 février 2017, 15:13

Merci beaucoup !
n
nono78
Membre habitué
Membre habitué
Messages : 111
Inscrit le : 5 janvier 2017
Version d'Excel : 2010 FR

Message par nono78 » 1 février 2017, 15:34

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

m
martinfebrap
Jeune membre
Jeune membre
Messages : 15
Inscrit le : 31 janvier 2017
Version d'Excel : 2013 FR

Message par martinfebrap » 1 février 2017, 15:36

Merci je test ça !
Le code je le mets dans mon fichier stock ou dans mon fichier résumé ?
n
nono78
Membre habitué
Membre habitué
Messages : 111
Inscrit le : 5 janvier 2017
Version d'Excel : 2010 FR

Message par nono78 » 1 février 2017, 15:41

Stock
m
martinfebrap
Jeune membre
Jeune membre
Messages : 15
Inscrit le : 31 janvier 2017
Version d'Excel : 2013 FR

Message par martinfebrap » 1 février 2017, 15:45

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 :/
n
nono78
Membre habitué
Membre habitué
Messages : 111
Inscrit le : 5 janvier 2017
Version d'Excel : 2010 FR

Message par nono78 » 1 février 2017, 16:03

essayes un collage spécial valeurs:
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message