OVH Cloud OVH Cloud

copie de feuilles

6 réponses
Avatar
Gastibelza
Bonsoir,

Je me sers d'une feuille de base (Feuil1) pour créer d'autres feuilles et
j'utilise donc la routine suivante :

Dim Sht As Worksheet, nom As String

nom = InputBox("Nom")
If nom <> "" Then
On Error Resume Next
Set Sht = Sheets(nom)
On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = nom
End If

Sheets("Feuil1").Select
Cells.Select
Selection.Copy
Sheets(nom).Select
Range("a1").Select
ActiveSheet.Paste

End Sub

La nouvelle feuille est donc une copie conforme de feuil1 sauf pour les
boutons de commande que cette dernière contient. D'où ma question :
comment faire pour que les boutons de commandes inclus sur feuil1 soient
également copiés (avec leurs propriétés) ?

--
Amicalement,

Laurent

6 réponses

Avatar
michdenis
Bonjour Gastibelza,

Essaie quelque chose comme ceci :

'--------------------------
Sub copierUneFeuille()

Dim Nom As Variant, F As String
Nom = Format(Application.InputBox("Nom", , , , , , , 2))
If Nom = "False" Then Exit Sub
Application.ScreenUpdating = False
F = ActiveSheet.Name
Worksheets("Feuil1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Nom
Sheets(F).Activate

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


Salutations!


"Gastibelza" a écrit dans le message de news:
Bonsoir,

Je me sers d'une feuille de base (Feuil1) pour créer d'autres feuilles et
j'utilise donc la routine suivante :

Dim Sht As Worksheet, nom As String

nom = InputBox("Nom")
If nom <> "" Then
On Error Resume Next
Set Sht = Sheets(nom)
On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = nom
End If

Sheets("Feuil1").Select
Cells.Select
Selection.Copy
Sheets(nom).Select
Range("a1").Select
ActiveSheet.Paste

End Sub

La nouvelle feuille est donc une copie conforme de feuil1 sauf pour les
boutons de commande que cette dernière contient. D'où ma question :
comment faire pour que les boutons de commandes inclus sur feuil1 soient
également copiés (avec leurs propriétés) ?

--
Amicalement,

Laurent
Avatar
ChrisV
Bonjour Gastibelza,

Ou encore, afin de gérer l'erreur d'exécution si des caractères
non-autorisés sont employés dans le nom du nouvel onglet, et/ou permettre
l'utilsation d'une chaîne de caractères numériques...

(associée à un bouton de commande..)

Private Sub CommandButton1_Click()
Dim Rep As String, asH As String
On Error Resume Next
asH = ActiveSheet.Name
msg = "Vous allez créer une nouvelle feuille à partir de " _
& "ce modèle." & vbCrLf
msg = msg & vbCrLf & "Comment voulez-vous nommer la nouvelle " _
& "feuille ?"
Rep = InputBox(msg, "Saisie du nom")
If Rep = "" Then Exit Sub
Sheets("Feuil1").Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Rep
If Err.Number <> 0 Then
MsgBox Error(Err)
Application.DisplayAlerts = False
ActiveSheet.Delete
End If
Sheets(asH).Activate
End Sub


ChrisV



"Gastibelza" a écrit dans le message de
news:
Bonsoir,

Je me sers d'une feuille de base (Feuil1) pour créer d'autres feuilles et
j'utilise donc la routine suivante :

Dim Sht As Worksheet, nom As String

nom = InputBox("Nom")
If nom <> "" Then
On Error Resume Next
Set Sht = Sheets(nom)
On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = nom
End If

Sheets("Feuil1").Select
Cells.Select
Selection.Copy
Sheets(nom).Select
Range("a1").Select
ActiveSheet.Paste

End Sub

La nouvelle feuille est donc une copie conforme de feuil1 sauf pour les
boutons de commande que cette dernière contient. D'où ma question :
comment faire pour que les boutons de commandes inclus sur feuil1 soient
également copiés (avec leurs propriétés) ?

--
Amicalement,

Laurent


Avatar
Gastibelza
Bonjour michdenis,

Essaie quelque chose comme ceci :

Sub copierUneFeuille()


Merci beaucoup, ça fonctionne parfaitement :-)

Nom = Format(Application.InputBox("Nom", , , , , , , 2))


Je ne comprends pas toutes ces virgules et le 2 après le "Nom". Peut-on
m'expliquer la syntaxe ?
C'est subsidiaire mais bon... je préfèrerais comprendre.

Encore merci à toi.


--
Amicalement,

Laurent

Avatar
Gastibelza
Bonjour ChrisV,

Ou encore, afin de gérer l'erreur d'exécution si des caractères
non-autorisés sont employés dans le nom du nouvel onglet, et/ou permettre
l'utilsation d'une chaîne de caractères numériques...


Merci ! Cette macro fonctionne également parfaitement même si je ne pense
pas être obligé de gérer des erreurs dans le nom du nouvel onglet
puisqu'il devrait s'agir de patronymes... mais sait-on jamais.

Merci :-)

--
Amicalement,

Laurent

Avatar
michdenis
Bonjour Gastibelza,

Application.InputBox a plusieurs paramètres, et comme je ne nomme pas explicitement les paramètres que je renseigne, je
dois inclure chacune des virgules qu'il y a entre le paramètre intiales ("Nom" pour le Prompt" et le dernier paramètre
(Type = 2) que je renseigne... et c'est la façon de faire pour toutes les méthodes

Application.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextId, Type)
Application.InputBox("Nom", , , , , , , 2)

J'aurais pu écrire ceci en nommant explicitement les paramètres.

Application.InputBox(Prompt:="Nom", Type:= 2))

Dans l'aide tu trouveras à quoi sert le type et le 2 utilisé .


Salutations!



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

Essaie quelque chose comme ceci :

Sub copierUneFeuille()


Merci beaucoup, ça fonctionne parfaitement :-)

Nom = Format(Application.InputBox("Nom", , , , , , , 2))


Je ne comprends pas toutes ces virgules et le 2 après le "Nom". Peut-on
m'expliquer la syntaxe ?
C'est subsidiaire mais bon... je préfèrerais comprendre.

Encore merci à toi.


--
Amicalement,

Laurent

Avatar
ChrisV
De rien...! >;-)


ChrisV


"Gastibelza" a écrit dans le message de
news:
Bonjour ChrisV,

Ou encore, afin de gérer l'erreur d'exécution si des caractères
non-autorisés sont employés dans le nom du nouvel onglet, et/ou
permettre


l'utilsation d'une chaîne de caractères numériques...


Merci ! Cette macro fonctionne également parfaitement même si je ne pense
pas être obligé de gérer des erreurs dans le nom du nouvel onglet
puisqu'il devrait s'agir de patronymes... mais sait-on jamais.

Merci :-)

--
Amicalement,

Laurent