OVH Cloud OVH Cloud

Nommés des feuilles dans un classeur selon la demande

5 réponses
Avatar
BlackStorm
J'abuse mais bon...

Je suis toujours sur mon projet. J'ai donc une feuille excel qui me sert a
faire des rapports de prospection. J'ai à coté de cela, 4 feuillles appelées
feuille 2,3,4 et 5
Comment faire pour creer une macro que j'activerai par un bouton pour que
l'on me demande le nom que je veux attribuer à chaque feuille
Exemple
je clique sur le bouton
1ere Question : Avez vous besoin de feuille de saisie supplementaire ? Oui
ou Non
Si c'est non , la macro supprime les feuilles 2,3,4 et 5
Si c'est oui, la macro me demande de combien de feuille j'ai besoin
Dans ce cas imaginez que ce soit des produits : Frigo, Four, Plaque Cuisson.
.
.
Je reponds oui à la premiere question
On me demande alors combien de feuilles doivent être créees ? je reponds 2,3
ou X
La macro me crée alors 2,3 ou X feuilles
La macro doit me demander le nom que je veux donner à ces feuilles :
2 ) Frigo
3) Four... etc... et me renomer ces feuilles
Enfin, à l'intérieur des feuilles, la structure sera la meme :
1) Descriptif technique de l'appareil
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
2) Dimension de l'appareil
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
3) Remarques... divers
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
Comment faire ?

5 réponses

Avatar
michdenis
Bonsoir BlackStorm,

Essaie ceci : Attention aux lignes coupées par le service de messagerie.

Tu peux obtenir le même résultat en utilisant la gestion d'erreur.
La macro sera plus courte à écrire !

'----------------------------------
Sub AjoutFeuille()

Dim F(), A As Integer, Res As Integer
Dim SonNom As String, Nb As Integer
Dim Chaine As String
'Caractères interdits dans le nom d'une feuille
Chaine = "/*?[]:"
'31 est le nombre limite de caractères permis dans le nom d'une feuille.
Nb = Worksheets.Count

For A = 1 To Nb
ReDim Preserve F(A)
F(A) = Worksheets(1).Name
Next

Do
Res = MsgBox("Avez-vous besoin d'une feuille supplémentaire ?", _
vbInformation + vbYesNo, "Une autre feuille ?")
If Res = vbYes Then
Do
Err = 0
SonNom = Application.InputBox( _
"Baptiser votre nouvelle feuille.", , , , , , , 2)
If SonNom = "Faux" Then
MsgBox "aucune feuille ne sera ajoutée.", , "Opération annulée."
Exit Sub
Else
If Len(SonNom) > 31 Then
MsgBox "Trop de caractères pour un nom de feuille. Recommencer."
Err = 1
Else
For X = 1 To Len(Chaine)
If InStr(1, SonNom, Mid(Chaine, X, 1), vbTextCompare) <> 0 Then
MsgBox "Le nom de la feuille contient un caractère interdit. Recommencer"
Err = 1
Exit For
End If
Next
If Err = 0 Then
E = Application.Match(SonNom, F, 0)
If IsError(E) Then
Worksheets.Add after:=Sheets(Worksheets.Count)
ActiveSheet.Name = SonNom
ReDim Preserve F(A)
F(A) = SonNom
Else
MsgBox "Ce nom existe déjà. Recommencer."
Err = 1
End If
End If
End If
End If

Loop Until Err = 0
End If
Loop Until Res = vbNo

End Sub

'----------------------------------





Salutations!



"BlackStorm" a écrit dans le message de news:%
J'abuse mais bon...

