|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Michel BENTOUMIResponsable d'exploitation informatique Inscription : décembre 2011 Messages : 9 ![]() |
Bonjour à toutes et à tous,
J'ai développé une appli qui me calcule des Heures supplémentaires. OK tout va bien, mais les utilisateurs ne respectent pas toujours le format de date "jj/mm/aaaa". 1) Dans une plage B7:B20 comment faire pour que quelque soit la façon dont est rentrée la date (01 01 2011, 1er janvier 2011, 01.01.2011.....) le résultat dans la celulle soit "jj/mm/aaaa". Par VBA dans le code de la feuille serait mieux car pas de risque d'éffacement de la formule. 2) dans cette plage, comment en colonne C, je peux extraite le jour en toutes lettres. merci d'avance pour votre aide. Bonnes Fêtes de Fin d'année. MBEN69 |
|
|
00
|
|
|
#2 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Le plus simple je pense est de forcer l'utilisateur à ne pas mettre n'importe quoi, regarde les validations de données dans Excel, tu peux choisir une validation Date, ainsi seule les date valide seront autorisé, si l'utilisateur tape une date dans un format non reconnu, tu peux afficher le message d'erreur que tu veux (c'est dans les options de la validation) Je te déconseilles de faire un système qui reconnait des format de date, ce sera toujours aléatoire, prend l'exemple du 12/06/2011 : le 12 juin ou le 06 décembre? Pour ta colonne C regarde dans les fonction, tu doit avoir Jour() qui te permet d'extraire la jour d'une date. ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
|
|
10
|
|
|
#4 |
|
Membre Expert
![]() Inscription : décembre 2011 Messages : 566 ![]() |
Bonsoir,
Dans l'idée de faire coup double, forcer le format de la date, et aider les utilisateurs à la saisie, en faisant apparaître un calendrier (DateTimePicker sous XLS2003). Attention, ce type d'objet existe bien sous la version 2003, mais sauf erreur de ma part, PAS dans la version 2010 d'Office Pour une question de portabilité, tu peux également créer ta propre fenêtre de sélection de date. (ex basique 3 ComboBox JJ, MM, AAAA). Dans ce dernier cas, il faudra déterminer si ça vaut toujours le coup d'implémenter ça (par rapport à la méthode de Quazerty), parce que la simplification n'est plus énorme. (au moins 8 clics pour une saisie de Date, alors qu'avec le DateTimePicker en 3 clics la date est choisie) |
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Pour abonder dans le sens de BlueMonkey il existe même un xla tout fait qui traîne sur le net, une fois celui-ci lancé un calendrier est automatiquement affiché sur les cellules contenant un format date. ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
|
|
00
|
|
|
#6 | ||||||||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Citation:
Ci-joint un exemple en ajoutant la commande "Date ?" au menu contextuel "Cell" (bouton droit de la souris. Voici le code (nécessite un contrôle DTPicker et un command button sur un userform. Dans le module "ThisWorkbook" : Code :
Code :
Code :
__________________
Cordialement. Daniel Citation:
|
||||||||
|
00
|
|
|
#7 | |||
|
Invité de passage
![]() Michel BENTOUMIResponsable d'exploitation informatique Inscription : décembre 2011 Messages : 9 ![]() |
Bonjour Daniel.C
Merci pour ta réponse rapide. Celà fonctionne parfaitement pour tous les formats sauf si je rentre une date avec des points comme séparateurs (ex : 21.12.2011). Plantage ligne 4 du code "Target.value=cdate(target.value) Cordialement MBen69 Citation:
Merci pour ta réponse. je vais le chercher Bonnes Fêtes MBen69 |
|||
|
|
00
|
|
|
#8 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Oui, moi aussi. Je suppose que c'est parce que le point est mon symbole décimal (et toi ?). Raison de plus pour adopter la solution de Qwazerty ou ma seconde proposition.
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Michel BENTOUMIResponsable d'exploitation informatique Inscription : décembre 2011 Messages : 9 ![]() |
Daniel.C
Tu as raison, moi aussi. Cependant en colonne C, quand la date s'affiche au bon format, j'ai pas le nom du jour mais 01/01/1900 ? Tu vois d'ou ça vient ? MBen69 |
|
|
00
|
|
|
#10 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Ca vient que j'avais mal compris ce que tu voulais. "01/01/1900", c'est 1 au format date. Mets :
Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
10
|
|
|
#11 |
|
Invité de passage
![]() Michel BENTOUMIResponsable d'exploitation informatique Inscription : décembre 2011 Messages : 9 ![]() |
Bonjour Daniel.C,
Pour le jour en colonne C celà fonctionne impéccable. Merci encore. J'ai tjrs ce Pb de format de date, mais je ne désespère pas. Merci encore pour toutes vos contributions MBen69 |
|
|
00
|
|
|
#12 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Ceci, peut-être : Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#13 |
|
Invité de passage
![]() Michel BENTOUMIResponsable d'exploitation informatique Inscription : décembre 2011 Messages : 9 ![]() |
Daniel.C
Désolé mais cela ne fonctionne toujours pas et en plus le jour "dddd" ne s'affiche pas dans la colonne C Merci pour ton temps MBen69 |
|
|
00
|
|
|
#14 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Pourquoi tu t’embêtes, si j'ai bien compris le nombre de lignes est fixe? Dans ce cas dans la colonne B, tu mets =cellule colonne A exemple pour la ligne 1, dans la cellule B2, tu mets Puis tu vas dans le format de ta cellule et tu choisis "Personnalisée" et tu met "jjjj" comme format (sans les " "). Ensuite tu étires la cellule B2 jusqu'en bas de ton tableau et le tour est joué. ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
|
|
10
|
|
|
#15 |
|
Invité de passage
![]() Michel BENTOUMIResponsable d'exploitation informatique Inscription : décembre 2011 Messages : 9 ![]() |
Bonjour Qwazerty,
Merci, cela fonctionne : J'ai encore appris qque chose aujourd'hui. J'avais fini par mettre : =SI($B8="";"";TEXTE($B8;"jjjj")). Cela revient au même mais sympa ta soluce. J'ai activé l'enregistreur de macro, Nickel merci encore MBen69 |
|
|
00
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Ca ne revient pas tout a fait au même, lorsque tu changes uniquement le format de la cellule comme je te l'ai indiqué, le contenu "interne" de la cellule ne change pas (on a toujours la date au format numérique), seul le contenu "visible" est modifié. Il faut donc faire attention si tu utilises le contenu d'une des cellule de la colonne B pour assembler avec une autre chaîne de caractère. Exemple tu veux afficher en colonne C mardi Matin (j'ai pris mardi au pif). Si tu mets en colonne C tu vas te retrouver avec "32561 Matin", 32561 représentant la date stocké en interne... Dans ce cas la il faudra faire ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
|
|
00
|
|
|
#17 | ||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Citation:
Dans quel cas est-ce que ça ne fonctionne pas ?
__________________
Cordialement. Daniel Citation:
|
||
|
00
|
|
|
#18 |
|
Invité de passage
![]() Michel BENTOUMIResponsable d'exploitation informatique Inscription : décembre 2011 Messages : 9 ![]() |
Daniel.C,
C'est de ma faute. Celà n'a jamais fonctionné mais en colonne C j'avais laissé une formule de conversion texte="jjjj". désolé MBen69 Merci Qwaz, j'en tiendrais compte MBen69 |
|
|
00
|
|
|
#19 | ||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Citation:
__________________
Cordialement. Daniel Citation:
|
||
|
00
|
|
|
#20 |
|
Expert Confirmé
![]() |
bonjour a tous
j'interviens un peu tard mais pour les points servant de separateurs tu peut utiliser la fonction (replace) et metre les propriétés des cellules au format texte au plaisir
__________________
mes fichiers dans les contributions: mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA mon nouveau mouse in out pour les boutons dans un userform mon addin pour prendre un cliché de selection de cellules si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres et n'oublie pas de voter ![]()
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com