gribouillex
Messages postés172Date d'inscriptionlundi 10 octobre 2005StatutMembreDernière intervention16 mai 2011
-
11 oct. 2006 à 16:13
gribouillex
Messages postés172Date d'inscriptionlundi 10 octobre 2005StatutMembreDernière intervention16 mai 2011
-
13 oct. 2006 à 17:05
Bonjour,
J'ai une question toute bête : comment affecter des caractères spéciaux aux touches F1, F2, F3 etc... pour que lorsque je me trouve dans n'importe quel Textbox du userform, cela me permette d'insérer ces caractères spéciaux.
Quand je dis caractères spéciaux, c'est par exemple que cela affaiche chr(188) quand j'appuie sur F1...
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 12 oct. 2006 à 15:30
Salut, je t'ai adapter mon code, pour t'entrainer, ouvre un nouveau fichier, insère un UserForm, place 10 textbox, place Obligatoirement à chaque TextBox que tu souhaites traiter la propriété Tag (donc de chacun) suivante : kdown et suis les instructions :
' *** Il faut appeler cette procédure, à l'ouverture de ton fichier.xls :
Private Sub Workbook_Open()
Call Attribuer_Controls
End Sub
_________________________________________________________________________
' *** Il faut insérer un Module normal, que tu nommes : basAttrControls
' ensuite colle ce code et modifie le là où je t'ai mis les comm
Dim TextBoxes(1 To 10) As New clsTextBoxes
' remplace 10 par le nombre de TextBox à traiter
Sub Attribuer_Controls()
' pour le module de classe (évènement KeyDown)
Dim ctl As Control
Dim txbCount As Integer
txbCount = 0
For Each ctl In UserForm1.Controls ' UserForm1 à remplacer par le bon nom
If ctl.Tag = "kdown" Then
txbCount = txbCount + 1
Set TextBoxes(txbCount).MyTextBox = ctl
End If
Next ctl
UserForm1.Show ' UserForm1 à remplacer par le bon nom
End Sub
_________________________________________________________________________
' *** Il faut insérer un Module de Classe, que tu nommes : clsTextBoxes
' ensuite colle ce code et test le ; puis après modifie le selon les besoins
Option Explicit
'Si vous changer le nom de la variable, changer le dans votre procédure
Public WithEvents MyTextBox As MSForms.TextBox
Private Sub MyTextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
With UserForm1 ' seul UserForm1 sera ici à remplacer par le bon nom
MyTextBox.Text = "KeyCode : " & KeyCode & " / Lettre : "
End With
Pour le tester, après avoir fait tout ça, il faut enregistrer les modifications du fichier excel, puis réouvre le afin d'éxecuter la procédure Workbook_Open
@++
<hr width ="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 11 oct. 2006 à 16:36
Salut,
Il faut utiliser l'événement KeyDown de l'objet TextBox
Voici un exemple pour deux textbox (TextBox1 et TextBox2) dans un userform.
'Evenement keydown Du TExtBox 1
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call TraiteKeyDown(KeyCode, TextBox1)
End Sub
'Evenement keydown Du TExtBox 2
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call TraiteKeyDown(KeyCode, TextBox2)
End Sub
'Procédure traitant l'appui sur les touche
Private Sub TraiteKeyDown(ByVal KeyCode As MSForms.ReturnInteger, ObjText As MSForms.TextBox)
Select Case KeyCode
'Si la touche appuye est F1 = > 1/4
Case vbKeyF1: ObjText.Text = ObjText.Text & Chr (188)
'Si la touche appuye est F2 => 1/2
Case vbKeyF2: ObjText.Text = ObjText.Text & Chr (189)
'Si la touche appuye est F3 => 3/4
Case vbKeyF3: ObjText.Text = ObjText.Text & Chr(190)
End Select
End Sub
gribouillex
Messages postés172Date d'inscriptionlundi 10 octobre 2005StatutMembreDernière intervention16 mai 2011 11 oct. 2006 à 16:53
Merci pour la réponse, le problème c'est que j'ai une multitude de textbox (créés dynamiquement en fonction du nombre de cellules que j'ai dans ma sélection).
Comment affecter un evenement keydown sur toutes ces textbox ?
Voici le code que j'utilise et qui me créé les textbox...
Private Sub UserForm_initialize()
Dim cell As Range
Dim X, Y As Integer
Dim TxtB As Control
X = 0
Y = 1
For Each cell In Selection
Set TxtB = Me.Controls.Add("forms.Textbox.1")
With TxtB
.Left = X * 50
.Top = 30 + ((Y - 1) * 20)
.Width = 50
.Height = 18
.Text = cell.Value
End With
m = m + 1
ReDim Preserve Tableau(2, m)
Tableau(0, m - 1) = TxtB.name
Tableau(1, m - 1) = cell.Address
Set TxtB = Nothing
Next cell
End Sub
En fait c'est pour ça que je demandais l'affectation de caractères au touches F1, F2, F3 indépendament des textbox..
Bref, si vous savez... je suis preneur
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 11 oct. 2006 à 17:15
Re,
En VB6 il existe pour un objet Form la propriété KeyPreview qui, si elle mise a True Permet d'anvoye les touche aussi a l'événement KeyDown du form mais le problème c'est que je crois qu il n'y a pas cette propriété pour les UserForm Excel
Essaie de trouve l'équivalent.
Sinon je ne vois pas trop comment faire (vu que les groupe de controle n'existe pas non plus...)
@+, Ju£i?n
Vous n’avez pas trouvé la réponse que vous recherchez ?
gribouillex
Messages postés172Date d'inscriptionlundi 10 octobre 2005StatutMembreDernière intervention16 mai 2011 12 oct. 2006 à 12:18
Bonjour Mortalino !!
Alors j'ai essayé ton code, mais je ne suis pas assez doué pour adapter (ni savoir si ça peut s'adapter à mon code)...
j'ai abandonné.
si tu sais comment je peux adapter ça à mon code ci-dessus en VBA, je suis preneur, sinon c'est pas grave, j'ai trouvé une solution alternative, qui est moins bien, mais qui fonctionne quand même.
gribouillex
Messages postés172Date d'inscriptionlundi 10 octobre 2005StatutMembreDernière intervention16 mai 2011 13 oct. 2006 à 10:24
Merci Mortalino !! Tu me retires une fière chandelle du pied. Ca fontionne nickel ! Vraiment je te remercie mille fois !!
Le seul hic, c'est que j'aimerais appeler le userform à un moment précis de mon programme, et lorsque je mets call Attribuer_Controls au milieu de mon module général, au lieu de Workbook_open(), eh bien rien ne se passe....
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 13 oct. 2006 à 11:59
Sans garantie :
supprime le Call Attribuer_Controls de WorkBook_Open.
Ensuite, là où avant tu appelais ton UserForm, donc dans ton Module, il faut supprimer NomDeTonUserForm.Show et le remplacer par
Call Attribuer_Controls (puisque dans la procédure Attribuer_Controls, à la fin, je fais appel au UserForm ; pense juste à modifier le nom du UserForm dans cette procédure)
@++
<hr width="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>