Copier onglets sans formules et en deux classeur différents

susaita

XLDnaute Occasionnel
bonjour à tous,

sur l'exemple ci-joint je souhaite avoir un code qui me permet d'extraire dans un nouveau classeur et sans formule l'onglet Facture et le dernier onglet du fichier c'est à dire Mars-2016 sans les macros ni les boutons, ce premier classeur prendra comme nom Facture Mars 2016. et le même code extraira sur un 2ème classeur l'onglet ODA qui prendra comme nom ODA Mars-2016 (les deux classeurs produits seront sauvegardé sur le bureau).

et si par exemple je rajoute un autre mois par la suite (Avril-2016) et je clique sur ce code il extraira l'onglet Facture + l'onglet avril-2016 sur un classeur et l'onglet classeur ainsi de suite.

Merci d'avance
 

Pièces jointes

  • extraire sans formule.xlsx
    13.1 KB · Affichages: 57
  • extraire sans formule.xlsx
    13.1 KB · Affichages: 48

Lone-wolf

XLDnaute Barbatruc
Re : Copier onglets sans formules et en deux classeur différents

Bonjour susaita,

avant de commencer. Janvier et Février tu ne veux pas les prende en considération? Parce qu'en 2017, tu devra en faire de même pour ces deux mois.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Copier onglets sans formules et en deux classeur différents

Bonjour susaita, Lone-wolf, le forum,

Voyez le fichier joint et ces macros dans un module standard (Module1) :

Code:
Sub Bouton()
Dim s As Object, dat As Date, F As Object
For Each s In Sheets
  If IsDate(s.Name) Then _
    If CDate(s.Name) > dat Then dat = CDate(s.Name): Set F = s
Next
If dat Then
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False 'si le fichier a déjà été créé
  CreerFichier Sheets("Facture"), F
  CreerFichier Sheets("ODA"), F
End If
End Sub

Sub CreerFichier(F1 As Object, F2 As Object)
F1.Copy
With ActiveWorkbook
  Set F1 = .ActiveSheet
  F1.DrawingObjects.Delete
  F2.Copy After:=F1
  .ActiveSheet.DrawingObjects.Delete
  .ActiveSheet.[A1].Select
  F1.Activate: F1.[A1].Select
  .SaveAs ThisWorkbook.Path & "\" & F1.Name & " " & F2.Name
  .Close
End With
End Sub
Nota : j'ai corrigé le nom de la feuille "Facture", il y avait un espace à la fin :rolleyes:

Bonne journée.
 

Pièces jointes

  • extraire sans formule(1).xlsm
    26.2 KB · Affichages: 50

susaita

XLDnaute Occasionnel
Re : Copier onglets sans formules et en deux classeur différents

Bonjour Lone-wolf,
je prends pas en considérantion les mois précédents juste l'onglet facture avec l'onglet du dernier Mois dans un classeur qui sera nomé facture + noms du mois dans ce cas (facture Mars-2016)
puis un autre autre classeur avec un seul onglet c'est ODA
 

susaita

XLDnaute Occasionnel
Re : Copier onglets sans formules et en deux classeur différents

Bonjour job75,
Merci pour ta réponse ton code marche bien il y'a juste deux petites remarques :
1- le 2ème classeur doit contenir juste l'onglet ODA et non pas ODA + Facture
2- les classeurs qui se crèent au bureau je veux qu'il soient ouvert après création si c'est possible

Cordialement,
 

job75

XLDnaute Barbatruc
Re : Copier onglets sans formules et en deux classeur différents

Re, bonjour chère ânesse,

Oui susaita, un seul onglet dans le 2ème classeur, et aussi vous ne voulez pas des formules je crois :

Code:
Sub Bouton()
Dim s As Object, dat As Date, F As Object
With ThisWorkbook
  For Each s In .Sheets
    If IsDate(s.Name) Then _
      If CDate(s.Name) > dat Then dat = CDate(s.Name): Set F = s
  Next
  If dat Then
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False 'si le fichier a déjà été créé
    CreerFichier .Sheets("Facture"), F, True
    CreerFichier .Sheets("ODA"), F, False
    Application.ScreenUpdating = True
  End If
End With
Application.OnTime 1, "Activer" 'facultatif
End Sub

Sub CreerFichier(F1 As Object, F2 As Object, copie As Boolean)
F1.Copy
With ActiveWorkbook
  .ActiveSheet.UsedRange = F1.UsedRange.Value 'supprime les formules
  Set F1 = .ActiveSheet
  F1.DrawingObjects.Delete
  If copie Then
    F2.Copy After:=F1
    .ActiveSheet.UsedRange = F2.UsedRange.Value 'supprime les formules
    .ActiveSheet.DrawingObjects.Delete
  End If
  .ActiveSheet.[A1].Select
  F1.Activate: F1.[A1].Select
  On Error Resume Next 'quand le fichier n'est pas ouvert
  Workbooks(F1.Name & " " & F2.Name).Close False
  On Error GoTo 0
  .SaveAs ThisWorkbook.Path & "\" & F1.Name & " " & F2.Name
End With
End Sub

Sub Activer()
ThisWorkbook.Activate
End Sub
Fichier (2).

A+
 

Pièces jointes

  • extraire sans formule(2).xlsm
    27.4 KB · Affichages: 48

susaita

XLDnaute Occasionnel
Re : Copier onglets sans formules et en deux classeur différents

re Job,
Merci beaucoup mon ta reponse c'est exactement ce que je voulais mais une petite modification sur ce 2ème code :
les classeurs qui se crèent au bureau je ne veux plus qu'il soient ouvert je viens de constater que c'est moche
si non le reste est vraiment impec

je m'excuse pour le dérangement
 

job75

XLDnaute Barbatruc
Re : Copier onglets sans formules et en deux classeur différents

Re,

Code:
Sub Bouton()
Dim s As Object, dat As Date, F As Object
With ThisWorkbook
  For Each s In .Sheets
    If IsDate(s.Name) Then _
      If CDate(s.Name) > dat Then dat = CDate(s.Name): Set F = s
  Next
  If dat Then
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False 'si le fichier a déjà été créé
    CreerFichier .Sheets("Facture"), F, True
    CreerFichier .Sheets("ODA"), F, False
  End If
End With
End Sub

Sub CreerFichier(F1 As Object, F2 As Object, copie As Boolean)
F1.Copy
With ActiveWorkbook
  .ActiveSheet.UsedRange = F1.UsedRange.Value 'supprime les formules
  Set F1 = .ActiveSheet
  F1.DrawingObjects.Delete
  If copie Then
    F2.Copy After:=F1
    .ActiveSheet.UsedRange = F2.UsedRange.Value 'supprime les formules
    .ActiveSheet.DrawingObjects.Delete
    .ActiveSheet.[A1].Select
  End If
  F1.Activate: F1.[A1].Select
  On Error Resume Next 'quand le fichier n'est pas ouvert
  Workbooks(F1.Name & " " & F2.Name).Close False
  On Error GoTo 0
  .SaveAs ThisWorkbook.Path & "\" & F1.Name & " " & F2.Name
  .Close
End With
End Sub
Fichier (3).

A+
 

Pièces jointes

  • extraire sans formule(3).xlsm
    27.2 KB · Affichages: 45
  • extraire sans formule(3).xlsm
    27.2 KB · Affichages: 46
Dernière édition:

job75

XLDnaute Barbatruc
Re : Copier onglets sans formules et en deux classeur différents

Re,

C'est un détail mais j'ai quand même corrigé la macro du fichier (3).

.ActiveSheet.[A1].Select est plus à sa place à l'intérieur du If/End If.

A+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS