Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copier onglets sans formules et en deux classeur différents

  • Initiateur de la discussion Initiateur de la discussion susaita
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

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

Merci beaucoup JOB, je t'en serai reconnaissant toute ma vie....
a quoi sert cadrer la cellule sélectionnée A1 avec Application.Goto ???

Cordialement,
Susaita
 
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

Dernière modification par un modérateur:
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

Dernière édition:
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:
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 🙄

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+
 
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.
 
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

Dernière modification par un modérateur:
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

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
    44.9 KB · Affichages: 42
  • Sans titre.jpg
    44.9 KB · Affichages: 37
  • Sans titre 2.jpg
    78.2 KB · Affichages: 36
  • Sans titre 2.jpg
    78.2 KB · Affichages: 39
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
489
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…