Attribuer à feuille excel le contenu d'une cellule de cette feuille

pepeye66

XLDnaute Nouveau
Bonsoir tous,
J'ai saisi la macro suivante:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B2")) Is Nothing Then
ThisWorkbook.ActiveSheet.Name = Range("B2")
End If
End Sub

Elle fonctionne bien mais si après avoir entré une valeur dans la cellule je la supprime, la macro se "coince" je dois l'arrêter et le nom précédemment saisi dans la cellule reste comme nom de feuille.
Une idée ? un correctif est il possible ?
Merci
 

DoubleZero

XLDnaute Barbatruc
Re : Attribuer à feuille excel le contenu d'une cellule de cette feuille

Bonjour, pepeye66, le Forum,

Peut-être ainsi :

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo fin
    ActiveSheet.Name = Range("b2").Value
    Exit Sub
fin:
    MsgBox "Compléter la cellule b2."
End Sub

A bientôt :)
 

thebenoit59

XLDnaute Accro
Re : Attribuer à feuille excel le contenu d'une cellule de cette feuille

Bonsoir Pepeye66.

Il est normal que la macro coince.
En effet tu supprimes la valeur qui est censée devenir le nom de la feuille.
Tu peux remédier à ce problème avec une condition ou une gestion d'erreur, comme je te le propose.
En effet en passant à la suite de la procédure en cas d'erreur, tu éviteras également les messages si tu utilises des caractères inappropriés.

Edit: Bonsoir DoubleZero

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B2")) Is Nothing Then
On Error Resume Next
ThisWorkbook.ActiveSheet.Name = Range("B2")
End If
End Sub
 

DoubleZero

XLDnaute Barbatruc
Re : Attribuer à feuille excel le contenu d'une cellule de cette feuille

Re-bonjour,

Une autre possibilité, si la cellule b2 devait être vide...

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim mem As String
    mem = ActiveSheet.Name
    If Range("b2").Value <> "" Then
        ActiveSheet.Name = Range("b2").Value
    Else
        ActiveSheet.Name = mem
    End If
End Sub

A bientôt :)

P. S. : Bonjour, thebenoit59
 
Dernière édition:

pepeye66

XLDnaute Nouveau
Re : Attribuer à feuille excel le contenu d'une cellule de cette feuille

Re-bonjour,

Une autre possibilité, si la cellule b2 devait être vide...

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim mem As String
    mem = ActiveSheet.Name
    If Range("b2").Value <> "" Then
        ActiveSheet.Name = Range("b2").Value
    Else
        ActiveSheet.Name = mem
    End If
End Sub

A bientôt :)

P. S. : Bonjour, thebenoit59

Oui, c'est çà ! En effet la cellule B2 n'est pas obligée d'être remplie (auquel cas la feuille porte un N° d'ordre) et par ailleurs il faut pouvoir effacer/modifier la valeur de la cellule B2 si besoin.
Donc ta dernière proposition fonctionne à merveille -> MERCI
@ thebenoit59: Merci pour ta proposition même si je ne l'ai pas testée celle de DoubleZero me convenant.

Merci à vous deux, c'est super de trouver de l'aide si vite et si valable.

;)
 

pepeye66

XLDnaute Nouveau
Re : Attribuer à feuille excel le contenu d'une cellule de cette feuille

OUPS ! j'ai encore un problème que je n'avais pas remarqué:
Si je saisi une valeur dans la cellule B2 et puis que je l'efface, cette valeur reste affichée dans le nom de la feuille.
Alors que je voudrais que la dite feuille récupère le N° d'ordre qu'elle avait au départ...
Est ce possible ?
Merci

PS: @ thebenoit59: Ta proposition fonctionne aussi avec le même aléa que ci dessus.
;)
 
Dernière édition:

DoubleZero

XLDnaute Barbatruc
Re : Attribuer à feuille excel le contenu d'une cellule de cette feuille

Re-bonjour,

... Si je saisi une valeur dans la cellule B2 et puis que je l'efface, cette valeur reste affichée dans le nom de la feuille.
Alors que je voudrais que la dite feuille récupère le N° d'ordre qu'elle avait au départ...

:confused:

N'est-ce pas ce que fait la suggestion du #4 ?

J'ai du mal à comprendre.

A bientôt :)
 

pepeye66

XLDnaute Nouveau
Re : Attribuer à feuille excel le contenu d'une cellule de cette feuille

Je m'explique:
J'ai un classeur avec (entr'autre) 50 feuilles nommées de 1 à 50 - toutes ces feuilles identiques et sont pré-agencées.
imaginons que l'on remplisse la feuille "1" et que l'on rentre un nom dans la cellule B2: avec ta proposition cette entrée en B2 remplace bien le nom de la feuille en le remplaçant par la saisie en B2.
Mais, si l'on efface la saisie en B2 (par exemple pour remettre la feuille dans le circuit) eh bien le nom qui avait été saisi en B2 reste comme nom de feuille; alors que je voudrais que le nom de la feuille redevienne "1"
Mais, est ce possible ?
Merci
;)
 

