Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

module de classe

10 réponses
Avatar
Greffier
Bonjour,
Comment fabriquer un module de classe pour une vingtaine de texbox qui
auraient toutes cette cette structure :

Private Sub TextBox10_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

Merci, pour tout renseignement,

Greffier.

10 réponses

Avatar
MichDenis
Tu as un exemple sur exelabo http://www.excelabo.net/
dans le fichier "dm-moduleclasse.xls" suivant que tu peux
télécharger... avec des boutons de commande...
le principe est le même avec des textbox ...




"Greffier" a écrit dans le message de news:
Od4pd%
Bonjour,
Comment fabriquer un module de classe pour une vingtaine de texbox qui
auraient toutes cette cette structure :

Private Sub TextBox10_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

Merci, pour tout renseignement,

Greffier.
Avatar
Greffier
Bonjour,

Le problème c'est que cela ne marche pas. Alors que sur tous les exemples
que je vois dans les moteurs de recherche, eux marchent.

Y a-t-il quelque chose qui empêche.

Greffier.


"MichDenis" a écrit dans le message de news:
%
Tu as un exemple sur exelabo http://www.excelabo.net/
dans le fichier "dm-moduleclasse.xls" suivant que tu peux
télécharger... avec des boutons de commande...
le principe est le même avec des textbox ...




"Greffier" a écrit dans le message de news:
Od4pd%
Bonjour,
Comment fabriquer un module de classe pour une vingtaine de texbox qui
auraient toutes cette cette structure :

Private Sub TextBox10_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

Merci, pour tout renseignement,

Greffier.





Avatar
MichDenis
| Le problème c'est que cela ne marche pas.

Le problème, c'est que tu ne donnes pas beaucoup de détails sur la difficulté que tu rencontres.
Je n'ai pas envie de récrire ici les explications données dans le fichier exemple...

à titre d'exemple : le code du module de classe :
'---------------------------------
Public WithEvents toto As MSForms.TextBox

Private Sub toto_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub
'---------------------------------

Et dans le module du formulaire :
'---------------------------------
Private Sub UserForm_Initialize()
Dim A As Integer
For Each c In Me.Controls
If TypeName(c) = "TextBox" Then
ReDim Preserve Tbox(A)
Set Tbox(A).toto = c
A = A + 1
End If
Next
End Sub
'--------------------------------
Avatar
MichDenis
Désolé, dans le module formulaire, j'ai omis de déclarer la variable
dans le haut du module :

Dim Tbox() As New Classe1

