OVH Cloud OVH Cloud

bloquer SheetActivate

3 réponses
Avatar
Emcy
Salut,

comment faire pour que =E7a ne m'ajoute qu'une feuille

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Sheets.Add

End Sub

3 réponses

Avatar
ru-th
Salut

un test sur l'existence d'une feuille nommée FeuilX ?
for each f in sheets
if f.name like "Feuil*" then exit sub
next
sheets.add

a+
rural thierry
"Emcy" a écrit dans le message de
news: 030a01c3bfd2$f4d3bb60$
Salut,

comment faire pour que ça ne m'ajoute qu'une feuille

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Sheets.Add

End Sub
Avatar
Gil HASH
"ru-th" a écrit dans le message de
news:eG4K2G%
Salut

un test sur l'existence d'une feuille nommée FeuilX ?
for each f in sheets
if f.name like "Feuil*" then exit sub
next
sheets.add

a+
rural thierry
"Emcy" a écrit dans le message de
news: 030a01c3bfd2$f4d3bb60$
Salut,

comment faire pour que ça ne m'ajoute qu'une feuille

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Sheets.Add

End Sub


Bonjour

J'ai souvent ce problème car je crée des feuilles avec un nom particulier et
pour éviter de déclencher une erreur en voulant atribuer un nom déjà utilisé
dans le classeur je crée d'abord la feuille en dernière position (Excel se
débrouille très bien tout seul pour éviter de faire des doublons avec les
noms des feuilles créées)

Sheets.Add After:=Sheets(Sheets.Count)

Ensuite je fais une inspection de toutes les feuilles pour y déceler si le
nom que je voudrais attribuer n'y est pas déjà
J'ai besoin d'une variable n comme compteur et d'une variable booléenne
comme indicateur de présence

Flg = False
For n = 1 to ThisWorkbook.Sheets.Count - 1
(La dernière c'est la feuille que je viens de créer donc le test n'est pas
utile)

if ThisWorkBook.Sheets(n).Name = NomQueJeVeuxAttribuer Then
MsgBox"Un feuille porte déjà le nom : " & NomQueJeVeuxAttribuer &
vblf & "La feuille créée portera le nom " &
ThisWorkBook.Sheets(ThisWorBook.Sheets.Count).Name & vblf & "A vous de la
renommer manuellement par la suite"
Flg = True
Exit For
End If
Next n

If Flg = False Then
ThisWorkBook.Sheets(ThisWorkBook.Sheets.Count).Name NomQueJeVeuxAttribuer
End If

Avatar
Frédéric Sigonneau
Bonsoir,

Pour vérifier l'existence ou non d'une feuille d'un nom donné dans un classeur
en évitant une boucle, tu peux utiliser, parmi d'autres astuces possibles, ce
genre de code (sur une idée de Dana DeLouis) :

Sub NouvelleFeuille()
Dim NomFeuille$, test
NomFeuille = "MaFeuille"
With ThisWorkbook
On Error Resume Next
test = Len(.Sheets(NomFeuille).Name) 'ici, Excel boucle pour toi :)
On Error GoTo 0
.Sheets.Add.Name = _
IIf(Not CBool(test), NomFeuille, NomFeuille & .Sheets.Count)
End With
End Sub

FS


"ru-th" a écrit dans le message de
news:eG4K2G%
Salut

un test sur l'existence d'une feuille nommée FeuilX ?
for each f in sheets
if f.name like "Feuil*" then exit sub
next
sheets.add

a+
rural thierry
"Emcy" a écrit dans le message de
news: 030a01c3bfd2$f4d3bb60$
Salut,

comment faire pour que ça ne m'ajoute qu'une feuille

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Sheets.Add

End Sub


Bonjour

J'ai souvent ce problème car je crée des feuilles avec un nom particulier et
pour éviter de déclencher une erreur en voulant atribuer un nom déjà utilisé
dans le classeur je crée d'abord la feuille en dernière position (Excel se
débrouille très bien tout seul pour éviter de faire des doublons avec les
noms des feuilles créées)

Sheets.Add After:=Sheets(Sheets.Count)

Ensuite je fais une inspection de toutes les feuilles pour y déceler si le
nom que je voudrais attribuer n'y est pas déjà
J'ai besoin d'une variable n comme compteur et d'une variable booléenne
comme indicateur de présence

Flg = False
For n = 1 to ThisWorkbook.Sheets.Count - 1
(La dernière c'est la feuille que je viens de créer donc le test n'est pas
utile)

if ThisWorkBook.Sheets(n).Name = NomQueJeVeuxAttribuer Then
MsgBox"Un feuille porte déjà le nom : " & NomQueJeVeuxAttribuer &
vblf & "La feuille créée portera le nom " &
ThisWorkBook.Sheets(ThisWorBook.Sheets.Count).Name & vblf & "A vous de la
renommer manuellement par la suite"
Flg = True
Exit For
End If
Next n

If Flg = False Then
ThisWorkBook.Sheets(ThisWorkBook.Sheets.Count).Name > NomQueJeVeuxAttribuer
End If


--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !