XL 2010 [CLOTUREE]Textboxs ou Comboboxs en majuscule

cp4

XLDnaute Barbatruc
Bonjour,

Je voudrais comprendre pourquoi les codes du fichier plantent.
Il s'agit d'utiliser l'évènement change de textboxs et comboboxs pour transformer minuscules en majuscules.
J'ai dû ne pas comprendre car il y avait une démo qui montrait bien que les codes de PatrickToulon fonctionnent.

Merci.
 

Pièces jointes

  • Textboxs en majuscules.xlsm
    19.9 KB · Affichages: 8

patricktoulon

XLDnaute Barbatruc
re
la bonne blague que ca marche pas
As New majuscule alors que le module s'appelle "Classe1"😅😂

et en plus dans le userform2 il y a une sub majuscule
tu t'es emmêlé les pinceaux là
donc ton userform1
VB:
Option Explicit

'j 'oubliais (IMPORTANT!!!!!)
'il faut regler la propriété matchentry de tes comboboxs a 2 sinon des que tu tape quelque chose qui correspont a un item
'mais en minuscule le value sera en minuscule parcontre ca sera bien l'item en minuscule qui sera selectionné

Dim cl As New cmajuscule
Private Sub UserForm_Activate()
cl.initiate Me
End Sub
dans un module classe nommé "cmajuscule"
Code:
Option Explicit

Public WithEvents txtB As MSForms.TextBox
Public WithEvents CmbX As MSForms.ComboBox
Public usf As Object
Dim cls() As New cmajuscule
Function initiate(ByRef uf As Object)
    Dim i&, ctrl As Object
    For Each ctrl In uf.Controls
        i = i + 1: ReDim Preserve cls(1 To i)
        Select Case TypeName(ctrl)
        Case "TextBox"
            Set cls(i).txtB = ctrl: Set cls(i).usf = uf
        Case "ComboBox"
            Set cls(i).CmbX = ctrl: Set cls(i).usf = uf
        End Select
    Next
End Function
Private Sub CmbX_Change()
    CmbX.Value = UCase(CmbX.Value)
End Sub
Private Sub txtB_Change()
    txtB.Value = UCase(txtB.Value)
End Sub
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
au puré c'est pire que ce que je pensais
Option Explicit

Private textbox1_change(): majuscule (TextBox1): End Sub
Private textbox2_change(): majuscule TextBox2: End Sub
Private textbox3_change(): majuscule TextBox3: End Sub
Private combobox1_change(): majuscule ComboBox1: End Sub

Sub majuscucle(ByRef controll As Object)
controll.Value = UCase(controll.Value)
End Sub

en plus t 'a pas l'impression qu'il manque quelque chose après private par hasard(un" Sub" par exemple)😂😂😂
tu m'etonne que ca fonctionne dans ma demo et pas dans le tiens

donc correction pour le userform2
VB:
Option Explicit

Private Sub textbox1_change(): majuscule TextBox1: End Sub
Private Sub textbox2_change(): majuscule TextBox2: End Sub
Private Sub textbox3_change(): majuscule TextBox3: End Sub
Private Sub combobox1_change(): majuscule ComboBox1: End Sub

Sub majuscule(ByRef controll As Object)
    controll.Value = UCase(controll.Value)
End Sub
 

cp4

XLDnaute Barbatruc
Je te remercie. Je constate que tu t'es bien marré.
Bien fait pour ma poire!
J'ai fait un copier/coller de tes codes qui pour moi d'après la démo ne pouvaient que fonctionner.
je refais le copier/coller de tes codes ci-dessous.
VB:
1er code
private textbox1_change():majuscule textbox1:end sub
private textbox2_change():majuscule textbox2:end sub
private textbox3_change():majuscule textbox3:end sub
private combobox1_change():majuscule combobox1:end sub
 
private sub majuscucle(byref controll as object)
controll.value=ucase(controll.value)
end sub
''''''''''''''''''''''''''''''''''''''
2eme code
dans userform
Dim cl As New majuscule
Private Sub UserForm_Activate()
cl.initiate Me
End Sub
--------
dans module de classe
Option Explicit
Public WithEvents txtB As MSForms.TextBox
Public WithEvents CmbX As MSForms.ComboBox
Public usf As Object
Dim cls() As New majuscule
Function initiate(ByRef uf As Object)
    Dim i&, ctrl As Object
    For Each ctrl In uf.Controls
        i = i + 1: ReDim Preserve cls(1 To i)
        Select Case TypeName(ctrl)
        Case "TextBox"
            Set cls(i).txtB = ctrl: Set cls(i).usf = uf
        Case "ComboBox"
            Set cls(i).CmbX = ctrl: Set cls(i).usf = uf
        End Select
    Next
End Function
Private Sub CmbX_Change()
    CmbX.Value = UCase(CmbX.Value)
End Sub
Private Sub txtB_Change()
    txtB.Value = UCase(txtB.Value)
End Sub
Pas grave Cp4, tu as donné l'occasion à Patrick de bien rigolé.
Merci.
Bon week-end.
 

patricktoulon

XLDnaute Barbatruc
A d'accords
en fait quand j'ai quitté DVP j'ai volontairement foutu en l'air toutes les contribs que j'ai pu faire
tout du moins toute celles que j'ai pu
si tu choppe quelle chose de moi sur DVP demande moi avant

t a pas trouvé!! je t'ai donné les correction en posts 4 et 2
 

cp4

XLDnaute Barbatruc
A d'accords
en fait quand j'ai quitté DVP j'ai volontairement foutu en l'air toutes les contribs que j'ai pu faire
tout du moins toute celles que j'ai pu
si tu choppe quelle chose de moi sur DVP demande moi avant

t a pas trouvé!! je t'ai donné les correction en posts 4 et 2
Oui mon grand, la prochaine fois je demanderai respectueusement la permission.
Il me semble que tu as lu en oblique mon message privé. Il y avait bien le lien.
Tu es sympa ma des fois ....

J'avais l'intention de te poser une question en rapport avec ton calendrier autonome.
Mais je t'avoue que tu m'as coupé l'envie.

Bonne soirée et bon week-end.
 

patricktoulon

XLDnaute Barbatruc
a bon le calendrier aussi déconne ??
tu me dis j'ai trouvé.....et en plus le fait de unligner n'a rien a voir
je te dis seulement qu'avant de poster regarde si tu n'as pas eu de réponses c'est tout
ça me donne l'impression de faire un travail pour rien
après tu le prends comme tu veux
 

cp4

XLDnaute Barbatruc
a bon le calendrier aussi déconne ??
tu me dis j'ai trouvé.....et en plus le fait de unligner n'a rien a voir
je te dis seulement qu'avant de poster regarde si tu n'as pas eu de réponses c'est tout
ça me donne l'impression de faire un travail pour rien
après tu le prends comme tu veux
Qui a dit que ton calendrier déconné? Tu es très rapide en déduction erronée.
Mes excuses, c'est moi qui aie fait appel à ton aide. ça sera la dernière fois.
Stop et fin.