pepeye66

XLDnaute Nouveau
Re : Attribuer à feuille excel le contenu d'une cellule de cette feuille

OK, je vais me contenter de ta proposition qui fonctionne bien et sera suffisante pour la généralité des cas.
Les quelques fois où il faudra "régénérer" la feuille et lui redonner son aspect initial et sa numérotation initiale je le ferai manuellement
ou bien je rentrerai le N° dans la cellule B2...Ce qui sera certainement la meilleures solution.
Merci beaucoup pour tes réponses et le temps que tu y as consacré.
;)
 

Marc L

XLDnaute Occasionnel
Bonjour !

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Address = "$B$2" Then Me.Name = IIf(.Value > "", .Value, Me.CodeName)
    End With
End Sub
Variante : utiliser la propriété Index au lieu de CodeName

_______________________________________________________________________________
Merci de cliquer sur J'aime ce post en bas à gauche de chaque message ayant aidé …

_______________________________________________________________________________
Je suis Paris, Charlie, Bruxelles, …
 

pepeye66

XLDnaute Nouveau
Re : Bonjour !

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Address = "$B$2" Then Me.Name = IIf(.Value > "", .Value, Me.CodeName)
    End With
End Sub
Variante : utiliser la propriété Index au lieu de CodeName

_______________________________________________________________________________
Merci de cliquer sur J'aime ce post en bas à gauche de chaque message ayant aidé …

_______________________________________________________________________________
Je suis Paris, Charlie, Bruxelles, …

Merci pour cette réponse "nocturne"
C'est pas mal mais ça ne me convient pas car par cette macro quand on efface la saisie de la cellule B2 la feuille retrouve sa "numérotation générique" et non pas le nom (un N°) que je lui avais affecté (à cause du fait que d'autres feuilles cachées existent et que donc la numérotation générique des feuilles ne va plus de 1 à 50 mais de "feuille5" à "feuille55": ce qui laisse supposer que d'autres feuilles invisibles existent et cela risque de perturber les utilisateurs néophytes)
J'ai une proposition à faire:
Dans le coin droit de chacune des 50 feuilles en cellule AH1 je saisis sur chaque feuille son N°
Peut on alors alterner par une macro le nom de la feuille ainsi: Si B2 est vide alors nom de feuille = AH1 si B2 n'est pas vide alors nom de feuille = B2 (et si j'efface B2 nom de feuille revient à AH1)
Qu'en pensez vous ? pouvez vous m'aider dans ce sens ?
Merci,
pepeye
 

thebenoit59

XLDnaute Accro
Re : Attribuer à feuille excel le contenu d'une cellule de cette feuille

Bonjour Pepeye, le fil.

Le soucis est qu'enregistrer une variable contenant l'ancien nom de ta feuille n'est pas aisée, en effet les variables n'ont pas une durée de vie infinie.
Le mieux serait de stocker dans une feuille la liste des noms de feuilles, et ainsi pouvoir récupérer l'ancien nom.

Edit: Je n'avais pas lu ton message jusqu'au bout.

Oui tu peux faire ça.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B2")) Is Nothing Then
On Error GoTo Suite
ThisWorkbook.ActiveSheet.Name = Range("B2")
End If
Exit Sub
Suite:
ThisWorkbook.ActiveSheet.Name = Range("AH1")
End Sub
 
Dernière édition:

pepeye66

XLDnaute Nouveau
Re : Attribuer à feuille excel le contenu d'une cellule de cette feuille

Bonjour et merci de ta réponse.
Mais justement, l'ancien nom de feuille (celui qui doit revenir à la feuille si elle n'est pas/plus utilisée càd si la cellule B2 n'est pas remplie ou effacée) est noté "en dur" dans la cellule AH1 (protégée) de chaque feuille, ce n'est pas une variable.
;)
PS: je n'avais pas vu ta modif, je vais essayer ta proposition? ;)
 

pepeye66

XLDnaute Nouveau
Re : Attribuer à feuille excel le contenu d'une cellule de cette feuille

Bonjour Pepeye, le fil.
....

Oui tu peux faire ça.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B2")) Is Nothing Then
On Error GoTo Suite
ThisWorkbook.ActiveSheet.Name = Range("B2")
End If
Exit Sub
Suite:
ThisWorkbook.ActiveSheet.Name = Range("AH1")
End Sub

SUPER ! ça fonctionne !!
Mille mercis à toi et à tous ceux qui m'ont aidé.

;) ;)
 

Discussions similaires

Réponses
6
Affichages
196

Statistiques des forums

Discussions
312 204
Messages
2 086 198
Membres
103 155
dernier inscrit
lombrik