Windows 7 - Contrôles et format date

Asked By LydieT on 10-Aug-12 04:54 PM
Bonjour
Je voudrais lire une date en utilisant un contrôle dans une feuille.
mais le contrôle affiche aléatoirement le format date ou le format
numérique.  Si je force le format je n'arrive pas à changer la date...
Comment faire ?
Merci.




Gloops replied to LydieT on 11-Aug-12 03:30 AM
LydieT a =E9crit, le 10/08/2012 18:54 :
=2E..

Bonjour,

C'est quoi comme contr=F4le ?
LydieT replied to Gloops on 12-Aug-12 12:17 PM
@nntp.pasdenom.info:
Gloops replied to LydieT on 12-Aug-12 08:36 AM
LydieT a =E9crit, le 10/08/2012 18:54 :
=2E..

Sur TextBox j'ai pens=E9 =E0 la propri=E9t=E9 InputMask, mais l=E0 je con=
fondais=20
avec Access.

Sous Excel, j'ai bien peur qu'en utilisant un TextBox il faille se=20
rabattre sur la solution indiqu=E9e par MichD, =E0 savoir contr=F4ler le =

format de ce qui est saisi apr=E8s coup, et le rejeter si ce n'est pas bo=
n.

Apr=E8s il y a l'utilisation d'un contr=F4le calendrier ou =E9quivalent, =
mais=20
il semble que sous Excel =E7a soit du sport. D=E9j=E0 il faut avoir le=20
contr=F4le voulu sur la machine (il y en a un de fourni avec Access, avec=
=20
Excel je ne sais pas trop, voir la liste des ActiveX propos=E9s), et=20
ensuite il faut ... suivre le mode dthemploi (et pour =E7a commencer par l=
e=20
trouver).

Le temps qu'on y met d=E9pend de ce qu'on a fait avant, pour quelqu'un qu=
i=20
n'a pas jou=E9 avec il faut =EAtre motiv=E9 et pr=EAt =E0 y consacrer fac=
ilement=20
quelques jours.

Ou alors s'en mijoter un soi-m=EAme mais l=E0 on y passe du temps aussi.

Sinon on peut saisir la date dans trois TextBoxes, un pour le jour, un=20
pour le mois, un pour l'ann=E9e, =E7a impose encore de faire des contr=F4=
les=20
de validit=E9, mais ils permettent plus de souplesse vu du c=F4t=E9=20
utilisateur : si on rejette une date parce que le num=E9ro de mois d=E9pa=
sse=20
13 on peut le pr=E9ciser, alors qu'avec une seule zone de texte on sera=20
facilement tent=E9 de juste dire que ce n'est pas une date valide.
Et avec trois zones de saisie, l'utilisateur final n'a pas =E0 saisir les=
=20
s=E9parateurs.

Pour suivre plus facilement un format num=E9rique il y a ce qu'on appelle=
=20
les toupies (spinbox) qui permettent d'augmenter ou diminuer la valeur=20
d'un montant donn=E9. =E7a fait plus de boulot de programmation que juste=
dire
If Not IsDate(txtDate) Then MsgBox "Ce n'est pas une date"
mais ... selon le travail qu'on est pr=EAt =E0 fournir dessus on a plusie=
urs=20
niveaux de commodit=E9 pour l'utilisateur.
LydieT replied to Gloops on 12-Aug-12 12:38 PM
Gloops <gloops@zailes.invalid.org> wrote in


la solution de MichelD fonctionne si tout est dans la même feuille
mais ma base de données est dans une autre feuille et la ça marche plus.
Gloops replied to LydieT on 12-Aug-12 08:39 AM
LydieT a =E9crit, le 12/08/2012 14:17 :

Ah oui j'ai vu l'autre fil, apr=E8s. C'est sur une UserForm, n'est-ce pas=
?

Du coup j'ai r=E9pondu en fonction du TextBox ...
Et en ouvrant des pistes pour aller plus loin si =E7a te chante.
Gloops replied to LydieT on 12-Aug-12 08:40 AM
LydieT a =E9crit, le 12/08/2012 14:38 :
plus.

Ah =E7a je n'ai pas vu.
J'imagine qu'il faut pr=E9fixer tous les champs avec la feuille.
Je regarde ...
Gloops replied to LydieT on 12-Aug-12 09:02 AM
LydieT a =E9crit, le 12/08/2012 14:38 :
plus.


