Textbox et choix de saisie

Laisse moi rire

XLDnaute Occasionnel
Salut a toutes et tous

Voila dans l'userform resultat, il y a 6 textbox pour des dates de rendez-vous.

Ils fonctionnent trés bien, mais j'aimerais ajouter un test, lors de la modification des données.

J'aimerais qu'il n'apparaisse qu'un textBox aprés la dernière date entrée, afin d'éviter de saisir une date, dans n'importe lequel de ceux-ci.

Ci-joint le fichier.

http://cjoint.com/?lkw6gdYC4u

J'espère que ce mode, pour joindre un fichier ne dérange personne, sinon faite le moi savoir.

Merci, trés beaucoup, G'Claire
 

Bricofire

XLDnaute Impliqué
Bonsoir GClaire ;)

Je n'ai pas chargé le fichier, je ne suis pas sur le bon poste, par contre si j'ai compris ton pb, c'est un classique du jeu de cache-cache :) ?

Dans ce cas sur chaque entrée tu incrémentes les propriétés 'Visible' des Textbox à coup de true ou False, ce qui te permet même de les faire apparaître et diparaître une à une dans l'ordre chronologique de ton choix, voir selon la réponse de faire apparaître l'une ou l'autre etc... Et aussi de ne montrer le bouton valider qu'en fin de parcours...

Bonne nuit,

Bfr
 

Laisse moi rire

XLDnaute Occasionnel
Bricofire

Donc dans un premier temps, j'ai mis dans le bouton Modifier:

modif= true
With CtrlModifier3
.BackColor = &HC0C0FF
.Locked = False
.ControlTipText = 'Faite un double clique pour entrer une date'
If CtrlModifier3 = '' Then
.Visible = False
Else
.Visible = True
End If
End With
Next CtrlModifier3

Ensuite dans chaque action doubleClick des textbox (C'est comme cela que j'ajoute la date du jour dans ceux-ci).

Private Sub txtDeuxiemeRDV_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

'Test si on est en mode modification
If Modif = True Then
NomDuTextboxActif = 'txtDeuxiemeRDV'
Me.Controls(NomDuTextboxActif) = FormatDate(Calendar1.Value)
If txtDeuxiemeRDV = 0 Then
txtTroisiemeRDV.Visible = False
Else
txtTroisiemeRDV.Visible = True
End If
End If
End Sub

Cela fait une partie de ce que j'essaie de faire.

Quand je clique sur modifier, cela ne me met pas encore le derrnier textbox rempli + 1 a prévoir, mais je cherche.

Et si j'annule cela ne me remet pas, les controls visible a false, qui ne sont pas rempli dont un en prévision visible.

Merci pour ton idée, G'Claire
 

Bricofire

XLDnaute Impliqué
Bonsoir GClaire :) ,

Bon je t'ai fait un petit exemple qui te donne une piste pour ce que je t'indiquais, j'ai gardé la validation par double click...
L'USF s'ouvre à l'ouverture du classeur vierge et se ferme avec la croix ou avec le bouton Valider qui apparait à la fin ;)
Si tu rentres une donnée autre que date, il est pas content :)

Bonne nuit,

Bfr [file name=CascadeTxtBox.zip size=12362]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/CascadeTxtBox.zip[/file]
 

Pièces jointes

  • CascadeTxtBox.zip
    12.1 KB · Affichages: 30

Laisse moi rire

XLDnaute Occasionnel
Bricofire, le forum

Merci pour ton aide.

En faite ce que je cherche a faire :

A l'initialisation de l'UserForm, qu'un test sois fait sur ces textbox afin de ne montrer que ceux qui soit rempli.

Ensuite, j'ai un bouton modifier, qui me sert a pouvoir modifier certains control, dont les 6 textbox detiné a indique les Rendez-vous effectué.

Donc a ce moment la, j'aimerai que les textbox qui sont rempli soit visible + 1 non rempli qui me servira a le remplire (J'ai un code pour le remplire par un dounle click, a la date du jour avec un format defini).

Ensuite j'ai un bouton valider, pour envoyer toutes les indications des controls, dans la feuille.

Voila, j'espère avoir était plus claire.

Merci, et bon week-end, G'Claire
 

Bricofire

XLDnaute Impliqué
re : GClaire, :)

Bon, je te mets un fichier qui a évolué, ces sont des pistes, pas des solutions, si tu analyse les différents codes en regardant qui fait quoi ainsi que les possibilités offertes par les propriétés des texbox et de leurs évènementielles, tu dois arriver à tes fins et plus, savoir ensuite le refaire et même mieux ensuite ;)

Donc là c'est une nouvelle piste, analyse les pb qui se poseront et pense notamment à :

Les textbox,vu leurs noms :) retournent des données au format texte ( à convertir si calculs sur dates, des fils récents en ont parlé), IsDate ne fait que tester si la donnée entrée a une structure compatible pour êre une date :whistle:
Le bouton valider étant ici visible, le choix de la validation du Txb se faisant en doubleclick, si on fait entrée sur la saisie, le focus passe au bouton valider qui s'il est actionné enregistre la donnée même non date, le filtre ne se faisant pas.... :silly:
C'est pourquoi, il faut piger toutes les répercutions, car dans ce genre de structure, tout est lié et les surprises nombreuses :ermm:

C'ets pourquoi pour la validation je préfère un évènementiel lié au passage du focus à un autre objet, il ya souvent un argument cancel qui facilite le filtrage....

Pour le bouton modifier, tu peux le construire et mettre dans son évènementiel, un inputbox qui demande quelle case on veut modifier (un filtre ne proposant que les cases visibles serait judicieux), et selon le résultat libérer le lock du dit bouton etc... lui seul pouvant aussi devenir visible à ce moment là :silly:

Bon je m'en vais ensuite, donc je te dis bon courage, pense aussi à l'aide VBA qui regorge de choses précieuse, en te mettant sur la propriété d'un bouton et en faisant F1, tu tombes dessus direct !

Bonne journée,

Bfr [file name=CascadeTxtBox2.zip size=13821]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/CascadeTxtBox2.zip[/file]
 

Pièces jointes

  • CascadeTxtBox2.zip
    13.5 KB · Affichages: 32

Laisse moi rire

XLDnaute Occasionnel
BricoFire,

J'ai bien compris ce qu'il fallait faire et essayé d'adapter, mais cela ne fonctionne pas.

J'ai une erreur : onjet spécifique introuvable.

Sur cette ligne

résultat.Controls('Tx' & I) = ActiveCell.Offset(0, j).Value


Donc j'ai fait dans l'initialise de l'userform.

Car mes données date de ces contros sont en colonne de AQ a AV

Dim Tx As Control
Dim I, j
Dim tt

For I = 1 To 6
For j = 42 To 47
résultat.Controls('Tx' & I) = ActiveCell.Offset(0, j).Value
résultat.Controls('Tx' & I).Visible = False
Next j
Next I

For I = 1 To 6
If résultat.Controls('Tx' & I) <> '' Then
résultat.Controls('Tx' & I).Visible = True
résultat.Controls('Tx' & I).Locked = True
Else
résultat.Controls('Tx' & I).Visible = True
résultat.Controls('Tx' & I).SetFocus
Exit For
End If
Next I

Je réessayerai demain, car là je suis mort de fatigue, une rude soirée que j'ai eu hier soir, on a finit a 5 heures 30 ce matin d'animer et on c'est couvhé a 7 heures et ti lucas m'a réveillé a 7 heures 30

Merci, G'Claire

Message édité par: GClaire, à: 13/11/2005 19:11
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 462
Membres
103 547
dernier inscrit
matospi