Copier la valeur d'une cellule pour nommer un onglet
Résolu
Stéphane-Régis
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
benkamran Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
benkamran Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Copier la valeur d'une cellule pour nommer un onglet
- Comment copier une vidéo youtube - Guide
- Aller à la ligne dans une cellule excel - Guide
- Rouvrir un onglet fermé - Guide
- Super copier - Télécharger - Gestion de fichiers
- Excel cellule couleur si condition texte - Guide
7 réponses
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] ?
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] ?
Bonjour,
Avec ce code :
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 :
ou :
.....
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
.....
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
Cette formule fonctionne très bien car j'ai pris le n° de la feuille au lieu de prendre son nom.
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.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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 :
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 :
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
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.
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)
avec l'événement KeyDown :
KeyDown = touche appuyée. Ici on va utiliser la touche "Entrée" (KeyCode = 13) pour valider notre saisie.
What Else?
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?
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!
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!