Je suis toujours sur mon projet. J'ai donc une feuille excel qui me sert a
faire des rapports de prospection. J'ai à coté de cela, 4 feuillles appelées
feuille 2,3,4 et 5
Comment faire pour creer une macro que j'activerai par un bouton pour que
l'on me demande le nom que je veux attribuer à chaque feuille
Exemple
je clique sur le bouton
1ere Question : Avez vous besoin de feuille de saisie supplementaire ? Oui
ou Non
Si c'est non , la macro supprime les feuilles 2,3,4 et 5
Si c'est oui, la macro me demande de combien de feuille j'ai besoin
Dans ce cas imaginez que ce soit des produits : Frigo, Four, Plaque Cuisson.
.
.
Je reponds oui à la premiere question
On me demande alors combien de feuilles doivent être créees ? je reponds 2,3
ou X
La macro me crée alors 2,3 ou X feuilles
La macro doit me demander le nom que je veux donner à ces feuilles :
2 ) Frigo
3) Four... etc... et me renomer ces feuilles
Enfin, à l'intérieur des feuilles, la structure sera la meme :
1) Descriptif technique de l'appareil
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
2) Dimension de l'appareil
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
3) Remarques... divers
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
Comment faire ?
Avatar
BlackStorm
Merci à toi MichDenis.
La macro marche nickel.
Mais si je veux appliquer une sorte de masque dans les nouvelle feuilles,
comment je fais ? En effet ,j'ai une feuille specifique "rapport.xls" . En
fait les feuilles que je creer doivent avoir la meme presentation.

Merci d'avance




"michdenis" a écrit dans le message de news:

Bonsoir BlackStorm,

Essaie ceci : Attention aux lignes coupées par le service de messagerie.

Tu peux obtenir le même résultat en utilisant la gestion d'erreur.
La macro sera plus courte à écrire !

'----------------------------------
Sub AjoutFeuille()

Dim F(), A As Integer, Res As Integer
Dim SonNom As String, Nb As Integer
Dim Chaine As String
'Caractères interdits dans le nom d'une feuille
Chaine = "/*?[]:"
'31 est le nombre limite de caractères permis dans le nom d'une feuille.
Nb = Worksheets.Count

For A = 1 To Nb
ReDim Preserve F(A)
F(A) = Worksheets(1).Name
Next

Do
Res = MsgBox("Avez-vous besoin d'une feuille supplémentaire ?", _
vbInformation + vbYesNo, "Une autre feuille ?")
If Res = vbYes Then
Do
Err = 0
SonNom = Application.InputBox( _
"Baptiser votre nouvelle feuille.", , , , , , , 2)
If SonNom = "Faux" Then
MsgBox "aucune feuille ne sera ajoutée.", , "Opération
annulée."

Exit Sub
Else
If Len(SonNom) > 31 Then
MsgBox "Trop de caractères pour un nom de feuille.
Recommencer."

Err = 1
Else
For X = 1 To Len(Chaine)
If InStr(1, SonNom, Mid(Chaine, X, 1), vbTextCompare)
<> 0 Then

MsgBox "Le nom de la feuille contient un caractère
interdit. Recommencer"

Err = 1
Exit For
End If
Next
If Err = 0 Then
E = Application.Match(SonNom, F, 0)
If IsError(E) Then
Worksheets.Add after:=Sheets(Worksheets.Count)
ActiveSheet.Name = SonNom
ReDim Preserve F(A)
F(A) = SonNom
Else
MsgBox "Ce nom existe déjà. Recommencer."
Err = 1
End If
End If
End If
End If

Loop Until Err = 0
End If
Loop Until Res = vbNo

End Sub

'----------------------------------





Salutations!



"BlackStorm" a écrit dans le message de
news:%

J'abuse mais bon...

Je suis toujours sur mon projet. J'ai donc une feuille excel qui me sert a
faire des rapports de prospection. J'ai à coté de cela, 4 feuillles
appelées

feuille 2,3,4 et 5
Comment faire pour creer une macro que j'activerai par un bouton pour que
l'on me demande le nom que je veux attribuer à chaque feuille
Exemple
je clique sur le bouton
1ere Question : Avez vous besoin de feuille de saisie supplementaire ? Oui
ou Non
Si c'est non , la macro supprime les feuilles 2,3,4 et 5
Si c'est oui, la macro me demande de combien de feuille j'ai besoin
Dans ce cas imaginez que ce soit des produits : Frigo, Four, Plaque
Cuisson.

