Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copier/Coller d’ onglets sur chaque nouveau classeur + boucle

5 réponses
Avatar
stormtroopertk1230
Bonjour,

J’ai un certain nombre d’onglet.
Chaque onglet est nommé.
Une liste sous l’onglet « Menu » contient le nom des onglets.
Je voudrai effectuer un Copié-collé de chaque onglet afin de créer un nouveau Classeur par onglet.
L a macro crée bien le nouveau classeur mais Beug dès qu’il fait renommer le classeur avec le Nom issu de la liste du classeur Initial « Suivi_R » d’où mon problème…
Merci de votre aide.

Var étant la liste des noms des onglets

Private Sub Création_Indiv()
Dim Var As String
Dim Mois, As Integer

For i = 11 To 28

Var = Sheets("Menu_Com").Cells(i, 4).Value
Application.ScreenUpdating = False

Sheets(Var).Select
Sheets(Var).Copy
ActiveSheets.SaveAs Filename:="I:\Suivi\" & Mois & "\" & Var & ".xlsm"

Next i

5 réponses

Avatar
isabelle
bonjour stormtroopertk1230,

modifie cette ligne
ActiveSheets.SaveAs Filename:="I:Suivi"& Mois& ""& Var& ".xlsm"

par
ActiveWorkbook.SaveAs Filename:="I:Suivi" & Mois & "" & Var & ".xlsm"

--
isabelle


Le 2011-12-09 09:49, stormtroopertk1230 a écrit :
Bonjour,

J’ai un certain nombre d’onglet.
Chaque onglet est nommé.
Une liste sous l’onglet « Menu » contient le nom des onglets.
Je voudrai effectuer un Copié-collé de chaque onglet afin de créer un nouveau
Classeur par onglet.
L a macro crée bien le nouveau classeur mais Beug dès qu’il fait renommer le
classeur avec le Nom issu de la liste du classeur Initial « Suivi_R » d’où mon
problème…
Merci de votre aide.

Var étant la liste des noms des onglets

Private Sub Création_Indiv()
Dim Var As String
Dim Mois, As Integer

For i = 11 To 28

Var = Sheets("Menu_Com").Cells(i, 4).Value
Application.ScreenUpdating = False

Sheets(Var).Select
Sheets(Var).Copy
ActiveSheets.SaveAs Filename:="I:Suivi"& Mois& ""& Var& ".xlsm"

Next i
Avatar
stormtroopertk1230
isabelle a écrit le 09/12/2011 à 15h55 :
bonjour stormtroopertk1230,

modifie cette ligne
ActiveSheets.SaveAs Filename:="I:Suivi"& Mois&
""& Var& ".xlsm"

par
ActiveWorkbook.SaveAs Filename:="I:Suivi" & Mois &
"" & Var & ".xlsm"

--
isabelle


Le 2011-12-09 09:49, stormtroopertk1230 a écrit :
Bonjour,

J’ai un certain nombre d’onglet.
Chaque onglet est nommé.
Une liste sous l’onglet « Menu » contient le nom des
onglets.
Je voudrai effectuer un Copié-collé de chaque onglet afin de
créer un nouveau
Classeur par onglet.
L a macro crée bien le nouveau classeur mais Beug dès
qu’il fait renommer le
classeur avec le Nom issu de la liste du classeur Initial « Suivi_R
» d’où mon
problème…
Merci de votre aide.

Var étant la liste des noms des onglets

Private Sub Création_Indiv()
Dim Var As String
Dim Mois, As Integer

For i = 11 To 28

Var = Sheets("Menu_Com").Cells(i, 4).Value
Application.ScreenUpdating = False

Sheets(Var).Select
Sheets(Var).Copy
ActiveSheets.SaveAs Filename:="I:Suivi"& Mois&
""& Var& ".xlsm"

Next i




