j'aimerai savoir comment formuler en VBA pour que lorsque je crée un
nouvel onglet, automatiquement le nom de l'onglet se marque sur un onglet
intitulé "index " et à la suite de ce qu'il a déjà était écrit.
Bref comment dire si la colonne A est vide alors note le nom là ?
d'avance merci à tous ceux qui pourront se pencher sur ma question
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
AV
Une... Dans le module de ThisWorkbook :
Private Sub Workbook_SheetActivate(ByVal Sh As Object) On Error Resume Next x = Sh.Name z = [Index!A:A].Find(ActiveSheet.Name, After:=[Index!A65536]) If Err.Number <> 0 Then [Index!A65536].End(3)(2) = x End Sub
PS : le nom des feuilles est stocké dans la co:lonne A de la feuille "Index" AV
Une...
Dans le module de ThisWorkbook :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
x = Sh.Name
z = [Index!A:A].Find(ActiveSheet.Name, After:=[Index!A65536])
If Err.Number <> 0 Then [Index!A65536].End(3)(2) = x
End Sub
PS : le nom des feuilles est stocké dans la co:lonne A de la feuille "Index"
AV
Private Sub Workbook_SheetActivate(ByVal Sh As Object) On Error Resume Next x = Sh.Name z = [Index!A:A].Find(ActiveSheet.Name, After:=[Index!A65536]) If Err.Number <> 0 Then [Index!A65536].End(3)(2) = x End Sub
PS : le nom des feuilles est stocké dans la co:lonne A de la feuille "Index" AV
par contre, j'abuse peut-être mais j'aimerai comprendre la signification de toutes les ligne du code ...Afin que je m'améliore .....
mais encore merci merci merci !!!!
Pfff....! Remplacer Activesheet.name par x
AV
ksandre
re-bonjour, alors je viens de réessayer.... le problème c'est que mes onglets se créent par macro..... que voici: Sheets("MODELE").Select Sheets("MODELE").Copy After:=Sheets(4) Sheets("MODELE (2)").Select Sheets("MODELE (2)").Name = Range("b5") Sheets("MODELE").Select Range("C3:E15").Select ActiveCell.FormulaR1C1 = "" Range("F12").Select
par conséquent au lieu de mettre le nom de l'onglet , cela m'écrit "modele(2)"
il y a -t-il moyen de palier ce petit inconvénient?
autre chose..... j'ai voulu l'adapter à un autre classeur qui dans celui-ci l'onglet "index" est remplacer par l'onglet "feuille de départ". j'ai donc remplacer dans le code par "feuille de départ" tout ce qui était "index" ...mais ça ne marche pas :( où est mon erreur?
encore une fois merci d'avance
Une... Dans le module de ThisWorkbook :
Private Sub Workbook_SheetActivate(ByVal Sh As Object) On Error Resume Next x = Sh.Name z = [Index!A:A].Find(ActiveSheet.Name, After:=[Index!A65536]) If Err.Number <> 0 Then [Index!A65536].End(3)(2) = x End Sub
PS : le nom des feuilles est stocké dans la co:lonne A de la feuille "Index" AV
re-bonjour,
alors je viens de réessayer.... le problème c'est que mes onglets se
créent par macro..... que voici:
Sheets("MODELE").Select
Sheets("MODELE").Copy After:=Sheets(4)
Sheets("MODELE (2)").Select
Sheets("MODELE (2)").Name = Range("b5")
Sheets("MODELE").Select
Range("C3:E15").Select
ActiveCell.FormulaR1C1 = ""
Range("F12").Select
par conséquent au lieu de mettre le nom de l'onglet , cela m'écrit
"modele(2)"
il y a -t-il moyen de palier ce petit inconvénient?
autre chose..... j'ai voulu l'adapter à un autre classeur qui dans celui-ci
l'onglet "index" est remplacer par l'onglet "feuille de départ".
j'ai donc remplacer dans le code par "feuille de départ" tout ce qui
était "index" ...mais ça ne marche pas :(
où est mon erreur?
encore une fois merci d'avance
Une...
Dans le module de ThisWorkbook :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
x = Sh.Name
z = [Index!A:A].Find(ActiveSheet.Name, After:=[Index!A65536])
If Err.Number <> 0 Then [Index!A65536].End(3)(2) = x
End Sub
PS : le nom des feuilles est stocké dans la co:lonne A de la feuille "Index"
AV
re-bonjour, alors je viens de réessayer.... le problème c'est que mes onglets se créent par macro..... que voici: Sheets("MODELE").Select Sheets("MODELE").Copy After:=Sheets(4) Sheets("MODELE (2)").Select Sheets("MODELE (2)").Name = Range("b5") Sheets("MODELE").Select Range("C3:E15").Select ActiveCell.FormulaR1C1 = "" Range("F12").Select
par conséquent au lieu de mettre le nom de l'onglet , cela m'écrit "modele(2)"
il y a -t-il moyen de palier ce petit inconvénient?
autre chose..... j'ai voulu l'adapter à un autre classeur qui dans celui-ci l'onglet "index" est remplacer par l'onglet "feuille de départ". j'ai donc remplacer dans le code par "feuille de départ" tout ce qui était "index" ...mais ça ne marche pas :( où est mon erreur?
encore une fois merci d'avance
Une... Dans le module de ThisWorkbook :
Private Sub Workbook_SheetActivate(ByVal Sh As Object) On Error Resume Next x = Sh.Name z = [Index!A:A].Find(ActiveSheet.Name, After:=[Index!A65536]) If Err.Number <> 0 Then [Index!A65536].End(3)(2) = x End Sub
PS : le nom des feuilles est stocké dans la co:lonne A de la feuille "Index" AV
ksandre
merci beaucoooouppp
alors je viens de réessayer.... le problème c'est que mes onglets se créent par macro.....
Sub zzz() Application.ScreenUpdating = False On Error Resume Next Sheets("MODELE").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = [B5] 's'il y a déjà une feuille du même nom If Err.Number <> 0 Then Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True Exit Sub End If [Index!A65536].End(3)(2) = [B5] 'blablabla End Sub
autre chose..... j'ai voulu l'adapter à un autre classeur qui dans celui-ci l'onglet "index" est remplacer par l'onglet "feuille de départ". j'ai donc remplacer dans le code par "feuille de départ" tout ce qui était "index" ...mais ça ne marche pas :(
C'est pas une bonne habitude d'insérer des espaces dans les noms... Ca complique inutilement "la suite" Mieux vaudrait nommer ton onglet "feuille_de_départ" Si tu persistes dans les espaces, il faut mettre le nom de l'onglet entre des apostrophes :
Private Sub Workbook_SheetActivate(ByVal Sh As Object) On Error Resume Next x = Sh.Name z = ['feuille de départ'!A:A].Find(x, After:=['feuille de départ'!A65536]) If Err.Number <> 0 Then ['feuille de départ'!A65536].End(3)(2) = x End Sub
AV
merci beaucoooouppp
alors je viens de réessayer.... le problème c'est que mes onglets se
créent par macro.....
Sub zzz()
Application.ScreenUpdating = False
On Error Resume Next
Sheets("MODELE").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = [B5]
's'il y a déjà une feuille du même nom
If Err.Number <> 0 Then
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
Exit Sub
End If
[Index!A65536].End(3)(2) = [B5]
'blablabla
End Sub
autre chose..... j'ai voulu l'adapter à un autre classeur qui dans celui-ci
l'onglet "index" est remplacer par l'onglet "feuille de départ".
j'ai donc remplacer dans le code par "feuille de départ" tout ce qui
était "index" ...mais ça ne marche pas :(
C'est pas une bonne habitude d'insérer des espaces dans les noms...
Ca complique inutilement "la suite"
Mieux vaudrait nommer ton onglet "feuille_de_départ"
Si tu persistes dans les espaces, il faut mettre le nom de l'onglet entre des
apostrophes :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
x = Sh.Name
z = ['feuille de départ'!A:A].Find(x, After:=['feuille de départ'!A65536])
If Err.Number <> 0 Then ['feuille de départ'!A65536].End(3)(2) = x
End Sub
alors je viens de réessayer.... le problème c'est que mes onglets se créent par macro.....
Sub zzz() Application.ScreenUpdating = False On Error Resume Next Sheets("MODELE").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = [B5] 's'il y a déjà une feuille du même nom If Err.Number <> 0 Then Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True Exit Sub End If [Index!A65536].End(3)(2) = [B5] 'blablabla End Sub
autre chose..... j'ai voulu l'adapter à un autre classeur qui dans celui-ci l'onglet "index" est remplacer par l'onglet "feuille de départ". j'ai donc remplacer dans le code par "feuille de départ" tout ce qui était "index" ...mais ça ne marche pas :(
C'est pas une bonne habitude d'insérer des espaces dans les noms... Ca complique inutilement "la suite" Mieux vaudrait nommer ton onglet "feuille_de_départ" Si tu persistes dans les espaces, il faut mettre le nom de l'onglet entre des apostrophes :
Private Sub Workbook_SheetActivate(ByVal Sh As Object) On Error Resume Next x = Sh.Name z = ['feuille de départ'!A:A].Find(x, After:=['feuille de départ'!A65536]) If Err.Number <> 0 Then ['feuille de départ'!A65536].End(3)(2) = x End Sub