Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Amélioration d'un code

  • Initiateur de la discussion Initiateur de la discussion apt
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

apt

XLDnaute Impliqué
Bonsoir à tous,

J'ai un code avec Userform que j'aimerais apporter quelques améliorations.

1 - Il faut renseigner toutes les TextBox

2 - Interdiction de saisir des doublons
 

Pièces jointes

Dernière édition:
Re : Amélioration d'un code

Bonsoir Jean-Marcel,J'aimerais seulement appliquer la recherche de la valeur TextBox2 dans la colonne B.Pour la vérification des valeurs vides des TextBox, le module de classe est bien fait pour ça, seulement j'ai lu qu'il ne gère pas l'événement Exit.Une solution pour cela ?
 
Dernière édition:
Re : Amélioration d'un code

Re,

Une alternative pour remplacer l'événement Exit dans un module de classe, la gestion du focus :

Code:
'---- dans un module de classe nommé Classe1
Option Explicit
 
Public Event GetFocus()
Public Event LostFocus(ByVal Txtbx As String)
Public nomObjActif As String
 
Public Sub cibleFocus(USF As MSForms.UserForm)
With USF
        If TypeName(.ActiveControl) = "TextBox" Then
            nomObjActif = .ActiveControl.Name
            On Error GoTo errorHandler
            Do
                DoEvents
                If .ActiveControl.Name <> nomObjActif Then
                    If TypeName(.ActiveControl) = "TextBox" Then
                        RaiseEvent LostFocus(nomObjActif)
                        nomObjActif = .ActiveControl.Name
                        RaiseEvent GetFocus
                    End If
                End If
            Loop
            End If
End With
 
errorHandler:
Exit Sub
End Sub

Code:
'---  dans l'UserForm  ---
Option Explicit
Private WithEvents USF As Classe1
 
Private Sub UserForm_Activate()
    Set USF = New Classe1
 
    TextBox1.SetFocus
    Me.Controls(Me.ActiveControl.Name). _
        Object.BackColor = RGB(200, 200, 200)
 
    USF.cibleFocus Me
End Sub
 
Private Sub USF_GetFocus()
    Me.Controls(Me.ActiveControl.Name). _
        Object.BackColor = RGB(200, 200, 200)
End Sub
 
Private Sub USF_LostFocus(ByVal Txtbx As String)
    Me.Controls(Txtbx).BackColor = RGB(255, 255, 255)
End Sub
 
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Set USF = Nothing
End Sub

Trouvé ICI

Source :Controling colors of controls in userform - MrExcel Message Board

à vrai dire, je n'ai rien compris dedans 8O

Une explication et adaptation possible ?

Merci.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…