.
.
Je reponds oui à la premiere question
On me demande alors combien de feuilles doivent être créees ? je reponds
2,3

ou X
La macro me crée alors 2,3 ou X feuilles
La macro doit me demander le nom que je veux donner à ces feuilles :
2 ) Frigo
3) Four... etc... et me renomer ces feuilles
Enfin, à l'intérieur des feuilles, la structure sera la meme :
1) Descriptif technique de l'appareil
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
2) Dimension de l'appareil
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
3) Remarques... divers
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
Comment faire ?





Avatar
michdenis
Bonjour BlackStorm,

Essaie ceci :

Commentaires :

J'ai supposé que dans ton classeur, tu avais 4 modèles de feuilles de base que tu voulais dupliquer sur simple pression d'un
bouton.
Ces modèles s'appellent dans la procédure : Modèle1, Modèle2, Modèle3, Modèle4. Tu peux en ajouter, sauf qu'il faudra que tu
renseignes la procédure des véritables noms de tes modèles et que sa liste soit complète. Pour ce faire, tu dois modifier
ceci :

MesModèles = Array("Modèle1", "Modèle2", "Modèle3", "Modèle4")

Et dans la boîte de message(Application.InputBox), insérer le vrai nom des modèles pour le choix des usagers.

Comme les usagers ne doivent pas pouvoir modifier ou supprimer ces modèles, il serait bon que tu puisses les masquer avec
ceci :

worksheets(Modèle1).visible = xlveryhidden ' ceci pour chacun de tes modèles.

Amuse-toi bien !!!!!!!!!!!!!!!!!!!!

N.B. Ce n'est pas sûr que tu aies plus de réponses en initiant d'autres fils pour ton problème ! Il est préférable de
demeurer dans le même fil.

'----------------------------------
Sub AjoutFeuille()

Dim F(), A As Integer, Res As Variant
Dim SonNom As String, Nb As Integer
Dim Chaine As String, ActFeuil As String
Dim MesModèles()
MesModèles = Array("Modèle1", "Modèle2", "Modèle3", "Modèle4")

'Caractères interdits dans le nom d'une feuille
Chaine = "/*?[]:"
'31 est le nombre limite de caractères permis dans le nom d'une feuille.
Nb = Worksheets.Count

For A = 1 To Nb
ReDim Preserve F(A)
F(A) = Worksheets(1).Name
Next

Do
Do
Err = 0
Res = Application.InputBox("Avez-vous besoin d'une feuille supplémentaire ?" & vbCrLf & vbCrLf & _
"1. Modèle1, 2. Modèle2, 3. Modèle3, 4. Modèle4" & vbCrLf & vbCrLf & _
"Inscrivez le nom du modèle désiré à ajouter", _
"Choix du modèle à ajouter?")
If Res = "Faux" Then Exit Sub
If IsError(Application.Match(Res, MesModèles, 0)) Then
MsgBox "Faites votre sélection parmi les modèles suggérés."
Err = 1
End If
Loop Until Err = 0

Do
Err = 0
SonNom = Application.InputBox( _
"Baptiser votre nouvelle feuille.", , , , , , , 2)
If SonNom = "Faux" Then
MsgBox "aucune feuille ne sera ajoutée.", , "Opération annulée."
Exit Sub
Else
If Len(SonNom) > 31 Then
MsgBox "Trop de caractères pour un nom de feuille. Recommencer."
Err = 1
Else
For X = 1 To Len(Chaine)
If InStr(1, SonNom, Mid(Chaine, X, 1), vbTextCompare) <> 0 Then
MsgBox "Le nom de la feuille contient un caractère interdit. Recommencer"
Err = 1
Exit For
End If
Next
If Err = 0 Then
E = Application.Match(SonNom, F, 0)
If IsError(E) Then
Application.ScreenUpdating = False
ActFeuil = ActiveSheet.Name
Worksheets(Res).Visible = True
Worksheets(Res).Copy After:=Sheets(Worksheets.Count)
ActiveSheet.Name = SonNom
Worksheets(SonNom).Visible = xlVeryHidden
Worksheets(ActFeuil).Select
Application.ScreenUpdating = True
ReDim Preserve F(A)
F(A) = SonNom
Else
MsgBox "Ce nom existe déjà. Recommencer."
Err = 1
End If
End If
End If
End If
Loop Until Err = 0
Loop Until Res = vbNo

End Sub
'---------------------------


Salutations!



"BlackStorm" a écrit dans le message de news:%
Merci à toi MichDenis.
La macro marche nickel.
Mais si je veux appliquer une sorte de masque dans les nouvelle feuilles,
comment je fais ? En effet ,j'ai une feuille specifique "rapport.xls" . En
fait les feuilles que je creer doivent avoir la meme presentation.

Merci d'avance




"michdenis" a écrit dans le message de news:

Bonsoir BlackStorm,

Essaie ceci : Attention aux lignes coupées par le service de messagerie.

Tu peux obtenir le même résultat en utilisant la gestion d'erreur.
La macro sera plus courte à écrire !

'----------------------------------
Sub AjoutFeuille()

Dim F(), A As Integer, Res As Integer
Dim SonNom As String, Nb As Integer
Dim Chaine As String
'Caractères interdits dans le nom d'une feuille
Chaine = "/*?[]:"
'31 est le nombre limite de caractères permis dans le nom d'une feuille.
Nb = Worksheets.Count

For A = 1 To Nb
ReDim Preserve F(A)
F(A) = Worksheets(1).Name
Next

Do
Res = MsgBox("Avez-vous besoin d'une feuille supplémentaire ?", _
vbInformation + vbYesNo, "Une autre feuille ?")
If Res = vbYes Then
Do
Err = 0
SonNom = Application.InputBox( _
"Baptiser votre nouvelle feuille.", , , , , , , 2)
If SonNom = "Faux" Then
MsgBox "aucune feuille ne sera ajoutée.", , "Opération
annulée."

Exit Sub
Else
If Len(SonNom) > 31 Then
MsgBox "Trop de caractères pour un nom de feuille.
Recommencer."

Err = 1
Else
For X = 1 To Len(Chaine)
If InStr(1, SonNom, Mid(Chaine, X, 1), vbTextCompare)
<> 0 Then

MsgBox "Le nom de la feuille contient un caractère
interdit. Recommencer"

Err = 1
Exit For
End If
Next
If Err = 0 Then
E = Application.Match(SonNom, F, 0)
If IsError(E) Then
Worksheets.Add after:=Sheets(Worksheets.Count)
ActiveSheet.Name = SonNom
ReDim Preserve F(A)
F(A) = SonNom
Else
MsgBox "Ce nom existe déjà. Recommencer."
Err = 1
End If
End If
End If
End If

Loop Until Err = 0
End If
Loop Until Res = vbNo

End Sub

'----------------------------------





Salutations!



"BlackStorm" a écrit dans le message de
news:%

J'abuse mais bon...

Je suis toujours sur mon projet. J'ai donc une feuille excel qui me sert a
faire des rapports de prospection. J'ai à coté de cela, 4 feuillles
appelées

feuille 2,3,4 et 5
Comment faire pour creer une macro que j'activerai par un bouton pour que
l'on me demande le nom que je veux attribuer à chaque feuille
Exemple
je clique sur le bouton
1ere Question : Avez vous besoin de feuille de saisie supplementaire ? Oui
ou Non
Si c'est non , la macro supprime les feuilles 2,3,4 et 5
Si c'est oui, la macro me demande de combien de feuille j'ai besoin
Dans ce cas imaginez que ce soit des produits : Frigo, Four, Plaque
Cuisson.

.
.
Je reponds oui à la premiere question
On me demande alors combien de feuilles doivent être créees ? je reponds
2,3

ou X
La macro me crée alors 2,3 ou X feuilles
La macro doit me demander le nom que je veux donner à ces feuilles :
2 ) Frigo
3) Four... etc... et me renomer ces feuilles
Enfin, à l'intérieur des feuilles, la structure sera la meme :
1) Descriptif technique de l'appareil
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
2) Dimension de l'appareil
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
3) Remarques... divers
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
Comment faire ?





