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 :

Donner le focus à la feuille après un clic sur UserForm [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Donner le focus à la feuille après un clic sur UserForm
    bonjour,

    je garde une UserForm en vbModeless en permanence sur le classeur.

    Je souhaite après avoir cliqué sur un contrôle de la UserForm rendre le focus à la feuille pour sélectionner d'autres cellules.

    Actuellement, il me faut cliquer sur la feuille pour l'activer puis sélectionner mes cellules. Des codes du genre : ne changent rien.


    ESVBA

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Pourtant ce code fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Tmp").Select
    Range("A1").Select
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut merci de votre réponse fring
    mais hélas non. Ce code ne fonctionne pas chez moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub TxtCouleur_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
     
        Dim Rg As Range
        Set Rg = Selection
     
       Selection.Merge True
        '--- du code ici
     
        Sheets("Planning ESSAIS").Select
        Range("A1").Select              '<<< même avec "A1" au lieu de Rg.Address
     
        Set Rg = Nothing
    End Sub
    Le traitement se fait bien bien mais je suis obligé après un double-clic sur une zone de texte de la UserForm de cliquer une première fois sur la feuille pour sélectionner la feuille puis de faire enfin la prochaine sélection de cellules.

    ESVBA

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Je te confirme qu'avec ce que tu nous montres cela fonctionne.
    Que contient cette partie ?
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut
    Fring, merci de vous intéresser à mon code.


    il s'agit simplement de mise en forme de la sélection de cellules d'après une textbox sur la UserForm.

    Exemple de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Selection
                .Interior.Color=255
                .Border = ...
                .FormulaR1C1 = "'" & TxtCouleur.Text.
              End With
    Mon code est dans un module de classe.

    Rappels complet :

    Le but est d'automatiser la mise en forme de cellules en utilisant des formats pré-établis (planning que l'on contruit, rien n'existe pour utiliser la MFC).


    Je clique sur un bouton, une UserForm s'ouvre et construit des textbox en récupérant les paramètres placés dans une feuille (Appelation, couleurs, catégories...).
    Je sélectionne une plage de cellules et clique sur la mise en forme correspondante placé dans une zone de texte (TxtCouleur) sur la UserForm. Ca fonctionne bien. MAIS...

    Si je veux sélectionner une autre plage de cellules, il me faut activer la feuille en cliquant dessus puis seulement en sélectionnant la nouvelle plage de cellules. Je voudrais éviter de devoir cliquer une première fois pour éviter puis une seconde fois.

    Est-le fait d'être dans un module de classe ?

    ESVBA

  6. #6
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Je ne sais pas si c'est dû au module de classe, joins un bout de fichier que je puisse tester
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  7. #7
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut
    Effectivement sur un nouveau classeur, les deux ".select" fonctionnent correctement.


    Sur ce classeur réduit à son maximum, je constate que la cellule "A1"est sélectionnée tout comme le contenu du textbox. Ce que je ne voyais pas avant sur le classeur complet.

    Hypothèse : le fait que l'on double clique lance correctement le code de la procédure "DblClic" mais le code intrinséque VBE exige de sélectionner le texte donc on perd le focus sur la feuille ?

    L'utilisation d'un label à la place d'un TextBox m'interdit de modifier facilement le contenu.



    Je ne vois pas de solution.

    ESVBA
    Fichiers attachés Fichiers attachés

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Je suis vraiment étonné que, depuis le temps que tu es sur le forum, tu en sois encore à travailler avec des Select et Selection.

    Dans ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Dim Rg As Range
        Set Rg = Selection
    Tu étais bien parti.
    Puis, tu écris ceci:
    Au lieu d'utiliser Rg...
    Pourquoi?

    Il faut penser objet pour tout:
    Classeurs, feuilles, Ranges, cellules.

    Si un code "oblige" une sélection, c'est qu'il est mal conçu.

    Je viens de tester ton fichier et j'ai une première erreur sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("TabRepartitionHoraireNiveau").Rows.Count
    TabRepartitionHoraireNiveau n'est pas défini.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  9. #9
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut bonjour ALaintech, le forum,
    effectivement j'ai oublié de changer cette ligne de code provenant de l'enregistreur de macro.

    Par contre dans le fichier "2Fring.xls" que j'ai posté, le tableau nommé "TabRepartitionHoraireNiveau" est bien défini et fonctionne correctement. Plage : "A3:F19" sur la feuille "Répartition Horaire par niveau".

    ESVBA

  10. #10
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    C'est bien ce fichier que j'ai testé.
    Après ajout du nom, l'erreur suivante est sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Text = Range("TabRepartitionHoraireNiveau[#Data]").ListObject.Range.Cells(i + 1, 1)
    Je ne vois pas à quoi correspond
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabRepartitionHoraireNiveau[#Data]
    Bref, difficile de tester ce fichier par rapport à la question initiale avec des erreurs dans le reste du code.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  11. #11
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut bonjour AlainTech
    je n'ai aucune erreur chez moi.
    Il s'agit des données d'un tableau Excel 2007. Je prélève le contenu des cellules du tableau pour le mettre dans les textbox correspondnates.

    J'ai reposté mon fichier dans le post plus haut.


    ESVBA

  12. #12
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Je suppose que c'est le passage de xlsm à xls qui provoquent les problèmes que je rencontre.
    Quoi qu'il en soit, je ne pourrai pas t'aider plus si ton fichier et ton code son développés en 2007.
    Je n'ai, pour le moment, qu'un 2003 sous la main.

    Idem dans le nouveau fichier, le tableau n'est pas nommé.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  13. #13
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut bonsoir AlainTech,
    j'aurai sous la main un XL2003 demain. Je testerai.


    ESVBA

  14. #14
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Bonjour AlainTech, le forum
    Je ne sais pas ce que j'ai fait avec les fichiers "2fring.xls" mais effectivement il y avait une erreur dans le fichier posté. Ce n'était certainement pas le même que celui sur mon bureau.

    J'ai mis pour la seconde version posté les déclarations de collection en remarque d'où le bug.

    Cette fois c'est la bonne. Et ça fonctionne sous XL2003.

    ESVBA
    Fichiers attachés Fichiers attachés

  15. #15
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    J'ai testé ton fichier sous 2007 et hormis une ligne de code qui bug chez moi et que j'ai du désactiver, il fonctionne correctement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Interface()
    '...
    '...
    .Accelerator = i '<-- cette ligne coince
    '...
    '...
    Lorsque je fais un double clic dans un textbox, il me sélectionne bien la cellule A1 de la feuille "Planning Hebdo 2012-13" et je peux sans problème faire la sélection d'autres cellules. Finalement je ne vois pas où se situe le problème
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  16. #16
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Bonjour Fring,
    Si Si il ya un problème...

    Je me suis mal exprimé depuis le début. Au niveau programmation, j'obtiens bien ce que je veux mais l'usage ne suit pas. Je m'explique :
    1. Je clique sur le bouton pour ouvrir la "UserForm"
    2. La fenêtre UserForm s'ouvre
    3. Je clique down sur une cellule et j'étends la selection avec la souris
    4. Je vais au-dessus de la TextBox et fait un double-clic

    La plage de cellules prend la bonne apparence. Ca Fonctionne parfaitement la première fois.

    MAIS SI JE POURSUIS:
    1. je place mon curseur souris au dessus de la première cellule de la nouvelle plage de cellules
    2. Je clique down-up pour sélectionner la feuille <<<<<<<<<<<
    3. Je clique down et glisse le curseur pour sélectionner la plage.


    Je souhaite pour l'utilisateur supprimer l'étape 2 (<<<<<<<) de sélection par un premier clic de la feuille. Je clique une fois (en général sur la premiere cellule de la plage de cellules) et je dois refaire un clic sur la même cellule pour commencer la sélection de la plage.

    C'est la raison pour laquelle je sélectionne la feuille en fin de procédure. Mais ca ne change rien au niveau pratique : il faut faire deux clics.


    J'espère être clair cette fois.

    ESVBA

  17. #17
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    J'avais bien compris mais je n'ai pas l'étape 2
    Je peux à chaque fois refaire la sélection de cellules dès le premier clic
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  18. #18
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut
    AH !

    je viens d'essayer le fichier posté sur des versions XL2010 - XL2007 et XL2003 provenant de différentes images et j'ai toujours le même problème !


    Question : Après le double clic, j'ai le contenu de la textbox sélectionné. Vous aussi ?

    ESVBA

  19. #19
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par ESVBA Voir le message
    Question : Après le double clic, j'ai le contenu de la textbox sélectionné. Vous aussi ?
    Oui
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  20. #20
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut Bonsoir Fring, AlainTech et le forum
    Je viens fermer la discussion et vous fournir ma solution.

    La solution est évidente, valait juste y penser.
    Mais comme je suis un amateur... (même si je suis inscrit depuis longtemps, AlainTech)

    Explication :
    quand on fait un double-clic, la procédure événementielle réalise les opérations écritent dans la procédure mais aussi les opérations "programmées par défaut". Pour une zone de texte le double-clic provoque la sélection du texte donc indirectement la perte du focus mis sur la feuille. Il faut donc annuler cette procédure en ajoutant simplement :J'ai énormément de mal à comprendre que cela fonctionne simplement chez toi Fring. Avec mes essais sur différents postes...
    Citation Envoyé par fring Voir le message
    Oui

    Merci à vous deux.

    ESVBA

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

Discussions similaires

  1. [Toutes versions] Donner le focus à la feuille après un clic sur UserForm
    Par ec dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/03/2015, 10h07
  2. Réponses: 17
    Dernier message: 05/09/2007, 16h24
  3. Déroulement d'un liste après un clic sur un lien
    Par mullger dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 21/08/2007, 13h33
  4. Créer une zone visible qu'après un clic sur une zone
    Par spec10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/11/2006, 04h00
  5. Réponses: 11
    Dernier message: 11/08/2006, 16h52

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