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 ?
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" <BlackStorm@Hotmail.com> a écrit dans le message de
news:%23B9ClFE6DHA.2056@TK2MSFTNGP10.phx.gbl...
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 ?
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 ?
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 ?
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" <BlackStorm@Hotmail.com> a écrit dans le message de
news:%23B9ClFE6DHA.2056@TK2MSFTNGP10.phx.gbl...
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 ?
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 ?
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 ?
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" <BlackStorm@Hotmail.com> a écrit dans le message de
news:%23B9ClFE6DHA.2056@TK2MSFTNGP10.phx.gbl...
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 ?
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 ?
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 ThenMsgBox "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éesfeuille 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,3ou 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 ?
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" <michdenis@hotmail.com> a écrit dans le message de
news:%23QCHADN6DHA.2760@TK2MSFTNGP09.phx.gbl...
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" <BlackStorm@Hotmail.com> a écrit dans le message de
news:%23pgqiwJ6DHA.2344@TK2MSFTNGP09.phx.gbl...
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" <michdenis@hotmail.com> a écrit dans le message de news:
eHomcZI6DHA.1556@tk2msftngp13.phx.gbl...
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" <BlackStorm@Hotmail.com> a écrit dans le message de
news:%23B9ClFE6DHA.2056@TK2MSFTNGP10.phx.gbl...
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 ?
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 ThenMsgBox "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éesfeuille 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,3ou 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 ?