Avatar
michdenis
Une erreur s'est glissée dans le code :

Remplacer cette ligne :

F(A) = Worksheets(1).Name

Par

F(A) = Worksheets(A).Name



Salutations!




"michdenis" a écrit dans le message de news:%
Bonjour BlackStorm,

Essaie ceci :

Commentaires :

J'ai supposé que dans ton classeur, tu avais 4 modèles de feuilles de base que tu voulais dupliquer sur simple pression d'un
bouton.
Ces modèles s'appellent dans la procédure : Modèle1, Modèle2, Modèle3, Modèle4. Tu peux en ajouter, sauf qu'il faudra que tu
renseignes la procédure des véritables noms de tes modèles et que sa liste soit complète. Pour ce faire, tu dois modifier
ceci :

MesModèles = Array("Modèle1", "Modèle2", "Modèle3", "Modèle4")

Et dans la boîte de message(Application.InputBox), insérer le vrai nom des modèles pour le choix des usagers.

Comme les usagers ne doivent pas pouvoir modifier ou supprimer ces modèles, il serait bon que tu puisses les masquer avec
ceci :

worksheets(Modèle1).visible = xlveryhidden ' ceci pour chacun de tes modèles.

Amuse-toi bien !!!!!!!!!!!!!!!!!!!!

N.B. Ce n'est pas sûr que tu aies plus de réponses en initiant d'autres fils pour ton problème ! Il est préférable de
demeurer dans le même fil.

'----------------------------------
Sub AjoutFeuille()

Dim F(), A As Integer, Res As Variant
Dim SonNom As String, Nb As Integer
Dim Chaine As String, ActFeuil As String
Dim MesModèles()
MesModèles = Array("Modèle1", "Modèle2", "Modèle3", "Modèle4")

'Caractères interdits dans le nom d'une feuille
Chaine = "/*?[]:"
'31 est le nombre limite de caractères permis dans le nom d'une feuille.
Nb = Worksheets.Count

For A = 1 To Nb
ReDim Preserve F(A)
F(A) = Worksheets(1).Name
Next

Do
Do
Err = 0
Res = Application.InputBox("Avez-vous besoin d'une feuille supplémentaire ?" & vbCrLf & vbCrLf & _
"1. Modèle1, 2. Modèle2, 3. Modèle3, 4. Modèle4" & vbCrLf & vbCrLf & _
"Inscrivez le nom du modèle désiré à ajouter", _
"Choix du modèle à ajouter?")
If Res = "Faux" Then Exit Sub
If IsError(Application.Match(Res, MesModèles, 0)) Then
MsgBox "Faites votre sélection parmi les modèles suggérés."
Err = 1
End If
Loop Until Err = 0

Do
Err = 0
SonNom = Application.InputBox( _
"Baptiser votre nouvelle feuille.", , , , , , , 2)
If SonNom = "Faux" Then
MsgBox "aucune feuille ne sera ajoutée.", , "Opération annulée."
Exit Sub
Else
If Len(SonNom) > 31 Then
MsgBox "Trop de caractères pour un nom de feuille. Recommencer."
Err = 1
Else
For X = 1 To Len(Chaine)
If InStr(1, SonNom, Mid(Chaine, X, 1), vbTextCompare) <> 0 Then
MsgBox "Le nom de la feuille contient un caractère interdit. Recommencer"
Err = 1
Exit For
End If
Next
If Err = 0 Then
E = Application.Match(SonNom, F, 0)
If IsError(E) Then
Application.ScreenUpdating = False
ActFeuil = ActiveSheet.Name
Worksheets(Res).Visible = True
Worksheets(Res).Copy After:=Sheets(Worksheets.Count)
ActiveSheet.Name = SonNom
Worksheets(SonNom).Visible = xlVeryHidden
Worksheets(ActFeuil).Select
Application.ScreenUpdating = True
ReDim Preserve F(A)
F(A) = SonNom
Else
MsgBox "Ce nom existe déjà. Recommencer."
Err = 1
End If
End If
End If
End If
Loop Until Err = 0
Loop Until Res = vbNo

