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.
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"...
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
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
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"...
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.