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

Créer plusieurs feuilles à l'aide d'une macro.

6 réponses
Avatar
Tintin92
Bonjour,

J'ai essay=E9 de modifier une macro trouv=E9e sur le site
http://dj.joss.free.fr/feuil.htm.

La macro du site fonctionne :

Ins=E8re des feuilles et les nomme suivant une liste

Cr=E9ez une liste de noms et s=E9lectionnez la avant de lancer la macro
Sub FeuilViaLst()
Dim Mycell As Range, Mysheet As Worksheet, MyName$
For Each Mycell In Selection 'liste de noms
MyName =3D Mycell.Value
If MyName <> "" Then
On Error Resume Next
Set Mysheet =3D Sheets(MyName)
On Error GoTo 0
If Mysheet Is Nothing Then Sheets.Add.Name =3D MyName
End If
Next Mycell
End Sub


Ma macro l=E9g=E8rement modifi=E9e ne c=E9er qu'une feuille, la premi=E8re
de la liste les autres sont ignor=E9es.

Private Sub CommandButton1_Click()
Dim Mycell As Range, Mysheet As Worksheet, MyName$

For Each Mycell In Range("E9:E13") 'liste de noms
MyName =3D Mycell.Value
If MyName <> "" Then
On Error Resume Next
Set Mysheet =3D Sheets(MyName)
On Error GoTo 0
If Mysheet Is Nothing Then Sheets.Add.Name =3D MyName
End If
Next Mycell
End Sub

Ou est mon erreur ?

Merci

Tintin92

6 réponses

Avatar
Jacky
Bonjour,

Elle fonctionne très bien ta macro.
Testée ici:
http://cjoint.com/?bmqDazJdq7

Salutations
JJ

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

J'ai essayé de modifier une macro trouvée sur le site
http://dj.joss.free.fr/feuil.htm.

La macro du site fonctionne :

Insère des feuilles et les nomme suivant une liste

Créez une liste de noms et sélectionnez la avant de lancer la macro
Sub FeuilViaLst()
Dim Mycell As Range, Mysheet As Worksheet, MyName$
For Each Mycell In Selection 'liste de noms
MyName = Mycell.Value
If MyName <> "" Then
On Error Resume Next
Set Mysheet = Sheets(MyName)
On Error GoTo 0
If Mysheet Is Nothing Then Sheets.Add.Name = MyName
End If
Next Mycell
End Sub


Ma macro légèrement modifiée ne céer qu'une feuille, la première
de la liste les autres sont ignorées.

Private Sub CommandButton1_Click()
Dim Mycell As Range, Mysheet As Worksheet, MyName$

For Each Mycell In Range("E9:E13") 'liste de noms
MyName = Mycell.Value
If MyName <> "" Then
On Error Resume Next
Set Mysheet = Sheets(MyName)
On Error GoTo 0
If Mysheet Is Nothing Then Sheets.Add.Name = MyName
End If
Next Mycell
End Sub

Ou est mon erreur ?

Merci

Tintin92
Avatar
Tintin92
Merci.
ça marche maintenant.
Je ne m'explique pas pourquoi celà ne semblait pas fonctionner tout à
l'heure.
Seule une page était créée.

Tintin92
Avatar
Tintin92
J'ai fait des tests plus approfondis, et à mon avis cette macro n'est
pas parfaite, en tout cas pour ce que je veux en faire.
Si la première des feuilles est déjà créée elle zappe la créati on
des feuilles suivantes.
Dans ton exemple si la feuille 'aaa' est déjà créée elle ne céée
pas les suivantes.
Donc je vais voir à les supprimer toutes dans un premier temps.

Tintin92
Avatar
Jacky
Re..
Je n'avais pas testé aussi loin.
Personnellement j'utiliserai ceci:
'---------
Private Sub CommandButton1_Click()
Dim SheetName As String
Dim i As Integer, bExist As Boolean
On Error Resume Next
For Each c In Range("E9:E13")
SheetName = c
bExist = False
bExist = IsObject(Sheets(SheetName))
If Not bExist Then Sheets.Add.Name = SheetName
Next c
End Sub
'----------

Salutations
JJ


"Tintin92" a écrit dans le message de
news:
J'ai fait des tests plus approfondis, et à mon avis cette macro n'est
pas parfaite, en tout cas pour ce que je veux en faire.
Si la première des feuilles est déjà créée elle zappe la création
des feuilles suivantes.
Dans ton exemple si la feuille 'aaa' est déjà créée elle ne céée
pas les suivantes.
Donc je vais voir à les supprimer toutes dans un premier temps.

Tintin92
Avatar
Tintin92
Merci.
ça marche beaucoup mieux.

Tintin92

PS
J'ai rajouté un :
If c.Value <> "" Then
pour mes besoins propres
Avatar
Jacky
Re..
J'ai oublié de nommer les participants à la construction de ce code:
En grande partie:
Jacques93
et
AnonymousA
Céline Brien
Isabelle

Je leurs dois bien cela.
JJ

"Tintin92" a écrit dans le message de
news:
Merci.
ça marche beaucoup mieux.

Tintin92

PS
J'ai rajouté un :
If c.Value <> "" Then
pour mes besoins propres