End Sub
'---------------------------


Salutations!



"BlackStorm" a écrit dans le message de news:%
Merci à toi MichDenis.
La macro marche nickel.
Mais si je veux appliquer une sorte de masque dans les nouvelle feuilles,
comment je fais ? En effet ,j'ai une feuille specifique "rapport.xls" . En
fait les feuilles que je creer doivent avoir la meme presentation.

Merci d'avance




"michdenis" a écrit dans le message de news:

Bonsoir BlackStorm,

Essaie ceci : Attention aux lignes coupées par le service de messagerie.

Tu peux obtenir le même résultat en utilisant la gestion d'erreur.
La macro sera plus courte à écrire !

'----------------------------------
Sub AjoutFeuille()

Dim F(), A As Integer, Res As Integer
Dim SonNom As String, Nb As Integer
Dim Chaine As String
'Caractères interdits dans le nom d'une feuille
Chaine = "/*?[]:"
'31 est le nombre limite de caractères permis dans le nom d'une feuille.
Nb = Worksheets.Count

For A = 1 To Nb
ReDim Preserve F(A)
F(A) = Worksheets(1).Name
Next

Do
Res = MsgBox("Avez-vous besoin d'une feuille supplémentaire ?", _
vbInformation + vbYesNo, "Une autre feuille ?")
If Res = vbYes Then
Do
Err = 0
SonNom = Application.InputBox( _
"Baptiser votre nouvelle feuille.", , , , , , , 2)
If SonNom = "Faux" Then
MsgBox "aucune feuille ne sera ajoutée.", , "Opération
annulée."

Exit Sub
Else
If Len(SonNom) > 31 Then
MsgBox "Trop de caractères pour un nom de feuille.
Recommencer."

Err = 1
Else
For X = 1 To Len(Chaine)
If InStr(1, SonNom, Mid(Chaine, X, 1), vbTextCompare)
<> 0 Then

MsgBox "Le nom de la feuille contient un caractère
interdit. Recommencer"

Err = 1
Exit For
End If
Next
If Err = 0 Then
E = Application.Match(SonNom, F, 0)
If IsError(E) Then
Worksheets.Add after:=Sheets(Worksheets.Count)
ActiveSheet.Name = SonNom
ReDim Preserve F(A)
F(A) = SonNom
Else
MsgBox "Ce nom existe déjà. Recommencer."
Err = 1
End If
End If
End If
End If

Loop Until Err = 0
End If
Loop Until Res = vbNo

End Sub

'----------------------------------





Salutations!



"BlackStorm" a écrit dans le message de
news:%

J'abuse mais bon...

Je suis toujours sur mon projet. J'ai donc une feuille excel qui me sert a
faire des rapports de prospection. J'ai à coté de cela, 4 feuillles
appelées

feuille 2,3,4 et 5
Comment faire pour creer une macro que j'activerai par un bouton pour que
l'on me demande le nom que je veux attribuer à chaque feuille
Exemple
je clique sur le bouton
1ere Question : Avez vous besoin de feuille de saisie supplementaire ? Oui
ou Non
Si c'est non , la macro supprime les feuilles 2,3,4 et 5
Si c'est oui, la macro me demande de combien de feuille j'ai besoin
Dans ce cas imaginez que ce soit des produits : Frigo, Four, Plaque
Cuisson.

.
.
Je reponds oui à la premiere question
On me demande alors combien de feuilles doivent être créees ? je reponds
2,3

ou X
La macro me crée alors 2,3 ou X feuilles
La macro doit me demander le nom que je veux donner à ces feuilles :
2 ) Frigo
3) Four... etc... et me renomer ces feuilles
Enfin, à l'intérieur des feuilles, la structure sera la meme :
1) Descriptif technique de l'appareil
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
2) Dimension de l'appareil
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
3) Remarques... divers
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
Comment faire ?





Avatar
BlackStorm
Merci a toi pour ton aide, je vais tester d'ici ce soir... je te tiendrai au
courant !
Tu m'as fait faire un grand pas en avant ce week-end !!


