Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1604 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [résolu] date et VB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] date et VB

n°1608951
yomg 95
Posté le 06-09-2007 à 15:50:05  profilanswer
 

Bonjour à tous
 
Tout d'abord je tiens à préciser que je suis pas ceinture noire en VB  :o  
 
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  :bounce:  
 
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  :pt1cable:  
 
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 :o ) !
 
Edit > Au fait tout cela se passe sous excel 2003
 
 
En espérant avoir été clair :jap: 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.
mood
Publicité
Posté le 06-09-2007 à 15:50:05  profilanswer
 

n°1608962
pyrof
Posté le 06-09-2007 à 16:09:47  profilanswer
 

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
 

n°1608967
yomg 95
Posté le 06-09-2007 à 16:19:56  profilanswer
 

J'ai essayé ça :
 
Private Sub TextBox4_Change()
[D35] = TextBox4
Cells(35, 4).NumberFormat = "dddd dd mmmm yyyy"
End Sub
 
Sans grand succès ...


---------------
Ch'titeS venteS ! ~ "S'il n'y a pas de solution, c'est qu'il n'y a pas de probleme" Devise ShadokS.
n°1608972
pyrof
Posté le 06-09-2007 à 16:28:17  profilanswer
 

Autre solution
 
tmp = Split(TextBox4 , "/" )
date1 = DateSerial(tmp(2), tmp(1), tmp(0))
Cells(35, 4) = date1

n°1608975
yomg 95
Posté le 06-09-2007 à 16:34:53  profilanswer
 

C'est bien dans le userform que je colle ça ???
 
 
J'avais prévenu, je ne suis pas ceinture noire :D
 
En tout cas, merci de me soutiendre :jap:


Message édité par yomg 95 le 06-09-2007 à 16:35:11

---------------
Ch'titeS venteS ! ~ "S'il n'y a pas de solution, c'est qu'il n'y a pas de probleme" Devise ShadokS.
n°1608976
yomg 95
Posté le 06-09-2007 à 16:36:26  profilanswer
 

Ca me donne un super erreur d'execution 9 :sweat:
 


---------------
Ch'titeS venteS ! ~ "S'il n'y a pas de solution, c'est qu'il n'y a pas de probleme" Devise ShadokS.
n°1608996
jpcheck
Pioupiou
Posté le 06-09-2007 à 17:21:42  profilanswer
 

euh, tant qu'à faire user friendly, pkoi n'utilises tu pas un control calendar ?

n°1609032
yomg 95
Posté le 06-09-2007 à 18:49:35  profilanswer
 

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*é :D
Je suis biologiste, pas informaticien ... j'apprends sur le tas.
 
Mais si tu as une solution super friendly et simple je suis preneur :love:
 


---------------
Ch'titeS venteS ! ~ "S'il n'y a pas de solution, c'est qu'il n'y a pas de probleme" Devise ShadokS.
n°1609037
yomg 95
Posté le 06-09-2007 à 19:02:07  profilanswer
 

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 :??:


---------------
Ch'titeS venteS ! ~ "S'il n'y a pas de solution, c'est qu'il n'y a pas de probleme" Devise ShadokS.
n°1609147
pyrof
Posté le 07-09-2007 à 07:55:28  profilanswer
 

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

mood
Publicité
Posté le 07-09-2007 à 07:55:28  profilanswer
 

n°1609156
yomg 95
Posté le 07-09-2007 à 08:23:15  profilanswer
 

Erreur d'execution '5' :sweat:


---------------
Ch'titeS venteS ! ~ "S'il n'y a pas de solution, c'est qu'il n'y a pas de probleme" Devise ShadokS.
n°1609160
pyrof
Posté le 07-09-2007 à 08:52:10  profilanswer
 

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

n°1609198
tegu
Posté le 07-09-2007 à 09:49:46  profilanswer
 

Et si tu utilisais la fonction de conversion de texte en Date nommée  CDate() ?

n°1609201
pyrof
Posté le 07-09-2007 à 09:58:57  profilanswer
 


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

n°1609213
yomg 95
Posté le 07-09-2007 à 10:27:24  profilanswer
 

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 :sweat:


---------------
Ch'titeS venteS ! ~ "S'il n'y a pas de solution, c'est qu'il n'y a pas de probleme" Devise ShadokS.
n°1609216
jpcheck
Pioupiou
Posté le 07-09-2007 à 10:30:26  profilanswer
 

elle se met pas a jour, mais est-ce que la cellule a1 l'est elle ?

n°1609222
pyrof
Posté le 07-09-2007 à 10:35:22  profilanswer
 

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?......

n°1609240
yomg 95
Posté le 07-09-2007 à 11:18:26  profilanswer
 

:bounce: And the winner is Yomg :bounce:
 
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 :jap:


Message édité par yomg 95 le 07-09-2007 à 11:41:11

---------------
Ch'titeS venteS ! ~ "S'il n'y a pas de solution, c'est qu'il n'y a pas de probleme" Devise ShadokS.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [résolu] date et VB

 

Sujets relatifs
Pointeur de fonction en argument [Résolu]Formulaire upload fichier = mauvais dossier [resolu]
[ Résolu ] Variable perl > php[Résolu] Executer install.php
[Résolu] Tri dans boucle[Resolu] Dessiner au dessus des controles / Splashscreen
[Resolu] Incrémenter un compteur dans une boucle[Résolu] un genre de popup qui n'en est pas un (lightbox)
[Batch] [resolu] Copier le premier fichier de chaque sous repertoire[Résolu] Problème d'addition complétement imbécile!
Plus de sujets relatifs à : [résolu] date et VB


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR