Textbox Heure au format 00:00
Fermé
Stef
-
Modifié par pijaku le 5/04/2016 à 08:59
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 6 avril 2016 à 11:28
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 6 avril 2016 à 11:28
A voir également:
- Textbox Heure au format 00:00
- Format epub - Guide
- Telecharger format factory - Télécharger - Conversion & Codecs
- Format apfs - Guide
- Hp format tool - Télécharger - Stockage
5 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
4 avril 2016 à 17:30
4 avril 2016 à 17:30
Bonjour Stef, bonjour le forum,
Tu pourrais avoir un seul code général et huit codes (1 pour chaque TextBox) :
Si tu veux utiliser le même code pour toutes les TextBoxes il te faudra passer par un Module de Classe. Mais pour huit TextBoxes seulement, ton code peut faire l'affaire sans la variable i qui n'a plus d'intérêt...
Si tu souhaites malgré tout te mettre au module de classe, je pourrai te proposer une méthode relativement simple...
Tu pourrais avoir un seul code général et huit codes (1 pour chaque TextBox) :
Private I As Byte Sub Macro1() If Len(Me.Controls("TextBox" & I).Value) = 2 Then Me.Controls("TextBox" & I).Value = Me.Controls("TextBox" & I) & ":" If Len(Me.Controls("TextBox" & I).Value) = 5 Then Me.Controls("TextBox" & I + 1).SetFocus End Sub Private Sub TextBox1_Change() I = 1 Call Macro1 End Sub Private Sub TextBox2_Change() I = 2 Call Macro1 End Sub 'etc...
Si tu veux utiliser le même code pour toutes les TextBoxes il te faudra passer par un Module de Classe. Mais pour huit TextBoxes seulement, ton code peut faire l'affaire sans la variable i qui n'a plus d'intérêt...
Si tu souhaites malgré tout te mettre au module de classe, je pourrai te proposer une méthode relativement simple...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
5 avril 2016 à 09:04
5 avril 2016 à 09:04
Bonjour Stef, bonjour Thautheme,
Je me suis permis de changer le titre du sujet pour qu'il soit plus explicite.
Ceci dit, peu importe la manière, module de classe ou module d'UserForm, l'inconvénient de cette façon de procéder (saisie automatique de : dans la procédure Change()) ne règle en rien la question qui est :
Nous avons 8 textbox consécutives indexées qui doivent impérativement contenir une heure au format "00:00"
Pour obtenir cela, il faut obligatoirement contrôler la saisie et empêcher l'utilisateur de saisir certains caractères. Seuls les chiffres doivent être acceptés.
Si tu es d'accord, on peut trouver une solution.
Cependant, il faudra plus de détails. L'heure saisie est une heure du jour ou une durée? (oui, une durée peux excéder 24:00)...
Comment est saisit minuit (s'il se peut qu'il le soit)?
Je me suis permis de changer le titre du sujet pour qu'il soit plus explicite.
Ceci dit, peu importe la manière, module de classe ou module d'UserForm, l'inconvénient de cette façon de procéder (saisie automatique de : dans la procédure Change()) ne règle en rien la question qui est :
Nous avons 8 textbox consécutives indexées qui doivent impérativement contenir une heure au format "00:00"
Pour obtenir cela, il faut obligatoirement contrôler la saisie et empêcher l'utilisateur de saisir certains caractères. Seuls les chiffres doivent être acceptés.
Si tu es d'accord, on peut trouver une solution.
Cependant, il faudra plus de détails. L'heure saisie est une heure du jour ou une durée? (oui, une durée peux excéder 24:00)...
Comment est saisit minuit (s'il se peut qu'il le soit)?
StefOff
Messages postés
1
Date d'inscription
mercredi 6 avril 2016
Statut
Membre
Dernière intervention
6 avril 2016
6 avril 2016 à 09:31
6 avril 2016 à 09:31
Re tout le monde et merci pour vos réponses,
Après m'être enregistré sur le site, je vous notifie le changement de pseudo -> Stef -> StefOff (oui, c'est toujours moi !)
Pour ne plus rien vous cacher des mes plans diaboliques, voici le Userform :
En réalité ce ne sont donc pas 8 Textbox mais 24 (ce qui rend le code peu ergonomique et vu la lourdeur de celui-ci, je me doute qu'il doit y avoir une solution plus "smart").
Process:
L'utilisateur saisie une plage horaire en définissant une heure de début (TB1) et une heure de fin (TB2), et ainsi de suite pour les plages suivantes (ce process se répète pour chaque Frame).
Lorsque l'on saisie une plage (ex : TB1 = 10:00 // TB2 = 20:00), un label vient s'afficher à côté de la TB4 pour donner le nombre d'heures effectives (dans notre ex : Label = 10:00).
Lorsque l'on saisie une nouvelle plage, le label se met à jour en ajoutant les heures effectives de la plage 2.
Les valeurs saisies ne doivent pas excéder les fameuses 24 heures (format jour)
Le format saisie dans une TB doit impérativement être "##:##" (Les valeurs des TB sont ensuite inscrites dans une cellule formatées "[h]:mm").
ThauTheme :
C'est déjà un peu mieux en faisant un "Call" et en changeant la valeur de "i" effectivement, mais avec 24 TB, c'est long quand même :p !
Du coup tu as sans doutes raison au sujet du module de classe.. (mais je suis pas trop à l'aise avec ces derniers ! :p)
pijaku :
Aucun souci pour le changement de titre, j'avoue l'avoir écrit sans trop de conviction (malgré un moment de réflexion).
Je suis d'accord pour le contrôle de saisie mais mes connaissances modeste en VBA m'obligeaient à écrire une procédure lourde pour chaque TB.
Idéalement j'aurais voulu créer un Sub commun à tous que je puisse appeler pour chaque TextBox à condition qu'elle ne soit pas vide.
Je vous remercie tous deux pour votre aide en tous cas !
Après m'être enregistré sur le site, je vous notifie le changement de pseudo -> Stef -> StefOff (oui, c'est toujours moi !)
Pour ne plus rien vous cacher des mes plans diaboliques, voici le Userform :
En réalité ce ne sont donc pas 8 Textbox mais 24 (ce qui rend le code peu ergonomique et vu la lourdeur de celui-ci, je me doute qu'il doit y avoir une solution plus "smart").
Process:
L'utilisateur saisie une plage horaire en définissant une heure de début (TB1) et une heure de fin (TB2), et ainsi de suite pour les plages suivantes (ce process se répète pour chaque Frame).
Lorsque l'on saisie une plage (ex : TB1 = 10:00 // TB2 = 20:00), un label vient s'afficher à côté de la TB4 pour donner le nombre d'heures effectives (dans notre ex : Label = 10:00).
Lorsque l'on saisie une nouvelle plage, le label se met à jour en ajoutant les heures effectives de la plage 2.
Les valeurs saisies ne doivent pas excéder les fameuses 24 heures (format jour)
Le format saisie dans une TB doit impérativement être "##:##" (Les valeurs des TB sont ensuite inscrites dans une cellule formatées "[h]:mm").
ThauTheme :
C'est déjà un peu mieux en faisant un "Call" et en changeant la valeur de "i" effectivement, mais avec 24 TB, c'est long quand même :p !
Du coup tu as sans doutes raison au sujet du module de classe.. (mais je suis pas trop à l'aise avec ces derniers ! :p)
pijaku :
Aucun souci pour le changement de titre, j'avoue l'avoir écrit sans trop de conviction (malgré un moment de réflexion).
Je suis d'accord pour le contrôle de saisie mais mes connaissances modeste en VBA m'obligeaient à écrire une procédure lourde pour chaque TB.
Idéalement j'aurais voulu créer un Sub commun à tous que je puisse appeler pour chaque TextBox à condition qu'elle ne soit pas vide.
Je vous remercie tous deux pour votre aide en tous cas !
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
6 avril 2016 à 09:40
6 avril 2016 à 09:40
Bonjour le fil, bonjour le forum,
Plutôt qu'une image, le fichier ne semble indispensable. Regarde du coté de https://www.cjoint.com/ (ou autre je n'ai pas d'actions chez eux...) et surtout pense a zipper le fichier avant sinon il est in utilisable.
De mon coté je te propose un petit document que j'ai fait car, comme toi, je ne suis pas très à l'aise avec les modules de classe et ce document m'est précieux.
https://www.cjoint.com/c/FDghM7DWstI
Plutôt qu'une image, le fichier ne semble indispensable. Regarde du coté de https://www.cjoint.com/ (ou autre je n'ai pas d'actions chez eux...) et surtout pense a zipper le fichier avant sinon il est in utilisable.
De mon coté je te propose un petit document que j'ai fait car, comme toi, je ne suis pas très à l'aise avec les modules de classe et ce document m'est précieux.
https://www.cjoint.com/c/FDghM7DWstI
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
6 avril 2016 à 09:58
6 avril 2016 à 09:58
Bonjour,
Je vais regarder cela dans la journée.
Je pense revenir sous peu avec une solution "aux petits oignons" utilisant un module de classe.
Cependant, comme dit par ThauTheme (salutations), il nous manque des éléments.
Notamment :
1- le nom de l'userform
2- le nom des frame
3- le nom des textbox.
Par nom, j'entend le contenu de la propriété Name de ces contrôles.
ps : ton image représente l'intégralité de ton userform?
Il n'y a pas d'autres contrôles?
Je vais regarder cela dans la journée.
Je pense revenir sous peu avec une solution "aux petits oignons" utilisant un module de classe.
Cependant, comme dit par ThauTheme (salutations), il nous manque des éléments.
Notamment :
1- le nom de l'userform
2- le nom des frame
3- le nom des textbox.
Par nom, j'entend le contenu de la propriété Name de ces contrôles.
ps : ton image représente l'intégralité de ton userform?
Il n'y a pas d'autres contrôles?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
6 avril 2016 à 11:28
6 avril 2016 à 11:28
ça a été plus vite que prévu.
A tester
En cas de souci pour adapter au classeur, n'hésitez pas.
Il se peut que de copier-coller le code de la classe cTB_Heure de mon classeur au votre ne fonctionne pas correctement (le code ne fera plus effet en raison de lignes de code cachées).
Dans ce cas exportez puis importez le module de classe dans votre classeur.
A tester
En cas de souci pour adapter au classeur, n'hésitez pas.
Il se peut que de copier-coller le code de la classe cTB_Heure de mon classeur au votre ne fonctionne pas correctement (le code ne fera plus effet en raison de lignes de code cachées).
Dans ce cas exportez puis importez le module de classe dans votre classeur.