"michdenis" a écrit dans le message de news:

Une erreur s'est glissée dans le code :

Remplacer cette ligne :

F(A) = Worksheets(1).Name

Par

F(A) = Worksheets(A).Name



Salutations!




"michdenis" a écrit dans le message de
news:%

Bonjour BlackStorm,

Essaie ceci :

Commentaires :

J'ai supposé que dans ton classeur, tu avais 4 modèles de feuilles de base
que tu voulais dupliquer sur simple pression d'un

bouton.
Ces modèles s'appellent dans la procédure : Modèle1, Modèle2, Modèle3,
Modèle4. Tu peux en ajouter, sauf qu'il faudra que tu

renseignes la procédure des véritables noms de tes modèles et que sa liste
soit complète. Pour ce faire, tu dois modifier

ceci :

MesModèles = Array("Modèle1", "Modèle2", "Modèle3", "Modèle4")

Et dans la boîte de message(Application.InputBox), insérer le vrai nom des
modèles pour le choix des usagers.


Comme les usagers ne doivent pas pouvoir modifier ou supprimer ces
modèles, il serait bon que tu puisses les masquer avec

ceci :

worksheets(Modèle1).visible = xlveryhidden ' ceci pour chacun de tes
modèles.


Amuse-toi bien !!!!!!!!!!!!!!!!!!!!

N.B. Ce n'est pas sûr que tu aies plus de réponses en initiant d'autres
fils pour ton problème ! Il est préférable de

demeurer dans le même fil.

'----------------------------------
Sub AjoutFeuille()

Dim F(), A As Integer, Res As Variant
Dim SonNom As String, Nb As Integer
Dim Chaine As String, ActFeuil As String
Dim MesModèles()
MesModèles = Array("Modèle1", "Modèle2", "Modèle3", "Modèle4")

'Caractères interdits dans le nom d'une feuille
Chaine = "/*?[]:"
'31 est le nombre limite de caractères permis dans le nom d'une feuille.
Nb = Worksheets.Count

For A = 1 To Nb
ReDim Preserve F(A)
F(A) = Worksheets(1).Name
Next

Do
Do
Err = 0
Res = Application.InputBox("Avez-vous besoin d'une feuille
supplémentaire ?" & vbCrLf & vbCrLf & _

"1. Modèle1, 2. Modèle2, 3. Modèle3, 4. Modèle4" & vbCrLf &
vbCrLf & _

"Inscrivez le nom du modèle désiré à ajouter", _
"Choix du modèle à ajouter?")
If Res = "Faux" Then Exit Sub
If IsError(Application.Match(Res, MesModèles, 0)) Then
MsgBox "Faites votre sélection parmi les modèles suggérés."
Err = 1
End If
Loop Until Err = 0

Do
Err = 0
SonNom = Application.InputBox( _
"Baptiser votre nouvelle feuille.", , , , , , , 2)
If SonNom = "Faux" Then
MsgBox "aucune feuille ne sera ajoutée.", , "Opération
annulée."

Exit Sub
Else
If Len(SonNom) > 31 Then
MsgBox "Trop de caractères pour un nom de feuille.
Recommencer."

Err = 1
Else
For X = 1 To Len(Chaine)
If InStr(1, SonNom, Mid(Chaine, X, 1), vbTextCompare)
<> 0 Then

MsgBox "Le nom de la feuille contient un caractère
interdit. Recommencer"

Err = 1
Exit For
End If
Next
If Err = 0 Then
E = Application.Match(SonNom, F, 0)
If IsError(E) Then
Application.ScreenUpdating = False
ActFeuil = ActiveSheet.Name
Worksheets(Res).Visible = True
Worksheets(Res).Copy
After:=Sheets(Worksheets.Count)

ActiveSheet.Name = SonNom
Worksheets(SonNom).Visible = xlVeryHidden
Worksheets(ActFeuil).Select
Application.ScreenUpdating = True
ReDim Preserve F(A)
F(A) = SonNom
Else
MsgBox "Ce nom existe déjà. Recommencer."
Err = 1
End If
End If
End If
End If
Loop Until Err = 0
Loop Until Res = vbNo