Merci Isabelle, mais malheureusement, cela ne fonctionne pas :-( Erreur 1004...
Snif...
Si quelqu'un peut m'aider ? Isabelle ?

Chris.
Avatar
isabelle
bonjour Chris,

peut déposer ton fichier ici
http://www.cjoint.com/
et nous redonner le lien de téléchargement

--
isabelle


Le 2011-12-09 10:26, stormtroopertk1230 a écrit :

Merci Isabelle, mais malheureusement, cela ne fonctionne pas :-( Erreur
1004...
Snif...
Si quelqu'un peut m'aider ? Isabelle ?

Chris.
Avatar
Charles
Bonjour à tous,

Si j'ai bien compris, le problème est d'inserer des onglets et de les nommer
(en fonction d'une liste situé dans un autre onglet).

Désolé, je ne connais pas Visual Basic, mais en inserant un onglet "macro",
et en copiant ce qui suit :

¬TIVER("menu")
=SELECTIONNER("L1C1")
ÞFINIR.NOM("bof")
= TANT.QUE(bof<>"")
= INSERER.CLASSEUR()
= NOMMER.CLASSEUR(;bof)
¬TIVER("menu")
=SELECTIONNER("bof")
=SELECTIONNER("L(1)C")
ÞFINIR.NOM("bof")
=SUIVANT()


L'onglet "Menu" : liste des onglets à créer.
Dans le cas présent, la liste commence à la cellule L1C1 ou A1

Il suffit de lancer la macro en se positionnant sur ¬tiver("menu")

Les onglets se créent et se nomment très rapidement

ATTENTION :cela suppose que les onglets que l'on veut créer et nommer
n'existent pas déjà dans le classeur.
impossible de nommer un classeur si le nom existe déjà.

J'espère avoir apporté un peu d'aide

Charles



"isabelle" a écrit dans le message de
news:jbt9o6$ig1$
bonjour Chris,

peut déposer ton fichier ici
http://www.cjoint.com/
et nous redonner le lien de téléchargement

--
isabelle


Le 2011-12-09 10:26, stormtroopertk1230 a écrit :

Merci Isabelle, mais malheureusement, cela ne fonctionne pas :-( Erreur
1004...
Snif...
Si quelqu'un peut m'aider ? Isabelle ?

Chris.
Avatar
Gloops
stormtroopertk1230 a écrit, le 09/12/2011 15:49 :
Bonjour,

J’ai un certain nombre d’onglet.
Chaque onglet est nommé.
Une liste sous l’onglet « Menu » contient le nom des onglets.
Je voudrai effectuer un Copié-collé de chaque onglet afin de crée r un nouveau
Classeur par onglet.
L a macro crée bien le nouveau classeur mais Beug dès qu’il fait renommer le
classeur avec le Nom issu de la liste du classeur Initial « Suivi_R » d’où mon
problème…
Merci de votre aide.

Var étant la liste des noms des onglets

Private Sub Création_Indiv()
Dim Var As String
Dim Mois, As Integer

For i = 11 To 28

Var = Sheets("Menu_Com").Cells(i, 4).Value
Application.ScreenUpdating = False

Sheets(Var).Select
Sheets(Var).Copy
ActiveSheets.SaveAs Filename:="I:Suivi"& Mois& ""& Var& ".xlsm "

Next i



Bonjour,

Voici qui m'inspire quelques questions :
- à quoi sert Sheets(Var).Copy ?
- faut-il vraiment un s à ActiveSheets ? Pour que ça ait un sens il f aut
sélectionner plusieurs feuilles, à l'aide de la touche Ctrl pendant
qu'on les sélectionne par exemple. Syntaxe à vérifier.
- qu'y a-t-il dans la variable mois ? Où est-elle initialisée ?
Après avoir affiché le chemin complet, as-tu bien trouvé le fichier dans
l'explorateur ?

Par ailleurs, je ne me rappelle plus ce que ça donne de préférer
Sheet.Select à Sheet.Activate

J'imagine qu'un peu plus tard on n'oublie pas ScreenUpdating = True,
mais il est peu probable que ce soit le problème.