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 :

Faire correspondre nom feuille avec index multipages [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut Faire correspondre nom feuille avec index multipages
    Bonjour à tous,

    Dans mon UserForm Multipages il y a 6 pages :

    Index = 0 - Page "Saisies d'Articles"
    Index = 1 - Page "Saisies de Clients"
    Index = 2 - Page "Commandes d'Articles"
    Index = 3 - Page "Saisies de Fournisseurs"
    Index = 4 - Page "Livre_Activités"
    Index = 5 - Page "Ventes d'Articles"

    Dans chaque feuille de calcul il y a un bouton qui appelle l'UF. Ce que je cherche à faire, c'est mettre le focus sur la page correspondant. Si l'utilisateur se trouve sur la feuille "Clients" par exemple, il ne doit arriver que sur la page "Saisies de Clients" lorsqu'il clique sur le bouton et directement dans la première TextBox à saisir (ici Txt_Nom). J'ai essayé ce code mais ça ne fonctionne pas.
    Pouvez-vous m'apporter votre aide s'il vous plait ?
    Je vous en remercie par avance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.MultiPage1.Pages(1).Txt_Nom.SetFocus
    Code commun à tous les boutons des feuilles qui appellent l'UF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub AcceuilAffiche()
    Load UFsaisies
    UFsaisies.Show
    End Sub

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour VBA, bonjour le forum,

    Je vois mal comment tu pourrais avoir une TextBox dans chaque page portant le même nom ?!...
    Je te propose le code suivant à l'initialisation de l'UserForm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Initialize()
    Dim a As Byte
    Dim CTRL As Control
     
    a = ActiveSheet.Index - 1
    MultiPage1.Value = a
    For Each CTRL In Me.MultiPage1.Pages(a).Controls
        If TypeOf CTRL Is MSForms.TextBox Then CTRL.SetFocus: Exit For
    Next CTRL
    End Sub

  3. #3
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    Bonjour Thautheme,

    Non je n'ai pas une TextBox identique dans chaque page de mon UF, elles sont toutes différentes. Ce qui est identique c'est le bouton d'appel qui se trouve dans les feuilles de calcul qui ont tous un code commun.

    Désolé, mais est-ce que tu pourrais m'expliquer le fonctionnement de ton code s'il te plait ?

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour

    Tu règle la propriété TabIndex à 0, une fois pour toute, de tes textbox que tu veux sélectionner à l'ouverture de chaque page.


    Et pour ouvrir sur la page en fonction de la feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Initialize()
    Dim c As Integer
     
    Select Case ActiveSheet.Name
        Case "Feuil2": c = 1
        Case "Feuil3": c = 2
        '....
    End Select
     
    Me.MultiPage1.Value = c
    End Sub
    pas besoin de mettre la feuille de la page1

  5. #5
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Re,

    Si je t'ai dit ça c'est parque ce que tu écrivais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.MultiPage1.Pages(1).Txt_Nom.SetFocus
    Comme tu n'as pas renseigné le nom de la TextBox de chaque page, impossible de lui donner le focus... D'où la boucle. Il y a de fortes chances que la bonne TextBox prenne le focus mais, selon la construction de l'UserForm, cette méthode peut s'avérer erronée. Si tu donnes le nom de la TextBox de chaque page je pourrai modifier le code...

    Le code commenté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
    Dim a As Byte 'déclare la variable a (index Mutipage)
    Dim CTRL As Control 'décalre la variable CTRL (ConTRôLe)
     
    a = ActiveSheet.Index - 1 'définit l'index a (corespond à l'index de l'onglet -1, page 1 => index 0, page 2 => index 1, etc.)
    MultiPage1.Value = a 'définit la page affichée du contrôle mutipage
    For Each CTRL In Me.MultiPage1.Pages(a).Controls 'boucle sur tous les contrôles CTRL de la page affichée du contrôle Multipage1
        'si le contrôle est une TextBox, place le curseur dans le contrôle et sort de la boucle
        If TypeOf CTRL Is MSForms.TextBox Then CTRL.SetFocus: Exit For
    Next CTRL 'prochain contrôle de la boucle
    End Sub
    [Édition]
    Bonjour Mercatog, nos posts se sont croisés. Bien évidement je conseille ta proposition beaucoup plus simple et efficace !...

  6. #6
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    Re,

    Désolé d'avoir tardé je viens de lire vos commentaires.

    Mercatog, je vais tester ta proposition et je reviens donner le résultat.

    Thautheme, j'aurai dû être plus explicite dans ma demande.
    Page 1 (0) - Focus Txt_Désign
    Page 2 (1) - Focus Txt_Nom
    Page 3 (2) - Focus Cmb_NumFourn
    Page 4 (3) - Focus Txt_NomFourn
    Page 5 (4) - Focus Cmb_Fact
    Page 6 (5) - Focus Cmb_Client

  7. #7
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    mercatog,

    Désolé mais je ne comprends pas ce que tu veux dire :
    Tu règle la propriété TabIndex à 0, une fois pour toute, de tes textbox que tu veux sélectionner à l'ouverture de chaque page.
    Est-ce que tu me dis que toutes les TextBox recevant le focus doivent être à 0, en général n'est-ce pas 1 le premier Index ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Graphviz] Faire correspondre un arrowhead avec un arrowtail
    Par Invité dans le forum Bibliothèques, systèmes et outils
    Réponses: 5
    Dernier message: 02/12/2012, 16h10
  2. Faire correspondre 2 feuilles
    Par Aya83 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/03/2012, 19h54
  3. [XL-2007] Tableau excel > macro pour faire correspondre plusieurs feuilles.
    Par DAVIDSAVOIE dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/02/2012, 15h12
  4. [XL-2003] Faire correspondre une colonne avec une autre et copié les données dans la bonne colonne
    Par mairiemeudon dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/06/2010, 15h31
  5. Réponses: 1
    Dernier message: 21/02/2007, 01h29

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