Copier la valeur d'une cellule pour nommer un onglet

Résolu/Fermé
Stéphane-Régis Messages postés 14 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 4 avril 2014 - 30 mars 2014 à 01:19
benkamran Messages postés 2 Date d'inscription jeudi 4 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014 - 12 sept. 2014 à 05:35
Bonjour à tous,
Comme le dit le titre de ma recherche, je souhaite nommer l'onglet 1 en récupérant la valeur de la cellule A1. Est-ce possible ?

Merci à toutes et à tous !
A voir également:

7 réponses

Salut,

ActiveSheet.Name = Range("A1").Value

Cordialement,
0
Stéphane-Régis Messages postés 14 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 4 avril 2014 1
30 mars 2014 à 14:37
Bonjour à vous
Je vous remercie d'avoir éclairé ma lanterne !

Et si je veux que le nom de l'onglet[Feuil2] se change avec un bouton placé dans l'onglet[Feuil1] ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
31 mars 2014 à 13:40
Bonjour,

Avec ce code :
Private Sub CommandButton1_Click()
Sheets("Feuil2").Name = Sheets("Feuil1").Range("A1").Value
End Sub

Attention, ce code :
- ne fonctionne qu'une seule fois, puisque la feuille "Feuil2" est renommée
- ne fonctionne pas en cas de :
>cellule A1 vide
>cellule A1 contenant des caractères "interdits" par Microsoft

Donc, penser à faire quelques tests pour éviter les erreurs, du genre :
If Sheets("Feuil1").Range("A1") = "" Then Exit Sub


ou :
If Instr(Sheets("Feuil1").Range("A1").Value, "/") > 0 Then Exit Sub


.....
0
Stéphane-Régis Messages postés 14 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 4 avril 2014 1
Modifié par pijaku le 31/03/2014 à 15:07
Bonjour pijaku,


Je vous remercie d'avoir répondu à ma demande.
Je viens de tester une autre syntaxe qui élimine tout souci pour le nom de l'onglet

Private Sub CommandButton1_Click()
Sheets(4).Name = Sheets(2).Range("K1").Value
End Sub


Cette formule fonctionne très bien car j'ai pris le n° de la feuille au lieu de prendre son nom.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
31 mars 2014 à 15:10
Oui.
Mais n'oublie pas mes autres conseils...

A+
0
Stéphane-Régis Messages postés 14 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 4 avril 2014 1
31 mars 2014 à 15:16
Je ne les oublierai pas. C'est promis !

Par contre j'aurai besoin de savoir comment on fait pour écrire dans la cellule du dessous si celle du dessus est déjà occupée. Je suis entrain de créer un répertoire.

Merci bcp pijaku
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
31 mars 2014 à 15:25
Tu veux le numéro de la première ligne vide de la colonne J par exemple :
Dim DernLigne As Long
DernLigne = Range("J" & Rows.Count).End(xlUp).Row + 1

Avec ce numéro, il t'es aisé de "nommer" la cellule correspondante :
Range("J" & DernLigne).Value = 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Stéphane-Régis Messages postés 14 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 4 avril 2014 1
Modifié par pijaku le 31/03/2014 à 15:44
Est-ce que je peux faire çà ?

Private Sub TextBox_Nom_Change()
Dim DernLigne As Long
DernLigne = Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B3") = TextBox_Nom.Value
End Sub
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
31 mars 2014 à 15:51
1- lorsque tu places des lignes de code sur le forum, il convient d'utiliser les "balises" code pour la mise en forme. Pour cela, jette un oeil par ici.
2- oui tu peux faire ça, mais ça ne fonctionnera pas.
Essaye plutôt ceci :
Private Sub TextBox_Nom_Change()
Dim DernLigne As Long
DernLigne = Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B" & DernLigne).Value = TextBox_Nom.Value
End Sub

Cependant, à chaque changement dans ton textbox, la macro va s'exécuter. Donc, si tu veux inscrire "BONJOUR" dans ton textbox, le résultat, dans ta feuille sera :
en B3 : B
en B4 : BO
en B5 : BON
...
en B8 : BONJOU
en B9 : BONJOUR
Pour n'obtenir que BONJOUR en B3, tu devrais crée un CommandButton, qui, lors d'un clic, déclencherai ta procédure.
Comme ceci :
Private Sub CommandButton1_Click()
Dim DernLigne As Long
DernLigne = Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B" & DernLigne).Value = TextBox_Nom.Value
End Sub
0
Stéphane-Régis Messages postés 14 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 4 avril 2014 1
31 mars 2014 à 16:15
J'ai besoin de pouvoir écrire sans être limité dans le nombre de caractères dans le TextBox.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
31 mars 2014 à 16:35
Oui et?
Tu n'es pas limité.....
0
Stéphane-Régis Messages postés 14 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 4 avril 2014 1
31 mars 2014 à 17:09
En fait ce que j'ai besoin c'est d'écrire "bonjour" dans une seule cellule et non pas comme tu l'as écrit plus haut.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
1 avril 2014 à 07:53
Bonjour,

Oui j'avais bien compris.
Donc tu as plusieurs choix.
Soit tu ajoutes un bouton de commande qui servira à écrire "Bonjour" dans ta cellule lorsque tu l'auras saisi et après avoir cliqué sur ton bouton. Je t'ai déjà donné ce code.
Soit tu utilises, au lieu de l'événement Change() de ton TextBox un autre événement.
Exemples :

avec l'événement Exit :
!! ATTENTION : il te faut une "porte de sortie", donc au moins un autre contrôle qui puisse avoir le focus dans ton UserForm (ex : un second textbox)
Private Sub TextBox_Nom_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim DernLigne As Long
DernLigne = Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B" & DernLigne).Value = TextBox_Nom.Value
End Sub


avec l'événement KeyDown :
KeyDown = touche appuyée. Ici on va utiliser la touche "Entrée" (KeyCode = 13) pour valider notre saisie.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim DernLigne As Long
'Si la touche n'est pas la touche Entrée, on ne fait rien
If KeyCode <> 13 Then Exit Sub
DernLigne = Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B" & DernLigne).Value = TextBox1.Value
End Sub


What Else?
0
benkamran Messages postés 2 Date d'inscription jeudi 4 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014
12 sept. 2014 à 05:35
Bonjour,

je cherche moi aussi à nommer les onglets d'un fichier en fonction de la valeur d'une cellule dans chacun des onglets.

De plus, est ce que cela fonctionne si la valeur de la cellule qui donne le nom de l'onglet est le résultat d'une formule? (par ex la valeur donnée par une rechV ou autre)

Je sais que la solution est au dessus, mais malheureusement, je n'y comprend vraiment pas grand chose aux macros... Si quelqu'un avait l'amabilité et la patience de pouvoir détailler un peu plus le processus, ça serait vraiment sympa!

Merci d'avance, cordialement!
0