OVH Cloud OVH Cloud

[VBA] Zone de texte préformatée

3 réponses
Avatar
Stéphane Santon
Bonjour,

Existe-t-il des contrôles supplémentaires disponibles sous VBA97+ ?

- "Zone de texte" qui permettrait de formater automatiquement la valeur
à la saisie, comme une date ?
le texte affiché serait 18/06/2004 , et il suffirait de taper 19062004,
le curseur passerait directement du 2e au 4e caractère à la saisie...

- Boîte de dialogue de sélection d'un dossier

- ... ?

Merci

--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.

Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime

3 réponses

Avatar
Clément Marcotte
Bonjour,

- "Zone de texte" qui permettrait de formater automatiquement la
valeur

à la saisie, comme une date ?
le texte affiché serait 18/06/2004 , et il suffirait de taper
19062004,

le curseur passerait directement du 2e au 4e caractère à la
saisie...


Possible en faisant un double-clic dans le textbox après avoir entré
la date au complet:

Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1.Value = Left(TextBox1.Value, 2) & "/" & Mid(TextBox1.Value,
3, 2) _
& "/" & Right(TextBox1.Value, 4)
End Sub

Mais comme chez moi les dates sont en aaaa-mm-jj, pas testé si la
transformation en jj/mm/aaaa est vraiment considérée comme une date
après.



- Boîte de dialogue de sélection d'un dossier


Question récurrente

http://groups.google.com/groups?as_q=browseforfolder&ie=UTF-8&as_ugroup=microsoft.public.fr.excel&as_scoring=d&lr=&hl=fr

Avatar
Stéphane Santon
Bonjour,

- "Zone de texte" qui permettrait de formater automatiquement la valeur
à la saisie, comme une date ?


Possible en faisant un double-clic dans le textbox après avoir entré
la date au complet:


Ouh là là non... je cherche ça pour limiter les saisies et actions.
Alors faire un double-clic ou autre manip pour formater après... non.
La date doit être toujours formatée tout au long de la saisie.

- Boîte de dialogue de sélection d'un dossier
Question récurrente

http://groups.google.com/groups?as_q=browseforfolder&ie=UTF-8&as_ugroup=microsoft.public.fr.excel&as_scoring=d&lr=&hl=fr


La question plus générale est :
Existe-t-il des bibliothèques d'OCX qui contiennent des contrôles de ce
style ?

--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.

Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime


Avatar
Stéphane Santon
Bonjour,

Bon, en fait, j'ai découvert les modules de classe, et ça paraît bien
adapté pour gérer plusieurs TextBox de date, avec un code écrit une
seule fois.

Pour exemple, le module de classe DateTextBox contient ceci :

------ * Module de classe DateTextBox * ------------------------
Public WithEvents moTextBox As MSForms.TextBox

Private Sub moTextBox_Change()
With moTextBox
If .SelStart = 2 Then .SelStart = 3
If .SelStart = 5 Then .SelStart = 6

.ForeColor = IIf(IsDate(.Text), 0, RGB(255, 0, 0))
.SelLength = 1
End With
End Sub
----------------------------------------------------------------

Un module standard contient :

------ * Module Classes1 * ------------------------
Private DateTB_Collection() As New DateTextBox

Public Sub Prepare_DateTB_Collection(aoUserForm As UserForm)
'Remarque : tous les noms des DateTextBox commencent par "DateTB"
Const csDateTextBox = "DateTB"

Dim loControl As Control, l&, i&
i = 0
l = Len(csDateTextBox)

For Each loControl In aoUserForm.Controls
If Right(loControl.Name, l) = csDateTextBox Then 'Detecte le
suffixe du nom de l'objet
ReDim Preserve DateTB_Collection(0 To i)
Set DateTB_Collection(i).moTextBox = loControl
i = i + 1
End If
Next loControl

End Sub
----------------------------------------------------------------

Et il suffit de nommer les contrôles TextBox en finissant par DateTB :
Jour1DateTB, Jour2DateTB, ...
pour qu'ils soient gérés comme des dates.


* Maintenant mon petit souci avec ça : *
L'événement Enter n'est pas reconnu comme appartenant à MSForms.TextBox

Quand je clique dans le sub moTextBox_Change(),
les ComboBox de désignation de code indiquent moTextBox -> Change ,

alors que
quand je clique dans le sub moTextBox_Enter(),
les ComboBox indiquent (Général) -> moTextBox_Enter !


- "Zone de texte" qui permettrait de formater automatiquement la valeur
à la saisie, comme une date ?
le texte affiché serait 18/06/2004 , et il suffirait de taper 19062004,
le curseur passerait directement du 2e au 4e caractère à la saisie...


--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.

Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime