date et VB [résolu] - VB/VBA/VBS - Programmation
Marsh Posté le 06-09-2007 à 16:09:47
Bonjour,
A un moment donné du force la cellule à la valeur de ta combo par
cells(x,y)=combo_xxx.value
après tu fais
cells(x,y).NumberFormat = "m/d/yyyy"
Ca va peut être résoudre ton problème
Marsh Posté le 06-09-2007 à 16:19:56
J'ai essayé ça :
Private Sub TextBox4_Change()
[D35] = TextBox4
Cells(35, 4).NumberFormat = "dddd dd mmmm yyyy"
End Sub
Sans grand succès ...
Marsh Posté le 06-09-2007 à 16:28:17
Autre solution
tmp = Split(TextBox4 , "/" )
date1 = DateSerial(tmp(2), tmp(1), tmp(0))
Cells(35, 4) = date1
Marsh Posté le 06-09-2007 à 16:34:53
C'est bien dans le userform que je colle ça ???
J'avais prévenu, je ne suis pas ceinture noire
En tout cas, merci de me soutiendre
Marsh Posté le 06-09-2007 à 16:36:26
Ca me donne un super erreur d'execution 9
Marsh Posté le 06-09-2007 à 17:21:42
euh, tant qu'à faire user friendly, pkoi n'utilises tu pas un control calendar ?
Marsh Posté le 06-09-2007 à 18:49:35
En fait j'ai 7 zones de saisie dont 2 zones de dates plus 3 menus déroulants déja pour faire ça, récupérer les données dans des cellules et mettre tous ça dans un tableau j'en ai un peu ch*é
Je suis biologiste, pas informaticien ... j'apprends sur le tas.
Mais si tu as une solution super friendly et simple je suis preneur
Marsh Posté le 06-09-2007 à 19:02:07
J'ai p'tet une solution qui a l'air de fonctionner malheureusement je suis chez moi et je n'ai pas le code pour vérifier.
Il semblerais qu'un collage spécial > valeur permette de modifier mon 02/02/2007 en 02 février 2007 (la cellule de destination étant correctement formatée) alors qu'un collage spécial > valeur et format des nombres ne fonctionne pas
Marsh Posté le 07-09-2007 à 07:55:28
Bonjour,
Voici une autre proposition
remplace :
Private Sub TextBox4_Change()
[D35] = TextBox4
Cells(35, 4).NumberFormat = "dddd dd mmmm yyyy"
End Sub
par
Private Sub TextBox4_Change()
tmp = TextBox4
pos = InStr(tmp, "/" )
j = Left(tmp, pos - 1)
tmp = Mid(tmp, pos + 1)
pos = InStr(tmp, "/" )
m = Left(tmp, pos - 1)
a = Mid(tmp, pos + 1)
Cells(35, 4) = DateSerial(a, m, j)
Cells(35, 4).NumberFormat = "dddd dd mmmm yyyy"
End Sub
Marsh Posté le 07-09-2007 à 08:23:15
Erreur d'execution '5'
Marsh Posté le 07-09-2007 à 08:52:10
Je viens de comprendre ton problème
Quand tu saisis ta date dans la textbox, tu commences par le jour
pour exemple tu saisis 1, et là le traitement se fait immédiatement
Or 1 ne peut être reconnu comme une date, il formate donc la cellule en texte
Ce qu'il faut faire:
Private Sub TextBox4_Change()
End Sub
Dans le bouton de validation (généralement OK qu'il faut créer)
Private Sub CommandButton1_Click()
tmp = TextBox4
tmp = Split(tmp, "/" )
date1 = DateSerial(tmp(2), tmp(1), tmp(0))
Cells(35, 4) = date1
Cells(35, 4).NumberFormat = "dddd dd mmmm yyyy"
End Sub
Marsh Posté le 07-09-2007 à 09:49:46
Et si tu utilisais la fonction de conversion de texte en Date nommée CDate() ?
Marsh Posté le 07-09-2007 à 09:58:57
Tegu
La fonction cdate() fonctionne si ton argument a un format bien précis
Simulation de la saisie
Je saisis 1 pour le jour : cdate("1" ) = 31/12/1899
je saisis 1/ (pour passer au mois)
cdate("1:" ) = message d'erreur Erreur d'exécution 13
Il faut impérativement saisir la date complètement avant d'utiliser cdate
Donc ne pas écrire le code dans textbox_change
mais dans un bouton
Marsh Posté le 07-09-2007 à 10:27:24
Sinon j'ai trouve la fonction dateval(unecellule) qui fonctionne à merveille lors de tests (je colle 02/03/2007 dans a1 et la cellule b1 contenant le formule =dateval(a1) m'affiche "2 mars 2007" ) mais pendant l'execution de la macro la cellule ne se met pass à jour
Marsh Posté le 07-09-2007 à 10:30:26
elle se met pas a jour, mais est-ce que la cellule a1 l'est elle ?
Marsh Posté le 07-09-2007 à 10:35:22
J'insiste: to problème vient pas de dateval ......
Il vient de la conversion d'une saisie (textbox, boite de dialogue) en un format date d'une cellule
As tu essayé le code dans le bouton?......
Marsh Posté le 07-09-2007 à 11:18:26
And the winner is Yomg
j'ai réussi à faire sorte de la cellule contenant dateval s'active en collant ça
Cells(2, 14) = "=DATEVAL(N1)"
Range("N2" ).Select
ActiveCell.FormulaR1C1 = "=DATEVALUE(R[-1]C)"
Range("N3" ).Select
Avec N1 contenant la date au format texte
Tout fonctionne à merveille maintenant, merci à tous pour votre soutien
Marsh Posté le 06-09-2007 à 15:50:05
Bonjour à tous
Tout d'abord je tiens à préciser que je suis pas ceinture noire en VB
Bon maintenant place à mon problême.
J'ai une jolie macro qui permet de gérer des péremptions et qui déplace des lignes dans un onglet "périmés" lorsque la date limite d'utilisation est supérieure à la date d'aujourd'hui. Tout marche très bien
J'ai voulu perfectionné la bête en ajoutant une combobox permettant une saisie plus friendly de nouveaux éléments à gérer.
Et là, c'est le drame.
La date que je récupère de la combobox et systématiquement reconnue comme du texte et par conséquent la macro estime que le produit n'est pas périmé même si il l'ai.
Je précise que j'ai essayé tout les format de date possible et que mes cellules sont parfaitement formattées. De plus, ma date apparait en 02/02/2007 au lieu de 2 septembre 2007 mais si double-click dans la cellule puis que je selectionne une autre cellule, le format devient comme par magie correcte
Quelqu'un aurait-il une explication voire même une solution ?
Pour être plus clair j'aimerais rentrer la date au format 02/02/2007 dans ma combobox et qu'excel me retranscrive cette saisie comme étant une date dans une cellule (et non du texte ) !
Edit > Au fait tout cela se passe sous excel 2003
En espérant avoir été clair merchi d'avance
Message édité par yomg 95 le 12-09-2007 à 09:11:19
---------------
Ch'titeS venteS ! ~ "S'il n'y a pas de solution, c'est qu'il n'y a pas de probleme" Devise ShadokS.