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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    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 confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    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

  3. #3
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    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 confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Je te confirme qu'avec ce que tu nous montres cela fonctionne.
    Que contient cette partie ?

  5. #5
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    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 confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Je ne sais pas si c'est dû au module de classe, joins un bout de fichier que je puisse tester

  7. #7
    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 : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    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!

  8. #8
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    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

  9. #9
    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 : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    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!

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

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