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 :

Multipage et Module de classe [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    commercial
    Inscrit en
    Juin 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : commercial

    Informations forums :
    Inscription : Juin 2016
    Messages : 22
    Par défaut Multipage et Module de classe
    Bonjour,

    En pièce jointe un exemple du fichier qui me pose problème (le code n'est pas de moi).
    Je cherche à résoudre 2 problèmes:
    - 1) Lorsque l'on rentre dans un control, je souhaite que le backcolor soit Vert. Cela fonctionne pour les controls qui ne sont pas dans le multipage, mais lorsque l'on clique sur un control dans le multipage, cela ne fonctionne pas.
    - 2) Lorsque l'on quitte le control, je souhaiterais que l'on revienne à la couleur d'origine du control (et non blanc comme le code le fait - là, le code fonctionne pour les controls dans multipage).
    Merci de l'aide que vous pourrez m'apporter
    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Presque personne n'ouvre les pièces jointes à la première question; surtout, surtout, surtout les fichiers qui contiennent des macros.

  3. #3
    Membre averti
    Homme Profil pro
    commercial
    Inscrit en
    Juin 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : commercial

    Informations forums :
    Inscription : Juin 2016
    Messages : 22
    Par défaut
    Bonjour,

    Désolé, pour la pièce jointe transmise au premier message.
    Je reprend donc ma discussion au début.

    Je me suis créé une petite application sans m'y connaitre au début (je ne prétend être devenu spécialiste).
    Je souhaite donc réduire mon code.
    Dans mon USF, j'ai plusieurs controls que je mets en "surbrillance" lorsque le control est actif.
    Pour cela je les ai codé un à un,via les événement Enter et Exit.
    Comme le code se répète souvent, j'ai cherché une solution pour réduire la multiplication du code.
    La solution est donc de créer un module de classe (dont je commence juste à voir le fonctionnement).

    J'ai trouvé le lien ci-dessous intéressant:
    http://www.developpez.net/forums/d66...-combobox-usf/

    Dans ce lien, on s'aperçoit que les frames peuvent poser un problème. Mais la solution a été apportée.

    Puisque je cherche la difficulté, j'ai des controls dans un multipage.
    Et là ça ne fonctionne pas. Dans le module, si je code pour ajouter la condition concernant le multipage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub subLightActiveControlIter(ByRef ActiveObject As MSForms.Control)
    Dim s As String
     
    s = TypeName(ActiveObject)
    If "|TextBox|ComboBox|OptionButton|CheckBox|" Like "*|" & TypeName(ActiveObject) & "|*" Then
        ActiveObject.BackColor = vbGreen
        Set ObjPre = ActiveObject
     
    ElseIf TypeName(ActiveObject) = "Frame" Then
        Call subLightActiveControlIter(ActiveObject.ActiveControl)
     
    ElseIf TypeName(ActiveObject) = "MultiPage" Then
        Call subLightActiveControlIter(ActiveObject.ActiveControl)
     
    End If
     
    End Sub
    Le message d'erreur "Propriété ou méthode non gérée par cet objet" apparait.
    Il semble donc que le multipage ne se comporte pas comme une frame.

    J'ai donc continué mes recherches et je suis tombé sur:
    http://www.developpez.net/forums/d96...urs-controles/

    Comme je débute en module de classe, je n'arrive pas à adapter cette 2nde solution à la première (utilisation d'une fonction).

    Comment faire pour que tous les controls soient pris en compte (y compris ceux du multipage) ?

    Ma deuxieme question concerne la couleur de fond des controls à leur sortie.
    En effet, si le code met en surbrillance le control à son entrée, il conviendrait qu'à la sortie du control, la couleur d'origine revienne.
    Lorsque l'on code un seul control cela se fait sans problème. Cependant en passant par un module de classe, puisque les controls ont des couleurs différentes, cela ne peut se faire par un code unique définissant l'index couleur.
    Cependant, je pensai que, comme chacun des controls a une couleur définie par défaut à l'ouverture du formulaire, il y aurait la possibilité de retrouver cette couleur à la sortie du control, avec quelque chose du genre backcolor.textbox = defaultcolor.
    Est ce possible ?
    Cordialement

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    Ma deuxieme question concerne la couleur de fond des controls à leur sortie.
    pour répondre juste à cette question, regardes le fichier joint sans multipage mais qui respecte ta demande (retrouver les couleurs)

    Pas terrible, ça scintille, mais bon !!
    Fichiers attachés Fichiers attachés
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    après nouvel essai, sur mon fichier, tu ajoutes un "Exit For" à cette procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    For Each Ctrl In Me.Controls
      For c = 1 To UBound(Tcouleurs, 1)
        If Ctrl.Name = Tcouleurs(c, 1) Then Ctrl.Object.BackColor = Tcouleurs(c, 2): Exit For
      Next c
    Next Ctrl
     
    End Sub
    j'ai essayé également avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    , c'est pire
    EDIT : solution trouvée, "ShowModal" à False, plus de scintillement et fichier joint avec Multipage
    Fichiers attachés Fichiers attachés
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre averti
    Homme Profil pro
    commercial
    Inscrit en
    Juin 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : commercial

    Informations forums :
    Inscription : Juin 2016
    Messages : 22
    Par défaut
    Bonjour,
    Merci pour cette réponse qui fonctionne bien (pas de problèmes de scintillement).
    Voila ce que j'essaie de faire:
    - Si on déplace la souris, le control (textbox, optionbutton, commandbutton, combobox, checkbox) devient vert si on passe dessus et revienne à sa couleur initiale lorsque le pointeur n'est pas dessus (c'est ce que le code fait).
    Une condition à cela: je souhaiterai que le control actif reste en rouge quelque soit le mouvement de la souris . Le control actif doit rester rouge tant qu'il est actif et reprendre sa couleur d'origine quand on le quitte.
    - Je souhaiterais également que si dans le control actif on click sur Tab ou Enter ou Fleche Haut ou Bas, la couleur revienne à celle d'origine (puisque l'on quitte le control) et se mette en rouge dans le control dans lequel on entre.
    J'ai un gros souci car je travaille avec des multipages et frames imbriquées. Si je suis dans un textbox contenu dans un multipage contenu dans un multipage, je n'arrive pas à ce qu'il se mette en rouge quand il est actif et s'il est actif et que la souris se déplace, c'est le control multipage qui se met en rouge (ce que je ne souhaite pas).
    Je poursuis mes recherches, mais si on pouvait me présenter des pistes, ce serait appéciable.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre averti
    Homme Profil pro
    commercial
    Inscrit en
    Juin 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : commercial

    Informations forums :
    Inscription : Juin 2016
    Messages : 22
    Par défaut
    Bonjour,

    J'avance petit à petit.
    Pour éviter que ce soit la couleur du Multipage ou de la frame qui se modifie, j'ai trouvé un code qui fonctionne (avec Private Sub CouleurLastFocussedControl()) ou voir:
    http://www.mrexcel.com/forum/excel-q...multipage.html

    Ca fonctionne, mais je constate un truc bizarre.
    Dans le fichier joint (Copie de Couleur-Controle-USF 15), si l'on se met sur les optionbutton depuis la gauche, avec la souris (pareil pour le combo dans la frame3), au plus on se décale vers la droite, la couleur passe du vert au rouge. Quelqu'un saurait pourquoi ?
    J'ai également un autre souci: Ce code fonctionne si la frame est dans un multipage .
    Dans mon cas, j'ai des controls (parfois dans une frame) dans un multipage qui lui même est dans un multipage (Copie de Couleur-Controle-USF 16)
    L'auteur du code indique que si le multipage est imbriqué dans un autre multipage , il conviendrait de faire un whileloop. Dans ce cas,ça, je sais pas faire...
    Me reste à voir, le fait de revenir à la couleur initiale du control, dès qu'on le quitte en tabulant, appuyant sur enter ou cliquant sur autre control
    Merci de bien vouloir me donner les explications des codes que vous pouvez transmettre.

    Merci de votre aide.
    Fichiers attachés Fichiers attachés

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    si tu fait une bonne recherche dans les contributions tu trouvera ma contrib "overbutton"

    quand tu entre un control dans une classe selon la méthode tu es obligé de précisé le parent du control

    j'utilise une boucle for each ctrl in me.controls qui englobe tout les controls même ceux qui ne sont pas les enfants direct de l'userform
    j'en ai tellement fait que même en tapant mon pseudo dans la recherche tu les retrouvera facilement et même sur ce forum
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre averti
    Homme Profil pro
    commercial
    Inscrit en
    Juin 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : commercial

    Informations forums :
    Inscription : Juin 2016
    Messages : 22
    Par défaut
    Merci pour les nouvelles pistes de recherche.
    J'y suis arrivé.
    Je cherche maintenant à faire en sorte que le control actif soit par ex rouge et le texte en noir, lorsque l'on entre dans le control (et tant que ce control est le control actif) puis revienne à la couleur d'origine quand on le quitte (le code est fait par control, mais je pense qu'il doit y avoir moyen de regrouper cela pour ne pas avoir une répétition des lignes de codes).
    En fait je souhaite trouver une astuce pour contourner l'absence des événements enter et exit dans les modules de classe.
    Merci pour les pistes que vous pourrez me transmettre

  10. #10
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, peut-être ici ?

  11. #11
    Membre averti
    Homme Profil pro
    commercial
    Inscrit en
    Juin 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : commercial

    Informations forums :
    Inscription : Juin 2016
    Messages : 22
    Par défaut
    Bonjour,

    Merci pour l'info, mais je ne capte pas tout de la discussion.
    J'ai utilisé le code de patricktoulon
    http://www.developpez.net/forums/d10...vos-userforms/

    Dans le module de classe, j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub GroupeTxt_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If Not KeyAscii = 13 Or Not KeyAscii = 9 Or Not KeyAscii = 40 Or Not KeyAscii = 38 Then
    GroupeTxt.BackColor = vbRed
    GroupeTxt.ForeColor = vbBlack
    End If
    End Sub
    Là, quand j'appuie sur enter, la nouvelle textbox dans laquelle je rentre se met tout de suite en rouge. Celle que je quitte reste en rouge
    Avec les couleurs mémorisées,je devrais être en mesure de les remettre en place.
    J'essaie d'appeler la sub: sub initial (form), mais je n'y arrive pas: Variable non définie (maform)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub CommandButton11_Click()
    initial (form)
    End Sub
    End Sub
    Comment faire ?

    Dans un module nous avons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Sub initial(form)
    e = 1
    For Each ctrl In form.Controls
    On Error Resume Next
    If TypeName(ctrl) = "CommandButton" Then
    ctrl.BackColor = couleurbouton(e)
    ctrl.ForeColor = couleurtextbouton(e)
    e = e + 1
    End If
     
    If TypeName(ctrl) = "ComboBox" Then
    ctrl.BackColor = couleurCbx(e)
    ctrl.ForeColor = couleurtextCbx(e)
    e = e + 1
    End If
     
    If TypeName(ctrl) = "OptionButton" Then
    ctrl.BackColor = couleurOpt(e)
    ctrl.ForeColor = couleurtextOpt(e)
    e = e + 1
    End If
     
    If TypeName(ctrl) = "TextBox" Then
    ctrl.BackColor = couleurTxt(e)
    ctrl.ForeColor = couleurtextTxt(e)
    e = e + 1
    End If
     
    Next
    End Sub

    Merci de votre aide

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    donc si je comprends bien tu veux que quand tu passe dessus il prends une couleur et quand tu le quitte il reviens a sa couleur initial

    je te l'ai déjà dis il me semble va voir mon mouse inover dans les contributions

    sinon un exemple comme ca vite fait prend un fichier vierge
    met lui un userform et un module classe nommé overbouton
    met lui des boutons,une frame avec des bouton dedans

    dans le code du userform tu met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim cl As New overbouton
    Private Sub UserForm_Activate()
    cl.initbouton Me
    End Sub
    maintenant dans la classe tu met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Public WithEvents bouton As MSForms.CommandButton
    Public WithEvents framm As MSForms.Frame
    Public WithEvents formm As UserForm
    Dim BTN(100) As New overbouton
    Dim fram(100) As New overbouton
    Dim form(1) As New overbouton
    Function initbouton(usf)
        Set form(1).formm = usf
        For Each ctrl In usf.Controls
            If TypeName(ctrl) = "CommandButton" Then
                ctrl.Tag = ctrl.BackColor
                i = i + 1: Set BTN(i).bouton = ctrl
            End If
            If TypeName(ctrl) = "Frame" Then
                f = f + 1: Set fram(f).framm = ctrl
            End If
        Next
    End Function
    Private Sub bouton_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        If bouton.BackColor = bouton.Tag Then bouton.BackColor = vbRed
    End Sub
    Private Sub framm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Set usf = framm.Parent
        For Each ctrl In usf.Controls
            If TypeName(ctrl) = "CommandButton" Then ctrl.BackColor = ctrl.Tag
        Next
    End Sub
    Private Sub formm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        For Each ctrl In formm.Controls
            If TypeName(ctrl) = "CommandButton" Then ctrl.BackColor = ctrl.Tag
        Next
    End Sub
    aperçu en live
    Nom : demo1.gif
Affichages : 897
Taille : 93,5 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour le forum, Patrick
    ...tu passe dessus il prends une couleur et quand tu le quitte il reviens a sa couleur initial
    j'ai proposé la (une) solution sur le post #5
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour casefayere sur ce coup la c'est un flop tu ne m'a pas habitué a cela

    c'est tout simplement une torture visuelle ton truc
    les caption qui disparaisse
    un scintillement a rendre épileptique un mort
    reste le mien comme c'est mieux

    visuel de ton instrument de torture
    Nom : demo1.gif
Affichages : 931
Taille : 124,1 Ko

    t'avais pas déjeuné ce jour la non?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    eh oui, les premières fois où je l'ai testé, plus de scintillement mais tu as raison depuis (je ne sais plus ce que j'ai pu changer) les scintillements sont revenus, je testerai tes procédures sur un fichier vierge car depuis, j'ai effacé mon fichier

    Bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    oh mais je sais pourquoi moi ca scintille
    c'est du au fait que quand tu remet la couleur initial tu les remets tous

    en fait dans une de mes multiples versions sur le forum j'avais opter pour la memo du new control actif dans un tag et me servais de ce tag pour ne remettre que celui qui avais été précédemment modifié
    ainsi on a pas une mise a jour globale


    purée ca pique les yeux ton machin j'ai cru que mon écran allait exploser

    nan... j'rigole
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  17. #17
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    purée ca pique les yeux ton machin j'ai cru que mon écran allait exploser

    nan... j'rigole
    oui mais si j'ouvre le fichier, c'est Noël !!!!
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  18. #18
    Membre averti
    Homme Profil pro
    commercial
    Inscrit en
    Juin 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : commercial

    Informations forums :
    Inscription : Juin 2016
    Messages : 22
    Par défaut
    Bonjour à tous,

    Je reviens sur ce que je souhaiterais obtenir:
    Je veux que quand je passe sur un control avec la souris, il prenne une couleur et quand je le quitte il reviens a sa couleur initial, sauf pour le control actif (textbox, combobox, optionbuton) qui lui garde une couleur spécifique (par ex rouge). Ce control actif reprend sa couleur initial quand on le quitte (soit tab, enter, flche haut ou bas ou click souris sur un autre control).

    J'ai trouvé le post avec le mouse in out qui est très bien.
    Là je coince pour le control actif qui doit rester rouge sauf quand on le quitte (le nouveau control actif doit lui devenir rouge) et je coince aussi lorsque je tabule ou appuie sur enter pour que le control actif que l'on quitte, reprenne sa couleur initial.
    Mon projet fonctionne car sur tout les controls j'ai complété les événements enter et exit un à un.
    Vu la multitude de mes controls, j'ai pensé réduire mon code avec les modules de classe, mais les événements exit et enter n'existent pas pour les classes.

    Cordialement.

  19. #19
    Membre averti
    Homme Profil pro
    commercial
    Inscrit en
    Juin 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : commercial

    Informations forums :
    Inscription : Juin 2016
    Messages : 22
    Par défaut
    Bonjour,

    Il me reste à régler le problème lorsque l'on entre dans la textbox via un clic.
    J'ai trouvé le code ci-dessous:
    Dans usf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim txt(14) As New Classe1, i As Byte
    Private Sub UserForm_Initialize()
     For i = 1 To 14: Set txt(i).txt = Me("T" & i): Next i
    End Sub
    Dans classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public WithEvents txt As MSForms.TextBox
    Private Sub txt_KeyDown(ByVal K As MSForms.ReturnInteger, ByVal Shift As Integer)
     If K = 13 Or K = 9 Or K = 40 Or K = 38 Then txt.BackColor = &H80000005
    End Sub
    Private Sub txt_KeyUp(ByVal K As MSForms.ReturnInteger, ByVal Shift As Integer)
     txt.BackColor = &HC0C0C0
    End Sub
    Private Sub txt_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
     For i = 1 To 14: User.Controls("T" & i).BackColor = &H80000005: Next i
     txt.BackColor = &HC0C0C0
    End Sub
    Je n'arrive pas à adapter le code concernant le "Mousedown". Je ne connais pas le nombre de textbox, je dois mettre la textbox en rouge entrant et je dois revenir à la couleur initiale en sortant de la textbox.
    Pourriez vous m'aider? Ci-joint le fichier sur lequel je travaille.
    Cordialement.
    Fichiers attachés Fichiers attachés

  20. #20
    Membre averti
    Homme Profil pro
    commercial
    Inscrit en
    Juin 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : commercial

    Informations forums :
    Inscription : Juin 2016
    Messages : 22
    Par défaut
    Bonjour,

    Ce fut laborieux, mais je suis arrivé à ce que je souhaitai.
    Merci pour votre aide.
    A toutes fins utiles ci-joint.

    Cordialement
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Multipage et Module de classe
    Par DS3469 dans le forum VBA Project
    Réponses: 1
    Dernier message: 12/06/2016, 15h47
  2. [VBA] Module de classe et évènement
    Par Caroline1 dans le forum Access
    Réponses: 9
    Dernier message: 21/03/2013, 00h23
  3. Réponses: 4
    Dernier message: 31/03/2006, 16h16
  4. Réponses: 8
    Dernier message: 22/02/2006, 16h09
  5. variables publiques ou module de classe ?
    Par niclalex dans le forum Access
    Réponses: 3
    Dernier message: 04/10/2005, 19h49

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