OVH Cloud OVH Cloud

Création de feuilles

10 réponses
Avatar
Jacky
Bonjour à tous

Je colle sur ce code:

'----
Private Sub Workbook_Open()
For i = 1 To 54
On Error Resume Next
Sheets.Add.Name = Year(Now) & " " & "Semaine" & " " & i
Next
End Sub
'----
S'il me crée bien toutes les feuilles à la première ouverture du fichier, il
rajoute 54 feuilles à chaque ouverture avec comme nom "feuil n", malgré le
resume next.

Y a sûrement moyen, non??

A bientôt
JJ

10 réponses

Avatar
anonymousA
bonjour,

ben comme il y a déjà des feuilles qui portent le nom que tu veux leur
donner, la proc effetue bien un ajout de feuilles ( ca c'est normal)et
donc les nommes d'abord Feuil n selon la typologie habituelle d'Excel
puis quand tu veux leur donner le même nom qui existe déjà, VBA se
plante mais comme tu as ton on error resume next, il passe à
l'instruction suivante en te liassant une nouvelle feuille qui s'appelle
Feuille n
Il faut donc que tu testes avant de créer la feuille si il existe une
feuille du même nom et dans le cas où il n'y en a pas, la tu crées ta
feuille.

A+


Bonjour à tous

Je colle sur ce code:

'----
Private Sub Workbook_Open()
For i = 1 To 54
On Error Resume Next
Sheets.Add.Name = Year(Now) & " " & "Semaine" & " " & i
Next
End Sub
'----
S'il me crée bien toutes les feuilles à la première ouverture du fichier, il
rajoute 54 feuilles à chaque ouverture avec comme nom "feuil n", malgré le
resume next.

Y a sûrement moyen, non??

A bientôt
JJ




Avatar
Céline Brien
Salut Jacky,
Je te propose ceci :
------------------------------------------
Private Sub Workbook_Open()
If Sheets.Count > 4 Then
End
Else
For i = 1 To 54
On Error Resume Next
Sheets.Add.Name = Year(Now) & " " & "Semaine" & " " & i
Next
End If
End Sub
------------------------------------------
Si ton classeur contient plus de 4 feuilles ou autres selon tes besoins,
mettre fin à la macro.
Bonne journée,
Céline

"Jacky" a écrit dans le message de
news:
Bonjour à tous

Je colle sur ce code:

'----
Private Sub Workbook_Open()
For i = 1 To 54
On Error Resume Next
Sheets.Add.Name = Year(Now) & " " & "Semaine" & " " & i
Next
End Sub
'----
S'il me crée bien toutes les feuilles à la première ouverture du
fichier, il

rajoute 54 feuilles à chaque ouverture avec comme nom "feuil n",
malgré le

resume next.

Y a sûrement moyen, non??

A bientôt
JJ




Avatar
Jacky
Re Bonjour

Il faut donc que tu testes avant de créer la feuille si il existe une
feuille du même nom et dans le cas où il n'y en a pas, la tu crées ta
feuille


Oui, j'ai bien fait des testes, dans tous les sens, dont celui ci
dessous(qui ne fonctionne pas d'ailleurs), mais ma tête refuse aujourd'hui à
trouver le bon :o((
'---------
For i = 1 To 54
x = Sheets(i).Name
'On Error Resume Next
For j = 1 To Sheets.Count
If x <> Sheets(j).Name Then
Sheets.Add.Name = Year(Now) & " " & "Semaine" & " " & i ' crée une nouvelle
feuille avec comme nom l'année et la semaine
End If
Next
Next
'-----------
@+
JJ

"anonymousA" a écrit dans le message de
news:42aacea9$0$1225$
bonjour,

ben comme il y a déjà des feuilles qui portent le nom que tu veux leur
donner, la proc effetue bien un ajout de feuilles ( ca c'est normal)et
donc les nommes d'abord Feuil n selon la typologie habituelle d'Excel
puis quand tu veux leur donner le même nom qui existe déjà, VBA se
plante mais comme tu as ton on error resume next, il passe à
l'instruction suivante en te liassant une nouvelle feuille qui s'appelle
Feuille n
Il faut donc que tu testes avant de créer la feuille si il existe une
feuille du même nom et dans le cas où il n'y en a pas, la tu crées ta
feuille.


Avatar
Jacky
Merci Céline d'avoir prêté attention à ma demande.

Mais si ton code pourrait être une solution, je ne peux l'adapter à mon
besoin, d'autre feuilles sont ajoutées ou supprimées dans mon classeur au
cours de son exécution, ce qui rend variable "If Sheets.Count > 4 ".
Il faut vraiment que je teste l'existence (ou non) de ces 54 feuilles

Merci d'avoir essayé.
JJ

"Céline Brien" a écrit dans le message de
news:
Salut Jacky,
Je te propose ceci :
------------------------------------------
Private Sub Workbook_Open()
If Sheets.Count > 4 Then
End
Else
For i = 1 To 54
On Error Resume Next
Sheets.Add.Name = Year(Now) & " " & "Semaine" & " " & i
Next
End If
End Sub
------------------------------------------
Si ton classeur contient plus de 4 feuilles ou autres selon tes besoins,
mettre fin à la macro.
Bonne journée,
Céline








Avatar
Jacques93
Bonjour Jacky,

Comme l'a indiqué anonymousA, il faut tester l'existence de la feuille
avant de la créer, par exemple :

Dim SheetName As String
Dim i As Integer, bExist As Boolean

On Error Resume Next
For i = 1 To 54
SheetName = Year(Now) & " " & "Semaine" & " " & i
bExist = IsObject(Sheets(SheetName))
If Not bExist Then
Sheets.Add.Name = SheetName
End If
Next i

Bonjour à tous

Je colle sur ce code:

'----
Private Sub Workbook_Open()
For i = 1 To 54
On Error Resume Next
Sheets.Add.Name = Year(Now) & " " & "Semaine" & " " & i
Next
End Sub
'----
S'il me crée bien toutes les feuilles à la première ouverture du fichier, il
rajoute 54 feuilles à chaque ouverture avec comme nom "feuil n", malgré le
resume next.

Y a sûrement moyen, non??

A bientôt
JJ





--
Cordialement,

Jacques.

Avatar
Jacky
Bonjour Jacques

Merci pour ton code
Mais cela ne correspond pas tout à fait à mon besoin.
Toutes les feuilles sont crées au premier démarrage. Mais.....
Des feuilles sont rajoutées ou supprimées au cours de l'exécution de mon
appli., et avec ton code elle ne sont pas recrées à l'exécution de
"Workbook_Open()"
Et j'ai besoin des 54 feuilles (nommées) au démarrage.

@+
JJ

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

Comme l'a indiqué anonymousA, il faut tester l'existence de la feuille
avant de la créer, par exemple :

Dim SheetName As String
Dim i As Integer, bExist As Boolean

On Error Resume Next
For i = 1 To 54
SheetName = Year(Now) & " " & "Semaine" & " " & i
bExist = IsObject(Sheets(SheetName))
If Not bExist Then
Sheets.Add.Name = SheetName
End If
Next i



Avatar
isabelle
bonjour Jacky,

je ne comprend pas bien ton problème, la macro de Jacques fonctionne bien et recrée les feuilles manquantes,
il ne reste qu'à mettre ces lignes de code dans le Workbook_Open()

isabelle


Bonjour Jacques

Merci pour ton code
Mais cela ne correspond pas tout à fait à mon besoin.
Toutes les feuilles sont crées au premier démarrage. Mais.....
Des feuilles sont rajoutées ou supprimées au cours de l'exécution de mon
appli., et avec ton code elle ne sont pas recrées à l'exécution de
"Workbook_Open()"
Et j'ai besoin des 54 feuilles (nommées) au démarrage.

@+
JJ

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

Bonjour Jacky,

Comme l'a indiqué anonymousA, il faut tester l'existence de la feuille
avant de la créer, par exemple :

Dim SheetName As String
Dim i As Integer, bExist As Boolean

On Error Resume Next
For i = 1 To 54
SheetName = Year(Now) & " " & "Semaine" & " " & i
bExist = IsObject(Sheets(SheetName))
If Not bExist Then
Sheets.Add.Name = SheetName
End If
Next i








Avatar
Jacques93
Bonjour Jacky,

Ajoutes :

bExist = False

avant

bExist = IsObject(Sheets(SheetName))

Bonjour Jacques

Merci pour ton code
Mais cela ne correspond pas tout à fait à mon besoin.
Toutes les feuilles sont crées au premier démarrage. Mais.....
Des feuilles sont rajoutées ou supprimées au cours de l'exécution de mon
appli., et avec ton code elle ne sont pas recrées à l'exécution de
"Workbook_Open()"
Et j'ai besoin des 54 feuilles (nommées) au démarrage.

@+
JJ

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

Bonjour Jacky,

Comme l'a indiqué anonymousA, il faut tester l'existence de la feuille
avant de la créer, par exemple :

Dim SheetName As String
Dim i As Integer, bExist As Boolean

On Error Resume Next
For i = 1 To 54
SheetName = Year(Now) & " " & "Semaine" & " " & i
bExist = IsObject(Sheets(SheetName))
If Not bExist Then
Sheets.Add.Name = SheetName
End If
Next i








--
Cordialement,

Jacques.


Avatar
Jacky
Bonjour Isabelle

Ben non, pas chez moi, mais peut-être cela est dû à mon vieux xl 97
Mais rien n'y fait, il ne veut pas recréer les feuilles manquantes
J'en ai mal au crane,depuis ce matin je me casse la tête sur ce petit code
qui refuse de contrôler ces ("foutu") feuilles.

@+
JJ

"isabelle" a écrit dans le message de
news:%23CC%
bonjour Jacky,

je ne comprend pas bien ton problème, la macro de Jacques fonctionne bien
et recrée les feuilles manquantes,

il ne reste qu'à mettre ces lignes de code dans le Workbook_Open()

isabelle


Bonjour Jacques

Merci pour ton code
Mais cela ne correspond pas tout à fait à mon besoin.
Toutes les feuilles sont crées au premier démarrage. Mais.....
Des feuilles sont rajoutées ou supprimées au cours de l'exécution de mon
appli., et avec ton code elle ne sont pas recrées à l'exécution de
"Workbook_Open()"
Et j'ai besoin des 54 feuilles (nommées) au démarrage.

@+
JJ

"Jacques93" a écrit dans le message
de


news:

Bonjour Jacky,

Comme l'a indiqué anonymousA, il faut tester l'existence de la feuille
avant de la créer, par exemple :

Dim SheetName As String
Dim i As Integer, bExist As Boolean

On Error Resume Next
For i = 1 To 54
SheetName = Year(Now) & " " & "Semaine" & " " & i
bExist = IsObject(Sheets(SheetName))
If Not bExist Then
Sheets.Add.Name = SheetName
End If
Next i










Avatar
Jacky
Ok! Cela fonctionne
Merci beaucoup

Bon we
JJ

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

Ajoutes :

bExist = False

avant

bExist = IsObject(Sheets(SheetName))