Creation nouveau classeur et ajout de "n" feuille

keepcool183

XLDnaute Occasionnel
Bonjour à tous,

Je reviens vers vous chers forumeurs pour corriger et compléter un bout de code.

Alors voila ce que je veux faire :

- A partir d'une listbox j'alimente une feuille modèle.
- Crée un nouveau classeur
- Pour chaque élément de la list copier la feuille modèle dans le nouveau classeur.

avec le code suivant j'arrive à créer les feuilles et mais dans le classeur de travail :confused:

Code:
With Me.ListV
       For L = 0 To .ListCount - 1
       Range("D15").Value = .List(L)
        copie2

Sub copie2()
Dim MODELE As Worksheet
Set MODELE = Sheets("rendu 2")
Application.ScreenUpdating = False
For i = 1 To Range("j7").Value
Destination = ActiveWorkbook.Name
MODELE.Copy After:=Workbooks(Destination).Sheets(Workbooks(Destination).Sheets.Count)
ActiveSheet.Name = "Transfert" & i
Next
Application.ScreenUpdating = True
End Sub

Merci à ceux qui me liront :)
 

skoobi

XLDnaute Barbatruc
Re : Creation nouveau classeur et ajout de "n" feuille

Bonjour,

A tester:

Code:
Sub copie2()
Dim MODELE As Worksheet, NewWb As Workbook
Set MODELE = Sheets("rendu 2")
Application.ScreenUpdating = False
Set NewWb = Workbooks.Add
For i = 1 To MODELE.Range("j7").Value
MODELE.Copy After:=NewWb.Sheets(NewWb.Sheets.Count)
ActiveSheet.Name = "Transfert" & i
Next
End Sub

Cela suppose que tu récupères la valeur de J7 de la feuille "rendu 2".
 

keepcool183

XLDnaute Occasionnel
Re : Creation nouveau classeur et ajout de "n" feuille

Bonjour Skoobi,

Merci pour la réponse.

Le code marche j'arrive à créer un nouveau classeur avec les feuilles concernées.

2 problèmes à ce niveau :
- Le nouveau classeur contient déjà des feuilles par défaut (feuil1, feuil2, etc)
- COmme dans la feuille "rendu 2" les champs était renseigné avec des formules j'ai des #N/A un peu partoutg essayé avec :

ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues

MAis ça ne change rien :D
 

keepcool183

XLDnaute Occasionnel
Re : Creation nouveau classeur et ajout de "n" feuille

Re,

Je post car je viens de ressayer sur un autre fichier et comme par hasard ça marche.

Je pense que c'est à cause des formules que le collage spécial valeur ne marche pas vu que j'utilise la formule "indirect" pour transformer une cellule en nom de feuille.

Enfin bon je pense que ça vient de la :(

EDIT : une idée?
 
Dernière édition:

keepcool183

XLDnaute Occasionnel
Re : Creation nouveau classeur et ajout de "n" feuille

Bonjour Skoobi, le forum,

D'habitude je joins toujours un bout de fichier mais la c'est assez dur pour moi (confidentialité :p)

en tous cas j'ai modifié le code et j'arrive à enlever les #NA mais toujours en ayant un classeur par feuille.

Code:
Set MODELE = Sheets("rendu 2")
With Me.ListV
       For L = 0 To .ListCount - 1
       Range("D15").Value = .List(L)
           ' On Error Resume Next
 Application.ScreenUpdating = False
For i = 1 To MODELE.Range("j7").Value
    Set NewWb = Workbooks.Add
    NewWb.Activate
    MODELE.Range("A1:P64").Copy after:=NewWb.Sheets(NewWb.Sheets.Count)
       ActiveSheet.Paste
       Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
       Selection.PasteSpecial Paste:=xlPasteColumnWidths
  
   ActiveSheet.Name = "Transfert" & i
Next
Next L
End With
Unload Me
Application.ScreenUpdating = True
End Sub

Quand j'ajoute au code "copy after" il bug :(
 

skoobi

XLDnaute Barbatruc
Re : Creation nouveau classeur et ajout de "n" feuille

Re bonjour,

A tester, mes remarques en gras:

Code:
Application.ScreenUpdating = False
[B][COLOR=blue]'il faut créer le fichier en dehors de la boucle si tu veux qu'un seul fichier[/COLOR][/B]
Set NewWb = Workbooks.Add
For i = 1 To MODELE.Range("j7").Value
[B][COLOR=blue]'d'abord on cré la feuille[/COLOR][/B]
MODELE.Copy after:=NewWb.Sheets(NewWb.Sheets.Count)
ActiveSheet.Name = "Transfert" & i
[B][COLOR=blue]'ensuite on copie les données[/COLOR][/B]
MODELE.Range("A1:P64").Copy
ActiveSheet.Range("A1:P64").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
ActiveSheet.Range("A1:P64").PasteSpecial Paste:=xlPasteColumnWidths
Next
 

keepcool183

XLDnaute Occasionnel
Re : Creation nouveau classeur et ajout de "n" feuille

Re Skooby,

Merci :) Ton code marche j'arrive à copier la feuille avec les valeurs et à créer un nouveau classeur avec le nombre de feuille nécessaire.

