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

susaita

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

re, Job
j'ai oublié un petit détail comme vous pouvez constater sur le fichier ci-joint
dans les fichiers exportés, je ne veux pas garder les noms qui sont créé dans le gestionnaire des noms

est ce que c'est possible de modifier le code pour que les classeurs exportés ne gardent pas les plages nommées qui se trouvent dans le gestionnaire des noms ??

Cordialement
Susaita
 

Pièces jointes

  • extraire sans formule(3).xlsm
    24.8 KB · Affichages: 51
  • extraire sans formule(3).xlsm
    24.8 KB · Affichages: 54

job75

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

Re,

Il suffit d'ajouter une boucle supprimant les noms définis.

J'en profite pour cadrer la cellule sélectionnée A1 avec Application.Goto :

Code:
Sub CreerFichier(F1 As Object, F2 As Object, copie As Boolean)
Dim n As Name
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
    Application.Goto .ActiveSheet.[A1], True 'cadre la cellule
  End If
  F1.Activate: Application.Goto F1.[A1], True 'cadre la cellule
  For Each n In .Names 'supprime les noms définis
    n.Delete
  Next
  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 (4).

A+
 

Pièces jointes

  • extraire sans formule(4).xlsm
    26.9 KB · Affichages: 42

susaita

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

re JOB,
en appliquant le code sur mon fichier d'origine ci-joint il plante et ne marche pas
je ne sais pas pourquoi ??
 

Pièces jointes

  • Facture 2.zip
    162.6 KB · Affichages: 50
Dernière modification par un modérateur:

job75

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

Re,

Le bug provient de noms définis masqués commençant par _xlfn.

Ils sont dus aux fonctions SIERREUR et SOMME.SI.ENS.

On ne peut pas les supprimer par macro dans les fichiers créés.

Mais heureusement ensuite ils disparaissent tout seuls car on a supprimé les formules !

Ci-joint votre fichier avec la macro complétée :

Code:
Sub CreerFichier(F1 As Object, F2 As Object, copie As Boolean)
Dim n As Name
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.DrawingObjects.Delete
    .ActiveSheet.UsedRange = F2.UsedRange.Value 'supprime les formules
    Application.GoTo .ActiveSheet.[A1], True 'cadre la cellule
  End If
  Application.GoTo F1.[A1], True 'cadre la cellule
  For Each n In .Names 'supprime les noms définis
    n.Visible = True 'facultatif, juste pour vérifier dans les fichiers créés
    If Not n.Name Like "_xlfn.*" Then n.Delete
  Next
  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
Nota : avec Application.Goto l'instruction F1.Activate était inutile.

A+
 

Pièces jointes

  • Facture 2(1).xlsm
    209.8 KB · Affichages: 119
Dernière édition:

susaita

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

re Job,
il y'a toujours une erreur que je rencontre quand je clique sur le bouton ajouter un mois dans l'onglet fevrier-2015 un onglet mars-2015 se crée et quand je retourne sur l'onglet donnée j'ai un message d'erreur..je ne sais pas ça provient d'ou ?
 
Dernière modification par un modérateur:

job75

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

Re,

Dites on va passer en revue toutes vos macros ? Plus rien à voir avec ce fil :rolleyes:

Et vous devriez savoir que la macro NewMonth_Sheet protège la feuille.

Utilisez donc :

Code:
Private Sub Worksheet_Activate()
Dim w As Worksheet
For Each w In Worksheets
  If IsDate(w.Name) Then
    w.Unprotect
    w.[A10:N1000].Sort w.[A10], Header:=xlNo
    w.Protect
  End If
Next
End Sub
A+
 

job75

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

Re,

Et les dé-protections créant des sauts d'écran utilisez donc :

Code:
Private Sub Worksheet_Activate()
Dim w As Worksheet
For Each w In Worksheets
  If IsDate(w.Name) Then
    w.Protect UserInterfaceOnly:=True
    w.[A10:N1000].Sort w.[A10], Header:=xlNo
  End If
Next
End Sub
Bonne soirée.
 

susaita

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

re,
oui je l'ai remarqué,
par contre si je veux par exemple que le code exporte juste la facture + Mois sans ODA que faire s'il vous plait ??
parce que je viens de me rendre compte que je dois exporter juste l'onglet Facture et l'onglet du mois sans ODA..

ci-joint le dernier fichier à jour

Bonne fin de soirée

Cordialement,
Susaita
 

Pièces jointes

  • Facture 3.zip
    196.7 KB · Affichages: 37
Dernière modification par un modérateur:

job75

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

Bonjour susaita, le forum,

J'ai étudié de plus près votre fichier.

Contrairement à ce que vous disiez au post #1, ce n'est pas le dernier onglet qu'il faut utiliser pour l'exportation.

Mais le mois indiqué dans la cellule B14 de l'onglet "Facture" ou B1 de l'onglet "ODA".

Par ailleurs il faut aussi supprimer les flèches de validation dans les fichiers créés.

Les macros modifiées :

Code:
Sub ExporterLaFacture()
With ThisWorkbook
  If IsDate(.Sheets("Facture").[B14]) Then _
    CreerFichier .Sheets("Facture"), .Sheets(CStr(.Sheets("Facture").[B14])), True
End With
End Sub

Sub CreerFichier(F1 As Object, F2 As Object, copie As Boolean)
Dim n As Name
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier a déjà été créé
F1.Copy
With ActiveWorkbook
  .ActiveSheet.UsedRange = F1.UsedRange.Value 'supprime les formules
  Set F1 = .ActiveSheet
  F1.DrawingObjects.Delete
  F1.Cells.Validation.Delete 'flèches de validation
  If copie Then
    F2.Copy After:=F1
    With .ActiveSheet
      .Protect mdp, UserInterfaceOnly:=True 'voir le module MotDePasse
      .UsedRange = F2.UsedRange.Value 'supprime les formules
      .DrawingObjects.Delete
      .Cells.Validation.Delete 'flèches de validation
      Application.GoTo .[A1], True 'cadre la cellule
    End With
  End If
  Application.GoTo F1.[A1], True 'cadre la cellule
  For Each n In .Names 'supprime les noms définis
    n.Visible = True 'facultatif, juste pour vérifier dans les fichiers créés
    If Not n.Name Like "_xlfn.*" Then n.Delete
  Next
  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
Le mot de passe mdp est paramétrable dans le module "MotDePasse".

Je l'ai aussi introduit dans les macros qui modifient les feuilles des mois.

Ci-joint le nouveau fichier.

Bonne journée.
 

Pièces jointes

  • Facture 3(1).xlsm
    279.1 KB · Affichages: 54

susaita

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

Bonjour Job,
vous avez raison dans ce que vous avez dit c'est B14 et B1 qu'il faut utiliser mais ça revient au même mais c'est mieux comme ça par contre le dernier fichier que vous venez de m'envoyer quand je clique sur exporterfacture me donne une erreur comme indiqué sur l'image ci-jointe
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    44.9 KB · Affichages: 38
  • Sans titre.jpg
    Sans titre.jpg
    44.9 KB · Affichages: 33
  • Sans titre 2.jpg
    Sans titre 2.jpg
    78.2 KB · Affichages: 32
  • Sans titre 2.jpg
    Sans titre 2.jpg
    78.2 KB · Affichages: 35
Dernière modification par un modérateur:

Discussions similaires

Statistiques des forums

Discussions
312 779
Messages
2 092 045
Membres
105 167
dernier inscrit
JulJon2004