End Sub
'---------------------------


Salutations!



"BlackStorm" a écrit dans le message de
news:%

Merci à toi MichDenis.
La macro marche nickel.
Mais si je veux appliquer une sorte de masque dans les nouvelle feuilles,
comment je fais ? En effet ,j'ai une feuille specifique "rapport.xls" . En
fait les feuilles que je creer doivent avoir la meme presentation.

Merci d'avance




"michdenis" a écrit dans le message de news:

Bonsoir BlackStorm,

Essaie ceci : Attention aux lignes coupées par le service de
messagerie.



Tu peux obtenir le même résultat en utilisant la gestion d'erreur.
La macro sera plus courte à écrire !

'----------------------------------
Sub AjoutFeuille()

Dim F(), A As Integer, Res As Integer
Dim SonNom As String, Nb As Integer
Dim Chaine As String
'Caractères interdits dans le nom d'une feuille
Chaine = "/*?[]:"
'31 est le nombre limite de caractères permis dans le nom d'une feuille.
Nb = Worksheets.Count

For A = 1 To Nb
ReDim Preserve F(A)
F(A) = Worksheets(1).Name
Next

Do
Res = MsgBox("Avez-vous besoin d'une feuille supplémentaire ?", _
vbInformation + vbYesNo, "Une autre feuille ?")
If Res = vbYes Then
Do
Err = 0
SonNom = Application.InputBox( _
"Baptiser votre nouvelle feuille.", , , , , , , 2)
If SonNom = "Faux" Then
MsgBox "aucune feuille ne sera ajoutée.", , "Opération
annulée."

Exit Sub
Else
If Len(SonNom) > 31 Then
MsgBox "Trop de caractères pour un nom de feuille.
Recommencer."

Err = 1
Else
For X = 1 To Len(Chaine)
If InStr(1, SonNom, Mid(Chaine, X, 1),
vbTextCompare)


<> 0 Then
MsgBox "Le nom de la feuille contient un
caractère


interdit. Recommencer"
Err = 1
Exit For
End If
Next
If Err = 0 Then
E = Application.Match(SonNom, F, 0)
If IsError(E) Then
Worksheets.Add
after:=Sheets(Worksheets.Count)


ActiveSheet.Name = SonNom
ReDim Preserve F(A)
F(A) = SonNom
Else
MsgBox "Ce nom existe déjà. Recommencer."
Err = 1
End If
End If
End If
End If

Loop Until Err = 0
End If
Loop Until Res = vbNo

End Sub

'----------------------------------





Salutations!



"BlackStorm" a écrit dans le message de
news:%

J'abuse mais bon...

Je suis toujours sur mon projet. J'ai donc une feuille excel qui me sert
a


faire des rapports de prospection. J'ai à coté de cela, 4 feuillles
appelées

feuille 2,3,4 et 5
Comment faire pour creer une macro que j'activerai par un bouton pour
que


l'on me demande le nom que je veux attribuer à chaque feuille
Exemple
je clique sur le bouton
1ere Question : Avez vous besoin de feuille de saisie supplementaire ?
Oui


ou Non
Si c'est non , la macro supprime les feuilles 2,3,4 et 5
Si c'est oui, la macro me demande de combien de feuille j'ai besoin
Dans ce cas imaginez que ce soit des produits : Frigo, Four, Plaque
Cuisson.

.
.
Je reponds oui à la premiere question
On me demande alors combien de feuilles doivent être créees ? je reponds
2,3

ou X
La macro me crée alors 2,3 ou X feuilles
La macro doit me demander le nom que je veux donner à ces feuilles :
2 ) Frigo
3) Four... etc... et me renomer ces feuilles
Enfin, à l'intérieur des feuilles, la structure sera la meme :
1) Descriptif technique de l'appareil
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
2) Dimension de l'appareil
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
3) Remarques... divers
Une fusion de cellule et de ligne pour avoir une grande zone de saisie
Comment faire ?