J'allais dire, vous ne vous =EAtes pas compris, c'est forc=E9ment une=20
feuille diff=E9rente puisque la saisie est faite dans une UserForm, et le=
s=20
donn=E9es sont dans une Worksheet (feuille de saisie personnalis=E9e,=20
feuille de donn=E9es).

Mais ... =E7a se peut bien que ce coup-l=E0, MichD ait fait comme moi=20
souvent : donner la solution au fil du clavier sans tester :)

Effectivement, quand on parle de TextBox, c'est dans la UserForm. Donc,=20
si le code est dans la Worksheet, en pr=E9fixant le TextBox par Me, on ne=
=20
va pas le trouver.

Pour le traiter =E0 ce niveau-l=E0, on ferait
Dim U As UserForm
Set U =3D ThisWorkbook.UserForms(nomdelafeuilledesaisie)

et remplacer
Me.TextBox1 =3D Target.Text
par
U.TextBox1 =3D Target.Text


en ayant v=E9rifi=E9 que le TextBox soit d=E9clar=E9 en Public, l=E0 je v=
ais=20
laisser MichD concr=E9tiser au besoin parce que sans le produit sous la=20
main ...

Maintenant que j'ai dit =E7a, j'aimerais v=E9rifier ce que la saisie dans=
le=20
TextBox, sur le UserForm, d=E9clenche comme =E9v=E9nement.

Est-ce que =E7a ne serait pas plus simple =E0 g=E9rer =E0 cet endroit-l=E0=
?

Dans le style :

If Not IsDate(TextBox1) Then
MsgBox "Attention " & TextBox1 & " n'est pas une date valide"
TextBox1.SetFocus
End IF

Bien s=FBr il faut tester. Comme je n'ai pas Excel sous la main je me=20
contente de proposer l'id=E9e.
MichD replied to LydieT on 12-Aug-12 09:08 AM
| la solution de MichelD fonctionne si tout est dans la m?me feuille
| mais ma base de donn?es est dans une autre feuille et la ?a marche plus.

La proc?dure suivante doit ?tre mise dans la feuille module o? tu ins?res ta date
la cellule manuellement

Dans cette expression " Feuil1.TextBox1.Value"  Feuil1 est la propri?t? "Name" de
la feuille visible seulement dans la fen?tre de l'?diteur de code et non le nom de
l'onglet
de la feuille.

Il te reste ? adapter l'adresse de la cellule d?sir?e, le nom du textbox et la propri?t?
de ladite feuille.

'---------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("A1").Address Then
If IsDate(Target) Then
Feuil1.TextBox1.Value = Target.Text
Else
MsgBox "le contenu de la cellule """ & Target.Address & _
End If
End If
End Sub
'---------------------------------
Gloops replied to Gloops on 12-Aug-12 09:12 AM
Gloops a =E9crit, le 12/08/2012 15:02 :

Et c'est peut-=EAtre bien =E7a l'explication : c'est dans ce deuxi=E8me f=
il=20
que tu as pr=E9cis=E9 que le TextBox =E9tait sur une feuille de saisie=20
personnalis=E9e. MichD avait d=E9j=E0 =E9crit sa macro.
Gloops replied to MichD on 12-Aug-12 09:15 AM
MichD a =E9crit, le 12/08/2012 15:08 :


Est-ce que tu n'aurais pas redit la m=EAme chose d'une autre fa=E7on ?
=E7a marche si le TextBox est sur la feuille de donn=E9es.
MichD replied to Gloops on 12-Aug-12 09:19 AM
| Est-ce que tu n'aurais pas redit la m?me chose d'une autre fa?on ?
| ?a marche si le TextBox est sur la feuille de donn?es.

Le code est dans le module de la "feuil2" o? l'usager saisit la donn?e
et le textbox dans la feuille de calcul "Feuil1"



MichD
---------------------------------------------------------------
Gloops replied to MichD on 12-Aug-12 09:33 AM
MichD a =E9crit, le 12/08/2012 15:19 :
?
e

Ah oui, exact.
Apr=E8s tout, c'est peut-=EAtre moi qui ai invent=E9 que l'autre feuille =
=E9tait=20
une feuille de saisie, type UserForm.
LydieT replied to Gloops on 13-Aug-12 12:09 PM
@nntp.pasdenom.info:

était
mettant feuil1 à la place de feuil2