Classe1 = Nom du module de classe (de la classe de l'objet)




"MichDenis" a écrit dans le message de news:


| Le problème c'est que cela ne marche pas.

Le problème, c'est que tu ne donnes pas beaucoup de détails sur la difficulté que tu rencontres.
Je n'ai pas envie de récrire ici les explications données dans le fichier exemple...

à titre d'exemple : le code du module de classe :
'---------------------------------
Public WithEvents toto As MSForms.TextBox

Private Sub toto_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub
'---------------------------------

Et dans le module du formulaire :
'---------------------------------
Private Sub UserForm_Initialize()
Dim A As Integer
For Each c In Me.Controls
If TypeName(c) = "TextBox" Then
ReDim Preserve Tbox(A)
Set Tbox(A).toto = c
A = A + 1
End If
Next
End Sub
'--------------------------------
Avatar
LSteph
Bonjour,

Il faut nommer ton module de classe,
pour ce faire

dans l'explorateur de projet sur ta gauche
sélectionner l'icône du module de classe
Menu affichage
afficher la fenêtre des propriétés , puis nommer
MyTBoxClass par exemple

En haut du module de Code de ton
UF tu reprends cette définition

Dim TBox as new MyTBoxClass


Cordialement.

lSteph

Bonjour,

Le problème c'est que cela ne marche pas. Alors que sur tous les exemples
que je vois dans les moteurs de recherche, eux marchent.

Y a-t-il quelque chose qui empêche.

Greffier.


"MichDenis" a écrit dans le message de news:
%
Tu as un exemple sur exelabo http://www.excelabo.net/
dans le fichier "dm-moduleclasse.xls" suivant que tu peux
télécharger... avec des boutons de commande...
le principe est le même avec des textbox ...




"Greffier" a écrit dans le message de news:
Od4pd%
Bonjour,
Comment fabriquer un module de classe pour une vingtaine de texbox qui
auraient toutes cette cette structure :

Private Sub TextBox10_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

Merci, pour tout renseignement,

Greffier.









Avatar
Greffier
Bonjour,

et mille excuses car je me suis trompé de objet tout à l'heure, c'était pour
combobox et additem :
"Le problème c'est que cela ne marche pas. Alors que sur tous les exemples
que je vois dans les moteurs de recherche, eux marchent.

Y a-t-il quelque chose qui empêche."

Je vais essayer ce matin le module de classe indiqué par michdenis, avec
excellabo.

Ah, les yeux c'est tout.

Amicalement,

Greffier.
.




"LSteph" a écrit dans le message de news:
OL0Vnn%
Bonjour,

Il faut nommer ton module de classe,
pour ce faire

dans l'explorateur de projet sur ta gauche
sélectionner l'icône du module de classe
Menu affichage
afficher la fenêtre des propriétés , puis nommer
MyTBoxClass par exemple

En haut du module de Code de ton
UF tu reprends cette définition

Dim TBox as new MyTBoxClass


Cordialement.

lSteph

Bonjour,

Le problème c'est que cela ne marche pas. Alors que sur tous les exemples
que je vois dans les moteurs de recherche, eux marchent.

Y a-t-il quelque chose qui empêche.

Greffier.


"MichDenis" a écrit dans le message de news:
%
Tu as un exemple sur exelabo http://www.excelabo.net/
dans le fichier "dm-moduleclasse.xls" suivant que tu peux
télécharger... avec des boutons de commande...
le principe est le même avec des textbox ...




"Greffier" a écrit dans le message de news:
Od4pd%
Bonjour,
Comment fabriquer un module de classe pour une vingtaine de texbox qui
auraient toutes cette cette structure :

Private Sub TextBox10_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

Merci, pour tout renseignement,

Greffier.










Avatar
LSteph
Bonjour,

"Le problème ...c'est que cela ne marche pas.
Il serait plus avisé de dire ...c'est que je n'y arrive pas!


Ce que je t'indiquais est valable pour l'utilisation d'un module de
classe tel que code fourni sur Excelabo ou par MichDenis ou je peux même
t'en fournir un autre ce sera pareil!
Le module doit être nommé et la variable dans le private module s'y
rattacher.

En revanche si un code ne fonctionnait pas sur excelabo indique
précisément lequel cela permettra de tester et le cas échéant qu'il
soit corrigé.


Cordialement.

lSteph

Bonjour,

et mille excuses car je me suis trompé de objet tout à l'heure, c'était pour
combobox et additem :
"Le problème c'est que cela ne marche pas. Alors que sur tous les exemples
que je vois dans les moteurs de recherche, eux marchent.

Y a-t-il quelque chose qui empêche."

Je vais essayer ce matin le module de classe indiqué par michdenis, avec
excellabo.

Ah, les yeux c'est tout.

Amicalement,

Greffier.
.




"LSteph" a écrit dans le message de news:
OL0Vnn%
Bonjour,

Il faut nommer ton module de classe,
pour ce faire

dans l'explorateur de projet sur ta gauche
sélectionner l'icône du module de classe
Menu affichage
afficher la fenêtre des propriétés , puis nommer
MyTBoxClass par exemple

En haut du module de Code de ton
UF tu reprends cette définition

Dim TBox as new MyTBoxClass


Cordialement.

lSteph

Bonjour,

Le problème c'est que cela ne marche pas. Alors que sur tous les exemples
que je vois dans les moteurs de recherche, eux marchent.

Y a-t-il quelque chose qui empêche.

Greffier.


"MichDenis" a écrit dans le message de news:
%
Tu as un exemple sur exelabo http://www.excelabo.net/
dans le fichier "dm-moduleclasse.xls" suivant que tu peux
télécharger... avec des boutons de commande...
le principe est le même avec des textbox ...




"Greffier" a écrit dans le message de news:
Od4pd%
Bonjour,
Comment fabriquer un module de classe pour une vingtaine de texbox qui
auraient toutes cette cette structure :

Private Sub TextBox10_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

Merci, pour tout renseignement,

Greffier.












Avatar
Greffier
Bonjour,

Je profite de ces instants pour vous communiquer ce que j'ai déduit des
différentes réponses :
- Création d'un moule de classe classe1
- renommer ce module avec la propriété renommer : TxtBoxKeyPress
- mettre le code suivant dans ce module :
Public WithEvents TxtBox As MSForms.TextBox

Private Sub TextBox_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

- ajouter le code suivant dans le module du formulaire :
Private Sub UserForm_Initialize()

Dim TxtBoxKeyPres(1 To 18) As TxtBoxKeyPress
Dim I As Integer
For I = 1 To 18
Set TxtBoxKeyPres(I) = New TxtBoxKeyPress
Set TxtBoxKeyPres(I).TxtBox = UserForm2.Controls("TextBox" & I)
Next I

Avant de faire des essais, ai-je bien compris ?

Merci.

Amicalement.

Greffier.






"LSteph" a écrit dans le message de news:

Bonjour,

"Le problème ...c'est que cela ne marche pas.
Il serait plus avisé de dire ...c'est que je n'y arrive pas!


Ce que je t'indiquais est valable pour l'utilisation d'un module de classe
tel que code fourni sur Excelabo ou par MichDenis ou je peux même t'en
fournir un autre ce sera pareil!
Le module doit être nommé et la variable dans le private module s'y
rattacher.

En revanche si un code ne fonctionnait pas sur excelabo indique
précisément lequel cela permettra de tester et le cas échéant qu'il soit
corrigé.


Cordialement.

lSteph

Bonjour,

et mille excuses car je me suis trompé de objet tout à l'heure, c'était
pour combobox et additem :
"Le problème c'est que cela ne marche pas. Alors que sur tous les
exemples
que je vois dans les moteurs de recherche, eux marchent.

Y a-t-il quelque chose qui empêche."

Je vais essayer ce matin le module de classe indiqué par michdenis, avec
excellabo.

Ah, les yeux c'est tout.

Amicalement,

Greffier.
.




"LSteph" a écrit dans le message de news:
OL0Vnn%
Bonjour,

Il faut nommer ton module de classe,
pour ce faire

dans l'explorateur de projet sur ta gauche
sélectionner l'icône du module de classe
Menu affichage
afficher la fenêtre des propriétés , puis nommer
MyTBoxClass par exemple

En haut du module de Code de ton
UF tu reprends cette définition

Dim TBox as new MyTBoxClass


Cordialement.

lSteph

Bonjour,

Le problème c'est que cela ne marche pas. Alors que sur tous les
exemples que je vois dans les moteurs de recherche, eux marchent.

Y a-t-il quelque chose qui empêche.

Greffier.


"MichDenis" a écrit dans le message de news:
%
Tu as un exemple sur exelabo http://www.excelabo.net/
dans le fichier "dm-moduleclasse.xls" suivant que tu peux
télécharger... avec des boutons de commande...
le principe est le même avec des textbox ...




"Greffier" a écrit dans le message de news:
Od4pd%
Bonjour,
Comment fabriquer un module de classe pour une vingtaine de texbox qui
auraient toutes cette cette structure :

Private Sub TextBox10_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

Merci, pour tout renseignement,

Greffier.














Avatar
MichDenis
Cette ligne de code va dans le haut du module formulaire
et non dans la procédure Private Sub UserForm_Initialize()

'J'ai ajouté le mot New à la déclaration - HAUT DU FORMULAIRE
Dim TxtBoxKeyPres(1 To 18) As New TxtBoxKeyPress

et ta nouvelle procédure est :
'-----------------------------------
Private Sub UserForm_Initialize()
Dim I As Integer
For I = 1 To 18
Set TxtBoxKeyPres(I).TxtBox = UserForm2.Controls("TextBox" & I)
Next I
End Sub





"Greffier" a écrit dans le message de news:
%
Bonjour,

Je profite de ces instants pour vous communiquer ce que j'ai déduit des
différentes réponses :
- Création d'un moule de classe classe1
- renommer ce module avec la propriété renommer : TxtBoxKeyPress
- mettre le code suivant dans ce module :
Public WithEvents TxtBox As MSForms.TextBox

Private Sub TextBox_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

- ajouter le code suivant dans le module du formulaire :
Private Sub UserForm_Initialize()


Dim I As Integer
For I = 1 To 18
Set TxtBoxKeyPres(I).TxtBox = UserForm2.Controls("TextBox" & I)
Next I

Avant de faire des essais, ai-je bien compris ?

Merci.

Amicalement.

Greffier.






"LSteph" a écrit dans le message de news:

Bonjour,

"Le problème ...c'est que cela ne marche pas.
Il serait plus avisé de dire ...c'est que je n'y arrive pas!


Ce que je t'indiquais est valable pour l'utilisation d'un module de classe
tel que code fourni sur Excelabo ou par MichDenis ou je peux même t'en
fournir un autre ce sera pareil!
Le module doit être nommé et la variable dans le private module s'y
rattacher.

En revanche si un code ne fonctionnait pas sur excelabo indique
précisément lequel cela permettra de tester et le cas échéant qu'il soit
corrigé.


Cordialement.

lSteph

Bonjour,

et mille excuses car je me suis trompé de objet tout à l'heure, c'était
pour combobox et additem :
"Le problème c'est que cela ne marche pas. Alors que sur tous les
exemples
que je vois dans les moteurs de recherche, eux marchent.

Y a-t-il quelque chose qui empêche."

Je vais essayer ce matin le module de classe indiqué par michdenis, avec
excellabo.

Ah, les yeux c'est tout.

Amicalement,

Greffier.
.




"LSteph" a écrit dans le message de news:
OL0Vnn%
Bonjour,

Il faut nommer ton module de classe,
pour ce faire

dans l'explorateur de projet sur ta gauche
sélectionner l'icône du module de classe
Menu affichage
afficher la fenêtre des propriétés , puis nommer
MyTBoxClass par exemple

En haut du module de Code de ton
UF tu reprends cette définition

Dim TBox as new MyTBoxClass


Cordialement.

lSteph

Bonjour,

Le problème c'est que cela ne marche pas. Alors que sur tous les
exemples que je vois dans les moteurs de recherche, eux marchent.

Y a-t-il quelque chose qui empêche.

Greffier.


"MichDenis" a écrit dans le message de news:
%
Tu as un exemple sur exelabo http://www.excelabo.net/
dans le fichier "dm-moduleclasse.xls" suivant que tu peux
télécharger... avec des boutons de commande...
le principe est le même avec des textbox ...




"Greffier" a écrit dans le message de news:
Od4pd%
Bonjour,
Comment fabriquer un module de classe pour une vingtaine de texbox qui
auraient toutes cette cette structure :

Private Sub TextBox10_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

Merci, pour tout renseignement,

Greffier.














Avatar
LSteph
Bonsoir,

Tu y es presque mais
il faudrait relire ce qu'on a déjà écrit
comme ceci

En haut du module de Code de ton
UF





...entre autres

@+

lSteph

Bonjour,

Je profite de ces instants pour vous communiquer ce que j'ai déduit des
différentes réponses :
- Création d'un moule de classe classe1
- renommer ce module avec la propriété renommer : TxtBoxKeyPress
- mettre le code suivant dans ce module :
Public WithEvents TxtBox As MSForms.TextBox

Private Sub TextBox_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

- ajouter le code suivant dans le module du formulaire :
Private Sub UserForm_Initialize()

Dim TxtBoxKeyPres(1 To 18) As TxtBoxKeyPress
Dim I As Integer
For I = 1 To 18
Set TxtBoxKeyPres(I) = New TxtBoxKeyPress
Set TxtBoxKeyPres(I).TxtBox = UserForm2.Controls("TextBox" & I)
Next I

Avant de faire des essais, ai-je bien compris ?

Merci.

Amicalement.

Greffier.






"LSteph" a écrit dans le message de news:

Bonjour,

"Le problème ...c'est que cela ne marche pas.
Il serait plus avisé de dire ...c'est que je n'y arrive pas!


Ce que je t'indiquais est valable pour l'utilisation d'un module de classe
tel que code fourni sur Excelabo ou par MichDenis ou je peux même t'en
fournir un autre ce sera pareil!
Le module doit être nommé et la variable dans le private module s'y
rattacher.

En revanche si un code ne fonctionnait pas sur excelabo indique
précisément lequel cela permettra de tester et le cas échéant qu'il soit
corrigé.


Cordialement.

lSteph

Bonjour,

et mille excuses car je me suis trompé de objet tout à l'heure, c'était
pour combobox et additem :
"Le problème c'est que cela ne marche pas. Alors que sur tous les
exemples
que je vois dans les moteurs de recherche, eux marchent.

Y a-t-il quelque chose qui empêche."

Je vais essayer ce matin le module de classe indiqué par michdenis, avec
excellabo.

Ah, les yeux c'est tout.

Amicalement,

Greffier.
.




"LSteph" a écrit dans le message de news:
OL0Vnn%
Bonjour,

Il faut nommer ton module de classe,
pour ce faire

dans l'explorateur de projet sur ta gauche
sélectionner l'icône du module de classe
Menu affichage
afficher la fenêtre des propriétés , puis nommer
MyTBoxClass par exemple

En haut du module de Code de ton
UF tu reprends cette définition

Dim TBox as new MyTBoxClass


Cordialement.

lSteph

Bonjour,

Le problème c'est que cela ne marche pas. Alors que sur tous les
exemples que je vois dans les moteurs de recherche, eux marchent.

Y a-t-il quelque chose qui empêche.

Greffier.


"MichDenis" a écrit dans le message de news:
%
Tu as un exemple sur exelabo http://www.excelabo.net/
dans le fichier "dm-moduleclasse.xls" suivant que tu peux
télécharger... avec des boutons de commande...
le principe est le même avec des textbox ...




"Greffier" a écrit dans le message de news:
Od4pd%
Bonjour,
Comment fabriquer un module de classe pour une vingtaine de texbox qui
auraient toutes cette cette structure :

Private Sub TextBox10_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

Merci, pour tout renseignement,

Greffier.