Recupération nom de feuille dans private sub
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
je voudrais stocker le nom de ma feuille active dans une variable pendant que ma private sub tourne puis aller sur une autre feuille sur laquelle j'ai mis un bouton qui appelle une macro pour activer la feuille dont le nom a été stocké precedemment.
Alors voici private sub :
Private Sub Worksheet_Change(ByVal Target As Range)
'cellules colonne B
sh1 = ActiveSheet.Name
If Not Application.Intersect(Target, Range("B1:B9999")) Is Nothing And Target.Count = 1 Then
'test en majuscule: permet maj et min dans la saisie
If Target.Value = "NEW" Then
'ligne
lig = Target.Row
' les "" de la formule, Chr(34)--->" pour la chaine formule
rien = ""
Range("K" & Target.Row).FormulaLocal = "=SI(NBCAR(J" & lig & ")<>16;" & Chr(34) & rien & Chr(34) & ";J" & lig & ")"
End If
End If
End sub
ma maco sur bouton :
Sub Bouton4_Clic()'
Sheets("sh1").Select
End Sub
j'ai fait une décaration de variable globale en première ligne de mon module 1. Mais quand j'exécute ca me met une message box "Impossible d'exécuter le code en mode arrêt"
quelqu'un a une idée pour m'aider ?
je voudrais stocker le nom de ma feuille active dans une variable pendant que ma private sub tourne puis aller sur une autre feuille sur laquelle j'ai mis un bouton qui appelle une macro pour activer la feuille dont le nom a été stocké precedemment.
Alors voici private sub :
Private Sub Worksheet_Change(ByVal Target As Range)
'cellules colonne B
sh1 = ActiveSheet.Name
If Not Application.Intersect(Target, Range("B1:B9999")) Is Nothing And Target.Count = 1 Then
'test en majuscule: permet maj et min dans la saisie
If Target.Value = "NEW" Then
'ligne
lig = Target.Row
' les "" de la formule, Chr(34)--->" pour la chaine formule
rien = ""
Range("K" & Target.Row).FormulaLocal = "=SI(NBCAR(J" & lig & ")<>16;" & Chr(34) & rien & Chr(34) & ";J" & lig & ")"
End If
End If
End sub
ma maco sur bouton :
Sub Bouton4_Clic()'
Sheets("sh1").Select
End Sub
j'ai fait une décaration de variable globale en première ligne de mon module 1. Mais quand j'exécute ca me met une message box "Impossible d'exécuter le code en mode arrêt"
quelqu'un a une idée pour m'aider ?
A voir également:
- Recupération nom de feuille dans private sub
- Navigation in private - Guide
- Bruler feuille de laurier - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Nom de l'adresse - Forum Réseaux sociaux
- Feuille diddl la plus rare ✓ - Forum Graphisme
4 réponses
Donc ce sont 2 fonctionnements indépendants, laisse ton autre macro faire son boulot tranquillement.
Dans ThisWorkbook :
Dans Feuil3 :
https://www.cjoint.com/?CFClNK1IBOO
eric
Dans ThisWorkbook :
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) Set Feuil3.sh1 = Sh End Sub
Dans Feuil3 :
Public sh1 As Worksheet Private Sub CommandButton1_Click() sh1.Select End Sub
https://www.cjoint.com/?CFClNK1IBOO
eric
Utilisateur anonyme
Merci bcp ! Ca fonctionne et j'ai reussi à le mettre dans mon classeur !
Bonjour,
ce message dit simplement que tu ne peux pas faire de pas à pas ici.
Lancer la macro directement, éventuellement mettre un Stop plus loin là où c'est accepté.
Par contre je ne vois pas bien le but ni l'utilité d'essayer d'activer une autre feuille pendant que ma private sub tourne. D'une part tu ne rends jamais la main au système mais surtout elle s'adresse à la feuille active, tu vas lire et écrire n'importe où si jamais tu actives vraiment une autre feuille...
A mon avis tu es sur une fausse piste.
D'autre part je déclarerais plutôt sh1 as Worksheet, et : sh1.select
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
ce message dit simplement que tu ne peux pas faire de pas à pas ici.
Lancer la macro directement, éventuellement mettre un Stop plus loin là où c'est accepté.
Par contre je ne vois pas bien le but ni l'utilité d'essayer d'activer une autre feuille pendant que ma private sub tourne. D'une part tu ne rends jamais la main au système mais surtout elle s'adresse à la feuille active, tu vas lire et écrire n'importe où si jamais tu actives vraiment une autre feuille...
A mon avis tu es sur une fausse piste.
D'autre part je déclarerais plutôt sh1 as Worksheet, et : sh1.select
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
En fait c'est tout betement pour faire un bouton retour. Je suis sur la feuille sur laquelle j'ai ma private sub, je clique sur un lien hypertexte qui m'enmène sur une autre feuille et je voudrais revenir sur la feuille précedente.
Comme tu peux voir si je suis pas rès douée, mais j'essaye de m'améliorer ....
Comme tu peux voir si je suis pas rès douée, mais j'essaye de m'améliorer ....
Tu es sur Feuil1.
Tu lances ta macro en cas d'édition d'une cellule.
A la fin de ta macro tu es toujours sur Feuil1 puisque tu n'y actives aucune feuille.
Je ne comprend toujours ce que tu cherches à faire ni le rapport avec ta macro...
Précise tout le fonctionnement que tu as envisagé en citant sur quelle feuille tu es.
Et comme j'ai relu, à la place de:
'test en majuscule: permet maj et min dans la saisie
If Target.Value = "NEW" Then
j'imagine plutôt :
If ucase(Target.Value) = "NEW" Then
eric
Tu lances ta macro en cas d'édition d'une cellule.
A la fin de ta macro tu es toujours sur Feuil1 puisque tu n'y actives aucune feuille.
Je ne comprend toujours ce que tu cherches à faire ni le rapport avec ta macro...
Précise tout le fonctionnement que tu as envisagé en citant sur quelle feuille tu es.
Et comme j'ai relu, à la place de:
'test en majuscule: permet maj et min dans la saisie
If Target.Value = "NEW" Then
j'imagine plutôt :
If ucase(Target.Value) = "NEW" Then
eric
Je suis sur Feuil1, lorsque je mets "NEW" dans une cellule de la colonne B, ma macro mets ma formule dans la colonne K. Puis, je clique sur un lien hypertexte de ma feuil1 qui m'amène à la feuil2. Je voudrais ensuite revenir à la feuil1. Le truc c'est que ma feuil2 est invariante, alors que j'ai ce lien hypertexe (et ma macro aussi) sur toutes les autres feuilles sauf la feuil2.