IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Sélection d'un nom de feuille dans un textbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Sélection d'un nom de feuille dans un textbox
    Bonjour à tous,

    Voici mon problème. J'ai un fichier avec 52 onglets.
    A l'ouverture du fichier, un formulaire (FrmChoix) s'affiche. Dans ce formulaire une zone de texte (TxtChoix) dans laquelle on tape un numéro de 1 à 52.
    Si on tape "1" alors l'onglet 1 s'affiche, 2 etc.
    Comment encode t'on cela en Vba sous Excel ?
    Je vous remercie par avance de votre aide

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets(TxtChoix.value).select
    ou peut-être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets(Cint(TxtChoix.value)).select
    J'ai pas testé, et si tu entres "01", je suis pas sur qu'il accepte
    A+

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Oui, ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Val(TxtChoix)).activate

  5. #5
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Oui, ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Val(TxtChoix)).activate
    Bonjour,

    Super ça marche. Par contre j'ai un autre problème dans cette même application.
    Comment cacher toutes les feuilles sauf la 1 sans être obligée de taper une litanie de texte du genre
    Sheets("2").visible=false
    Sheets("3") etc...
    Merci par avance

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub test()
    Dim X As Integer
     Sheets(1).Visible = True
    For X = 2 To Sheets.Count
        Sheets(X).Visible = False
    Next X
    End Sub
    A+

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par NEC14
    Dans ce formulaire une zone de texte (TxtChoix) dans laquelle on tape un numéro de 1 à 52.
    Si on tape "1" alors l'onglet 1 s'affiche, 2 etc.
    Le code qu'on t'a passé (aussi bien Gorfael que moi) ne fonctionne "correctement" que si tu n'as déplacé aucune de tes feuilles de calculs. Ex : Si tu déplaces "feuil1" pour la placer en troisième position, Sheets(3).Activate ou Sheets(3).visible = False concernera "feuil1".
    Juste pour indication.
    Si tu as déplacé tes feuilles, tu dis, il y a une solution simple.

  8. #8
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Le code qu'on t'a passé (aussi bien Gorfael que moi) ne fonctionne "correctement" que si tu n'as déplacé aucune de tes feuilles de calculs. Ex : Si tu déplaces "feuil1" pour la placer en troisième position, Sheets(3).Activate ou Sheets(3).visible = False concernera "feuil1".
    Juste pour indication.
    Si tu as déplacé tes feuilles, tu dis, il y a une solution simple.
    Merci beaucoup, ça marche trés bien. Je n'avais pas déplacé les feuilles.
    Je vais abuser un peu de vos connaissances.
    Dans FrmChoix lorsque je choisi un n° de feuille ça marche bien, par contre j'aimerai que lorsque mon choix change, la feuille précédemment choisie devienne invisible au profit du nouveau choix.
    Après ce sera fini.
    Merci pour votre patience

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je crois me souvenir que tu saisis tes N° de feuille dans un txtbox... Auquel cas, en entrant dans le TextBox, tu mémorises le N° de la feuille active et en sortie, si ce N° a changé, tu masques l'ancien N°. Pour ça, tu déclares une variable NoFeuille dans les déclarations de l'objet userform
    Dans TxtBox_Enter, tu mémorises le N° de la feuille que le txtbox contient, et dans TxtBox_Exit tu masques la feuille(NoFeui)
    Pour le code, je pense que tu sauras te débrouiller

  10. #10
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Ok je vais me débrouiller.
    Merci pour l'explication. Je te tiens au courant

    J'ai essayé de faire, mais je n'y arrive pas. Je suis néophyte en la matière et je ne maîtrise pas le sujet. Je ne sais pas comment on fait pour mémoriser un n° de feuille. Je suis désolé de vous faire perdre votre temps.
    Pouvez-vous me donner le code s'il vous plait ?

  11. #11
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    NoFeuil = TxtChoix

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    ou plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NoFeuil = val(TextChoix)

  13. #13
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    ou plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NoFeuil = val(TextChoix)
    Bonjour ouskel'n'or

    Voici ce que j'ai fait, mais ça ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub TxtChoix_Enter()
    Dim nfeuil As Long
    nfeuil = (Val(TxtChoix))
    If nfeuil = (Val(TxtChoix)) Then
    Sheets(Val(TxtChoix)).Visible = True
        Sheets(Val(TxtChoix)).Activate
    End If
    End Sub

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut
    T'as du sauter un épisode :
    nfeuil = (Val(TxtChoix))
    If nfeuil = (Val(TxtChoix)) then
    nfeuil= contenu de ma textBox
    si nfeuil = contenu de ma TextBox, faire...

    ce ne serait pas plutot :
    nfeuil = ActiveSheet.Name
    If nfeuil = (Val(TxtChoix)) Then
    ou
    nfeuil = ActiveSheet.Index
    If nfeuil = (Val(TxtChoix)) Then
    nfeuil = soit nom d'onglet soit numéro d'index de la feuille active

    Ou autre chose qui fait référence à une valeur que tu peux choisir dans ta TextBox

    Quand tu es bloqué, tu prends une feuille blanche (ou verte ), ou une ardoise et tu suis le déroulement de ton programme (ta macro), en notant uniquement tes variables :
    J'exécute cette ligne => variable1 = X
    la suivante variable1=Y
    et une fois que ça fonctionne sur le papier, tu peux lancer ton programme. Si tout ce passe bien, c'est bon, sinon, sur Excel, tu mets un point d'arrêt sur le titre de ta macro, et tu l'exécute en pas-à-pas avec F8
    Tu affiches la fenêtre "variables locales", ou tu mets ta souris sur la variable (la bulle d'aide te donne sa valeur actuelle). Et tu peux vérifier où il y a une différence entre ce que tu attends et ce qu'Excel a calculé.

    A+

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello Nec14,
    J'ai compris le test que tu voulais faire mais donne un exemple du nom de tes feuilles qu'on y voit plus clair.
    Si tu fais
    nfeuil = (Val(TxtChoix))
    que trouve-t-on dans nfeuil ?
    Mets un point d'arrêt sur
    If nfeuil = (Val(TxtChoix)) Then
    et regarde ce que tu as dans nfeuil en passant la souris dessus.

  16. #16
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Par exemple si la feuille1 ("1") est affichée, la feuille2 ("2") est masquée et les autres aussi par ailleurs.

  17. #17
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Citation Envoyé par Gorfael Voir le message
    Salut
    T'as du sauter un épisode :
    nfeuil = (Val(TxtChoix))
    If nfeuil = (Val(TxtChoix)) then
    nfeuil= contenu de ma textBox
    si nfeuil = contenu de ma TextBox, faire...

    ce ne serait pas plutot :
    nfeuil = ActiveSheet.Name
    If nfeuil = (Val(TxtChoix)) Then
    ou
    nfeuil = ActiveSheet.Index
    If nfeuil = (Val(TxtChoix)) Then
    nfeuil = soit nom d'onglet soit numéro d'index de la feuille active

    Ou autre chose qui fait référence à une valeur que tu peux choisir dans ta TextBox

    Quand tu es bloqué, tu prends une feuille blanche (ou verte ), ou une ardoise et tu suis le déroulement de ton programme (ta macro), en notant uniquement tes variables :
    J'exécute cette ligne => variable1 = X
    la suivante variable1=Y
    et une fois que ça fonctionne sur le papier, tu peux lancer ton programme. Si tout ce passe bien, c'est bon, sinon, sur Excel, tu mets un point d'arrêt sur le titre de ta macro, et tu l'exécute en pas-à-pas avec F8
    Tu affiches la fenêtre "variables locales", ou tu mets ta souris sur la variable (la bulle d'aide te donne sa valeur actuelle). Et tu peux vérifier où il y a une différence entre ce que tu attends et ce qu'Excel a calculé.

    A+

    Bonjour,

    Tu as raison, je devrais procéder de cette manière. Mais je veux faire vite et je ne prends pas toujours le temps pour la patience.
    Sinon merci pour ton aide

  18. #18
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut ouskel'n'or, Nec14, et le forum
    J'ai compris le test que tu voulais faire
    Moi, pas du tout (voir mon poste précédent

    Je viens de relire les postes précédents, et ça y est :
    sur la feuille de code de l'USF, en haut, avant les ùacros, tu déclares ta variable :
    Public nfeuil as long

    ensuite, il te faut créer 2 macros pour faire ce qu'a dit ouskel'n'or :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub TxtChoix_Enter()
    nfeuil = Clng(activesheet.name)
    End Sub
    Je mémorise la feuille : le nom de la feuille transformé en Long à l'entrée dans la TextBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub TxtChoix_Exit()
    If nfeuil <> clng((Val(TxtChoix))) Then
    Sheets(Val(TxtChoix)).Visible = True
    Sheets(Val(TxtChoix)).Activate
    Sheets(nfeuil).visible=false
    End If
    End Sub
    Quand je sorts de la Textbox, je compare le nom choisit avec celui de la feuille active : s'il est différent, j'affiche la feuille choisie, et je masque celle mémorisée.
    CLng() transforme une valeur en entier long. Comme j'ai transformé le nom de la feuille, je fais de même pour la valeur de la TextBox : ce n'est sans doute pas nécessaire, mais quand on est en débuggage, au bout d'un moment, je préféres prendre mes précautions

    A+

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par NEC14 Voir le message
    Par exemple si la feuille1 ("1") est affichée, la feuille2 ("2") est masquée et les autres aussi par ailleurs.
    Ok alors "1" est un string, pas un long. Auquel cas, pour sélectionner la bonne feuille, tu dois mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub TxtChoix_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim nfeuil as string
    nfeuil = trim(TxtChoix.text) 'on supprime les espaces éventuels
        Worksheets(nfeuil).Visible = True
        Sheets(nfeuil).Activate
    End Sub
    Teste ça et dis-nous
    A+

    NB - C'est volontairement que j'ai placé le code dans _Exit(...)

  20. #20
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    J'ai testé les 2 codes. Dans les 2 cas après un nouveau choix, les feuilles précédentes restent affichées.
    Rectificatif, le code de Gorfael fonctionne bien. Je me suis trompé dans une ligne, c'est corrigé et ça marche.
    Par contre comment empêcher que les utilisateurs aillent dans "Format/feuille/afficher" pour afficher une feuille, l'idéal serait qu'elles n'apparaissent pas, mais est-ce possible ?
    Sinon merci beaucoup pour votre aide et surtout votre patience.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2013] Nom de feuille dans vba
    Par pubbins dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/05/2014, 09h59
  2. [Toutes versions] Recupérer les noms des feuilles dans Excel
    Par cinfo84 dans le forum Access
    Réponses: 3
    Dernier message: 31/07/2012, 23h10
  3. Interroger le nom des Feuilles dans un Workbook
    Par athos7776 dans le forum Excel
    Réponses: 6
    Dernier message: 01/12/2008, 16h28
  4. Affection d'un nom à une feuille dans une macro
    Par bichouille dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/11/2006, 12h25
  5. [VBA E] nom de feuille dans une combobox
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 20/06/2006, 19h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo