Si j'ajoute une feuille à un classeur elle prend le nom de feuilxx,
4 si le classeur est neuf.
mais si je delete cette feuille "feuil4" et que j'ajoute à nouveau une
feuille elle est appelée "feuil5" si je la détruit la suivante feuil6
.......... alors qu'il n'y a toujours que 4 feuilles
Question: est il possible de faire en sorte que la nouvelle feuille se
nomme feuil4 et non pas feuilxx, en gros réinitialiser le compteur
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FFO
Salut Michel Je crains que la réinitialisation du compteur ne soit pas possible sans refermer et réouvrir Excel
Tu peux pour contourner la difficulté créer une Macro d'ajout de feuilles avec ce code :
Sheets.Add.Name = "Feuil" & Sheets.Count + 1
Attention de ne pas avoir de trou dans la séquence de numérotation exemple : 3 feuilles existantes sans la Feuil1 Ce qui donnerait les Onglets : Feuil2, Feuil3, Feuil4 La macro avec ces 3 feuilles chercherait à créer la Feuil4 déjà existante ce qui engendrerait un Bug
Fais des essais et dis moi !!!!!
Salut Michel
Je crains que la réinitialisation du compteur ne soit pas possible sans
refermer et réouvrir Excel
Tu peux pour contourner la difficulté créer une Macro d'ajout de feuilles
avec ce code :
Sheets.Add.Name = "Feuil" & Sheets.Count + 1
Attention de ne pas avoir de trou dans la séquence de numérotation exemple :
3 feuilles existantes sans la Feuil1
Ce qui donnerait les Onglets : Feuil2, Feuil3, Feuil4
La macro avec ces 3 feuilles chercherait à créer la Feuil4 déjà existante ce
qui engendrerait un Bug
Salut Michel Je crains que la réinitialisation du compteur ne soit pas possible sans refermer et réouvrir Excel
Tu peux pour contourner la difficulté créer une Macro d'ajout de feuilles avec ce code :
Sheets.Add.Name = "Feuil" & Sheets.Count + 1
Attention de ne pas avoir de trou dans la séquence de numérotation exemple : 3 feuilles existantes sans la Feuil1 Ce qui donnerait les Onglets : Feuil2, Feuil3, Feuil4 La macro avec ces 3 feuilles chercherait à créer la Feuil4 déjà existante ce qui engendrerait un Bug
Fais des essais et dis moi !!!!!
MichDenis
| en gros réinitialiser le compteur
Il te suffit de fermer Excel et de le rouvrir à nouveau. C'est vrai, ce n'est pas très pratique !
Mais si cela t'intéresse, tu peux ajouter ce type de macro dans le ThisWorkbook de ton classeur :
Ceci s'occupe seulement du nom de l'onglet de la feuille mais il serait possible de faire quelque chose de similaire pour traiter de la propriété "Name" de l'objet "Feuille apparaissant dans la fenêtre de l'édition de code.
'---------------------------------------- Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim F As Worksheet, A As Integer, Tong() Dim Nom As String, Nb As Integer, X As Variant With ThisWorkbook Nb = .Worksheets.Count ReDim Tong(1 To Nb) For Each F In .Worksheets If UCase(F.Name) <> UCase("Feuil4") Then A = A + 1 Tong(A) = F.Name End If Next For A = 1 To Nb Nom = "Feuil" & A X = Application.Match(Nom, Tong, 0) If IsError(X) Then Sh.Name = Nom Exit For End If Next End With End Sub '----------------------------------------
| en gros réinitialiser le compteur
Il te suffit de fermer Excel et de le rouvrir à nouveau.
C'est vrai, ce n'est pas très pratique !
Mais si cela t'intéresse, tu peux ajouter ce type de macro
dans le ThisWorkbook de ton classeur :
Ceci s'occupe seulement du nom de l'onglet de la feuille
mais il serait possible de faire quelque chose de similaire
pour traiter de la propriété "Name" de l'objet "Feuille
apparaissant dans la fenêtre de l'édition de code.
'----------------------------------------
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim F As Worksheet, A As Integer, Tong()
Dim Nom As String, Nb As Integer, X As Variant
With ThisWorkbook
Nb = .Worksheets.Count
ReDim Tong(1 To Nb)
For Each F In .Worksheets
If UCase(F.Name) <> UCase("Feuil4") Then
A = A + 1
Tong(A) = F.Name
End If
Next
For A = 1 To Nb
Nom = "Feuil" & A
X = Application.Match(Nom, Tong, 0)
If IsError(X) Then
Sh.Name = Nom
Exit For
End If
Next
End With
End Sub
'----------------------------------------
Il te suffit de fermer Excel et de le rouvrir à nouveau. C'est vrai, ce n'est pas très pratique !
Mais si cela t'intéresse, tu peux ajouter ce type de macro dans le ThisWorkbook de ton classeur :
Ceci s'occupe seulement du nom de l'onglet de la feuille mais il serait possible de faire quelque chose de similaire pour traiter de la propriété "Name" de l'objet "Feuille apparaissant dans la fenêtre de l'édition de code.
'---------------------------------------- Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim F As Worksheet, A As Integer, Tong() Dim Nom As String, Nb As Integer, X As Variant With ThisWorkbook Nb = .Worksheets.Count ReDim Tong(1 To Nb) For Each F In .Worksheets If UCase(F.Name) <> UCase("Feuil4") Then A = A + 1 Tong(A) = F.Name End If Next For A = 1 To Nb Nom = "Feuil" & A X = Application.Match(Nom, Tong, 0) If IsError(X) Then Sh.Name = Nom Exit For End If Next End With End Sub '----------------------------------------
Michel
Le 18/03/2009, MichDenis a supposé :
Merci à vous deux (FFO et Michdenis)
C'est bon pour les feuilles, me reste plus que le nom des feuilles dans le code VBA à comprendre (codename)
M.
Le 18/03/2009, MichDenis a supposé :
Merci à vous deux (FFO et Michdenis)
C'est bon pour les feuilles, me reste plus que le nom des feuilles dans
le code VBA à comprendre (codename)
C'est bon pour les feuilles, me reste plus que le nom des feuilles dans le code VBA à comprendre (codename)
M.
MichDenis
La procédure qui suit nomme l'onglet de la feuille ajoutée en utilisant l'abréviation Feuil suivi du plus petit index disponible Il en va de même pour la Propriété Name de l'objet Feuille dans la fenêtre VBA.
Il est à noter que l'index de l'onglet de la feuille et celui de la propriété name peut être différent au gré des ajouts et suppression de feuille. Pour que l'index soit le même, il faudrait réarranger la macro un peu !
'--------------------------------------- Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim F As Worksheet, A As Integer, Tong(), Tobj() Dim Nom As String, Nb As Integer, X As Variant With ThisWorkbook Nb = .Worksheets.Count ReDim Tong(1 To Nb) ReDim Tobj(1 To Nb) For Each F In .Worksheets If UCase(F.Name) <> UCase(Sh.Name) Then A = A + 1 Tong(A) = F.Name Tobj(A) = F.CodeName End If Next For A = 1 To Nb Nom = "Feuil" & A X = Application.Match(Nom, Tong, 0) If IsError(X) Then Sh.Name = Nom For b = 1 To Nb Nom = "Feuil" & b y = Application.Match(Nom, Tobj, 0) If IsError(y) Then ThisWorkbook.VBProject.VBComponents(Sh.CodeName).Name = Nom Exit Sub End If Next End If Next End With
End Sub '---------------------------------------
"Michel" a écrit dans le message de groupe de discussion :
Le 18/03/2009, MichDenis a supposé :
Merci à vous deux (FFO et Michdenis)
C'est bon pour les feuilles, me reste plus que le nom des feuilles dans le code VBA à comprendre (codename)
M.
La procédure qui suit nomme l'onglet de la feuille ajoutée
en utilisant l'abréviation Feuil suivi du plus petit index disponible
Il en va de même pour la Propriété Name de l'objet Feuille
dans la fenêtre VBA.
Il est à noter que l'index de l'onglet de la feuille et celui
de la propriété name peut être différent au gré des ajouts
et suppression de feuille. Pour que l'index soit le même, il
faudrait réarranger la macro un peu !
'---------------------------------------
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim F As Worksheet, A As Integer, Tong(), Tobj()
Dim Nom As String, Nb As Integer, X As Variant
With ThisWorkbook
Nb = .Worksheets.Count
ReDim Tong(1 To Nb)
ReDim Tobj(1 To Nb)
For Each F In .Worksheets
If UCase(F.Name) <> UCase(Sh.Name) Then
A = A + 1
Tong(A) = F.Name
Tobj(A) = F.CodeName
End If
Next
For A = 1 To Nb
Nom = "Feuil" & A
X = Application.Match(Nom, Tong, 0)
If IsError(X) Then
Sh.Name = Nom
For b = 1 To Nb
Nom = "Feuil" & b
y = Application.Match(Nom, Tobj, 0)
If IsError(y) Then
ThisWorkbook.VBProject.VBComponents(Sh.CodeName).Name = Nom
Exit Sub
End If
Next
End If
Next
End With
End Sub
'---------------------------------------
"Michel" <michel@bidon.nete> a écrit dans le message de groupe de discussion :
mn.94097d93b8e37c80.62698@bidon.nete...
Le 18/03/2009, MichDenis a supposé :
Merci à vous deux (FFO et Michdenis)
C'est bon pour les feuilles, me reste plus que le nom des feuilles dans
le code VBA à comprendre (codename)
La procédure qui suit nomme l'onglet de la feuille ajoutée en utilisant l'abréviation Feuil suivi du plus petit index disponible Il en va de même pour la Propriété Name de l'objet Feuille dans la fenêtre VBA.
Il est à noter que l'index de l'onglet de la feuille et celui de la propriété name peut être différent au gré des ajouts et suppression de feuille. Pour que l'index soit le même, il faudrait réarranger la macro un peu !
'--------------------------------------- Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim F As Worksheet, A As Integer, Tong(), Tobj() Dim Nom As String, Nb As Integer, X As Variant With ThisWorkbook Nb = .Worksheets.Count ReDim Tong(1 To Nb) ReDim Tobj(1 To Nb) For Each F In .Worksheets If UCase(F.Name) <> UCase(Sh.Name) Then A = A + 1 Tong(A) = F.Name Tobj(A) = F.CodeName End If Next For A = 1 To Nb Nom = "Feuil" & A X = Application.Match(Nom, Tong, 0) If IsError(X) Then Sh.Name = Nom For b = 1 To Nb Nom = "Feuil" & b y = Application.Match(Nom, Tobj, 0) If IsError(y) Then ThisWorkbook.VBProject.VBComponents(Sh.CodeName).Name = Nom Exit Sub End If Next End If Next End With
End Sub '---------------------------------------
"Michel" a écrit dans le message de groupe de discussion :
Le 18/03/2009, MichDenis a supposé :
Merci à vous deux (FFO et Michdenis)
C'est bon pour les feuilles, me reste plus que le nom des feuilles dans le code VBA à comprendre (codename)
M.
Michel
MichDenis a exprimé avec précision :
Merci pour l'explication, j'ai trouvé ( pas assez au top VBA pour le faire moi même) un bout de code sympa.
For Each ws In ActiveWorkbook.Worksheets ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") = "Feuil" & i + 1 i = i + 1 Next ws M.
MichDenis a exprimé avec précision :
Merci pour l'explication,
j'ai trouvé ( pas assez au top VBA pour le faire moi même) un bout de
code sympa.
For Each ws In ActiveWorkbook.Worksheets
ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") =
"Feuil" & i + 1
i = i + 1
Next ws
M.