OVH Cloud OVH Cloud

quel vocabulaire pour .....?

5 réponses
Avatar
ksandre
bonjour à tous

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

5 réponses

Avatar
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
Avatar
AV
Pfff....!
Remplacer Activesheet.name par x

AV
Avatar
ksandre
C'est super ..... merci ça marche d'enfer !!!

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





Avatar
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





Avatar
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