Copier/Coller une cellule dans le nom de l'onglet

BEBER1212

XLDnaute Nouveau
Bonjour,

Je pense que le titre est clair. Je veux copier la valeur de la cellule A1 (feuille 1) dans le nom de la feuille 1.
Je débute. J'ai fait une macro rapide et ça me donne le code suivant :

Range("A1").Select
Selection.Copy
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "A"

Sauf que je ne veux pas forcément A dans le titre, mais la valeur de A1.

Un conseil ? Merci.
 

ROGER2327

XLDnaute Barbatruc
Re : Copier/Coller une cellule dans le nom de l'onglet

Re...
Code:
[COLOR="DarkSlateGray"][B]Sheets("Feuil1").Name = Sheets("Feuil1").Range("A1").Value[/B][/COLOR]
Mais ça marche, au plus, une fois si Sheets("Feuil1").Range("A1").Value est autre chose que "Feuil1" !
Parce qu'ensuite, il n'y a plus de feuille "Feuil1"...
ROGER2327
#3445


18 Floréal An CCXVIII
2010-W18-5T23:51:12Z
 

Staple1600

XLDnaute Barbatruc
Re : Copier/Coller une cellule dans le nom de l'onglet

Bonjour BEBER1212, ROGER2327, le fil, le forum

A tester ( ---> voir en bas du message EDITION 2 )

Code à mettre dans ThisWorkBook
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Range("A1") <> "" Then
On Error Resume Next
Sh.Name = Sh.Range("A1")
End If
End Sub
EDITION: pour éviter les mauvaise surprises (comme des caractères interdits en A1)

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
Sh.Name = IIf(Sh.Range("A1") = Empty, Sh.Name, Sh.Range("A1").Text)
End Sub
PS: tu peux peaufiner en cherchant sur le forum des exemples de macros qui remplacent les caractères interdits par des vbnullstring.

EDITION 2: voilà c'est en partie fait (je te laisse ajouter les autres caractères qui font tousser Excel ;) )
(PS: tu dois ne mettre qu'un seul de ces 3 codes
Il ne peut y avoir qu'une seule procédure Workbook_SheetActivate dans ThisWorBook)
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Range("A1") <> "" Then
Sh.Name = _
Replace(Replace(Replace(Sh.Range("A1").Text, "?", ""), "/", ""), "*", "")
End If
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Copier/Coller une cellule dans le nom de l'onglet

Re


Avec ceci c'est encore plus simple

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Range("A1") <> "" Then
With CreateObject("VBScript.RegExp")
    .Pattern = "\W"
    .Global = True
    Sh.Name = .Replace(Sh.Range("A1").Text, "")
End With
End If
End Sub
 

BEBER1212

XLDnaute Nouveau
Re : Copier/Coller une cellule dans le nom de l'onglet

Re...
Code:
[COLOR="DarkSlateGray"][B]Sheets("Feuil1").Name = Sheets("Feuil1").Range("A1").Value[/B][/COLOR]
Mais ça marche, au plus, une fois si Sheets("Feuil1").Range("A1").Value est autre chose que "Feuil1" !
Parce qu'ensuite, il n'y a plus de feuille "Feuil1"...
ROGER2327
#3445


18 Floréal An CCXVIII
2010-W18-5T23:51:12Z

Merci beaucoup Roger 2327, j'ai essayé avec ça et ça marche. Et comme j'ai un premier bouton qui me crée une nouvelle feuille à chaque fois "Invité_nom", et que je la renomme automatiquement par la première cellule, quand je re-clique sur le bouton, il me crée à nouveau une nouvelle feuille "Invité_nom" (la première n'existe plus). Donc ça marche.
Merci.

Staple 1600, je me fiche des caractères "délicats" car ce sont toujours des noms de famille dans la case que je souhaite utiliser.
Et en plus je ne comprends pas vraiment ton code (et oui je débute vraiment), style :
With CreateObject("VBScript.RegExp")
.Pattern = "\W"
.Global = True


Je ne comprends pas du tout à quoi ça sert. Mais ça marche avec le code de Roger 2327, c'est le principal pour le moment.
Merci.
 

Discussions similaires

Statistiques des forums

Discussions
312 779
Messages
2 092 045
Membres
105 166
dernier inscrit
Patrice60