Par contre il m'arrive un truc bizarre c'est que je me retrouve toujours avec une feuille en plus ("rendu 2").

Est il possible aussi que le nouveau classeur ne contienne pas les feuilles par défaut (feuil1, 2 ,3) ;)

Merci encore :p
 

skoobi

XLDnaute Barbatruc
Re : Creation nouveau classeur et ajout de "n" feuille

Re,

Re Skooby,

Par contre il m'arrive un truc bizarre c'est que je me retrouve toujours avec une feuille en plus ("rendu 2").
Difficile de s'imaginer ce qu'il se passe sans le fichier.


Est il possible aussi que le nouveau classeur ne contienne pas les feuilles par défaut (feuil1, 2 ,3) ;)
Ajoutes ceci à la fin du code:
Code:
Application.DisplayAlerts = False
For i = 3 To 1 Step -1
NewWb.Sheets(i).Delete
Next
Application.DisplayAlerts = true
 

keepcool183

XLDnaute Occasionnel
Re : Creation nouveau classeur et ajout de "n" feuille

Re Skoobi,

Tout d'abord merci de suivre le fil. Je sais que c'est pas évident sans fichier :p

Ce que je veux dire c'est que par exemple si je veux copier mon MODELE 2 fois à la fin je n'est pas 2 feuilles mais 3.

La 3e feuille étant une copie du modèle avec le même nom ("rendu 2").

je pense que ça vient du :

MODELE.Copy after:=NewWb.Sheets(NewWb.Sheets.Count)
 

skoobi

XLDnaute Barbatruc
Re : Creation nouveau classeur et ajout de "n" feuille

Je te conseille d'exécuter la macro en pas à pas pour comprendre ce qu'il se passe en réalité.Parfois, entre ce que l'on souhaite faire et le résultat obtenu...

Pense d'abord à désactiver:
Application.ScreenUpdating = False
 

keepcool183

XLDnaute Occasionnel
Re : Creation nouveau classeur et ajout de "n" feuille

Bonjour Skoobi :)

Ben en fin de compte comme je n'arrive toujours pas à une solution je te joins un bout du fichier super simplifié en espérant que tu y verra plus clair ;).

Cijoint.fr - Service gratuit de dépôt de fichiers

Donc le soucis c'est que :

1- Au lieu d'avoir que les feuilles désigné dans le nouveau classeur j'en est une de plus et les feuilles sont dans le mauvais ordre :(
2- je n'arrive pas à avoir que les valeurs ce qui crée des #NA.

Encore une fois MERCI :p
 

skoobi

XLDnaute Barbatruc
Re : Creation nouveau classeur et ajout de "n" feuille

Re bonjour,

ceci devrait marcher, les premiers tests sont ok:

Code:
Sub copie2()
  Dim MODELE As Worksheet, NewWb As Workbook
  Application.ScreenUpdating = False
  Set MODELE = Sheets("rendu 2")
  Set NewWb = Workbooks.Add
  For i = 1 To MODELE.Range("j7").Value
    MODELE.Copy after:=NewWb.Sheets(NewWb.Sheets.Count)
    ActiveSheet.UsedRange.Value = MODELE.UsedRange.Value
    ActiveSheet.Name = "Véhicule" & i
  Next
  Application.DisplayAlerts = False
  NewWb.Sheets(Array(1, 2, 3)).Delete
  Application.DisplayAlerts = True
End Sub
 

keepcool183

XLDnaute Occasionnel
Re : Creation nouveau classeur et ajout de "n" feuille

Re Skoobi,

Le code marche, il résout le 2e point que j'ai cité (les erreurs).

Par contre les feuilles ne correspondent pas aux données càd que la feuille véhicule 3 par exemple contient les données du 2 :( .

Peux tu y jeter un oeil ? :p

en te remerciant :)
 

Discussions similaires

Statistiques des forums

Discussions
312 594
Messages
2 090 090
Membres
104 373
dernier inscrit
rayanabd