Manipulation selon conditions de "CDATE" et "DTpicker"
Bonjour et bonnes fetes a tout le monde,
J'ai deux problemes que je n'arrive pas a resoudre malgré les differents sujets existants dans le forum:
1/c'est a propos de "CDATE" au niveau des textbox pour eviter l'insertion de la date au format (mmddyyyy), j'ai utilisé- Cells(no_ligne, 4) = cdate(TextBox2) -ca marche bien seulement si je saisie une date, le probleme c'est que je saisie pas toujours la date, en faite ce que je veux c'est si mon frame(sous conditions) est visible je saisie une date sinon pas de saisie (et la je veux eviter le plantage ).
2/c'est a propos de Dtpicker , je veux supprimer l'affichage des heures automatique lors des insertions des infos du USF vers la feuille excel, j'ai essayé (proprité short dt.....)mais j'ai pas réussi; y a t'il au autre moyen pour avoir seulement un format (dd/mm/yyyy seulement )en vba svp.
J'éspere trouver de l'aide svp, je vous joint mon fichier au cas ou.
En vous remerciant et en vous souhaitant un bon weekend.
-Ca marche nickel , juste un petit souci quand je valide dans les textbox une date parexemple 12/12/20111 j'ai le le message d'avertissement dans un premier temps et si je valide une deuxieme fois ca bug, comment je peux faire pour eviter ce bug et d'avoir juste un arret si le saisie de la date n'est pas bon ?
J'ai une autre question j'ai remplacé le textbox2 par Dtpicker et j'ai fais:
If Me.ComboBox1.Value = "OPTION" Then
.Cells(no_ligne, 4) = Format(DTPicker4.Value, "DD/MM/YYYY") '
Else
.Cells(no_ligne, 4) = ""
End Ifj'ai testé ca marche mais est ce c'est possible que le dtpicker n'affiche rien?je veux juste etre sure que c'est une bonne formule.
Dérniére question :
j'ai utilisé ce bout de macro pour obliger l'insertion d'une date(textbox3) superieur a la date saisie dans textbox2:
Private Sub TextBox3_AfterUpdate()
If TextBox3.Value > textbox2.Value Then
MsgBox "Veuillez saisir une date postérieure à celle de départ.", vbOKOnly
TextBox3.Value = ""
End If
End SubLe probleme c'est que ca bug et si je mets une date superieur ou inferieur il me renvoie le message dans les deux cas.
Je te remercie d'avance et bon dimanche
Amicalement
Bonsoir pleuvieux
j'ai encore 2 questions sur le même thème si tu permets :
1/j'essaye de bloquer le dtpicker 3 pour tous les weekends de l'année j'ai suivi tes instructions voir ci dessous)
If Me.DTPicker3 = "05/05/2011" And Me.DTPicker3 = "06/05/2011" Then
MsgBox "attention weekend"
Me.DTPicker3.SetFocus
Exit Sub
End If
mais j'ai deux souci le premier c'est qu'il ne prends pas en compte la date en français(pour le 5/5/2011 ca marche mais pas pour le 06/05/2011car il tient compte du mois de juin ensuite, y t il un moyen s'il te plais que je puisse regrouper tous les weekend de l'année avec une macros simplifié.
2/D'après toi comment je peux faire s'il te plais pour bloquer la validation d'une date antérieur a la date du jour lors du choix via le dtpicker(c-a-d si on est le 25/04/2011 je ne peux pas sélectionner le 24/04/2011) au niveau des proprités (dtpicker)c'est faisable mais seulement entre 2 dates,mais pas le jour au jour.
J'éspere que j'ai bien expliqué, j'ai l'impression quelques fois que je complique les choses en écrivant
PS:
' Ne pas oublier les . devant les Cells pourquoi? j'ai essayé de trouvé la réponse sur les forums mais je trouve pas encore
Merci encore et bonne soirée
Amicalement
Bonjour
Pas sur d'avoir tout compris
Regardes pour le DTPicker1 si c'est ce que tu recherches (Pas de date inférieure à la date du jour)
Regardes pour le DTPicker3 si c'est ce que tu recherches (Signale les Week-End)
Pour les .
Quand tu utilises le With ..., habitude à prendre de faire précéder tous les objets, propriétés, méthodes etc.. (par exemple Cells, Heigt ou Clear ) d'un point s'il sont liés à ce With (sinon gare aux problèmes de code qui ne fonctionne pas comme on le voudrait)
Exemple
Sub test()
With Range("A1")
.Value = " ABC"
.Formula = "=R2C2"
.ClearContents
With .Interior
.Color = RGB(255, 0, 0)
.ColorIndex = 6
End With
End With
End SubN'importe quoi comme code c'est juste une illustration de mes propos
Bonjour BANZAI64,
Merci tout d'abord pour ton aide et tes conseils..
- Pour la date inférieur c'est ok.
- Pour la dtpicker3 (weekend) c'est ok aussi.
Par contre après plusieurs tests j'ai constaté malheureusement que l'insertion de tous les dtpicker est sous format "DD/MM/YYYY" seulement pour les jours (n'importe quel mois) du 13 a la fin du mois et il est sous format "MM/DD/YYYY" pour la sélection du 1er jour jusqu'au 12 du mois; c'est un peu bizarre (exemple du 01er au 12 aout la date affiché sur excel est en anglais , du 13 au 31 aout la date est affiché en français) j'espère que c'est pas ma version d'excel qui fais ca!!!
j'ai pas fais attention si c'était le cas auparavant ...pourtant tous les autres USF auparavant contiennent toujours des DTpicker...
En te remerciant d'avance et a te lire
Bonne nuit
Amicalement
Bonjour
J'ai vu le problème
J'ai trouvé un remède (surement pas le meilleur)
Si quelqu'un a une idée
Bonjour Tout le monde,
Bonjour Banzai64,
Merci pour ta réponse rapide, mais malgré plusieurs recherches j'ai l'impression qu'il ya pas vraiement une solution sure a 100% pour les dtpicker...
Parcontre j'ai trouvé 2 alternatives:
1/resultat sure :
Format(TextBoxX ou dtpickerx.Value, "dddddd") ' qui donne :mercredi 15 aout 2011
Format(TextBoxX ou dtpickerx.Value,"ddmmmmyyyy") resultat : 15 aout 2011
l'avantage c'est que le resultat est assuré mais l'inconvenient c'est que je serais obligé de changé beaucoup de choses pour le reste du projet...je garderais cette solution au cas ou ...
2/ La solution dont j'ai opté pour le moment :
utilisé textbox avec cdate (j'ai repris ce que tu as fais au début et j'ai rajouté ce bout de code)
if TextBox3 = "" Then MsgBox " Tapez une Date 3, merci ! ", vbCritical, "Erreur de saisie": TextBox3.SetFocus: Exit sub
'Vérification que le contrôle Date n'est pas vide ?
If Not IsDate(TextBox3) Then MsgBox TextBox3.Value & "Date 3 n'est pas une date valide, respectez le format, merci !", vbCritical, "Erreur de saisie" _
: TextBox3 = "": TextBox3.SetFocus: Exit Sub 'Vérification de la validité de la date ?
.Cells(No_Ligne, 6) = CDate(TextBox3) ' Date 3
Mais j'ai 2 souci :le premier quand je rentre parexemple l'an 1400 ou bien l'an 114 ; vba plante pourtant quand je test avec des lettres (parexemple jk/kkllkj/pomlmlm) il ne plante plante pas.
Le deuxieme c'est que je veux qu'il n'enregistre pas automatiquement les autres cellule s'il ya un focus sur un element de l'usf(quand je me trompe de date parexemple il me renvoie le message et il se met en focus au niveau du text box concerné mais il inscrit les autres autres champs sur la feuille excel ), y a t'il un remede pour ces deux problemes stp.
Bref je suis vraiement bloqué ce que veux c'est surtout que vba ne plante pas sinon tu me conseils quoi?.
J'espere que mes explications sont claires, je te joins un fichier avec ce que j'ai fais comme modification..
je te remercie d'avance et bonne soirée
Amicalement
-- 29 Avr 2011, 23:45 --
re Bonjour,
merci de ne pas tenir compte du fichier joint auparavant v005,cijoint le fichier rectifié
Bonjour
Les vérifications doivent être au début
Bonne journée
Bonsoir tout le monde ,
On Error GoTo erreur....
debut:
erreur:
If Err = 1004 Then
Resume debut
End If
j'ai essayé de l'utiliser, ca marche bien excel ne plante plus
je te joins le fichier avec ces modifications
Bonne
Amicalement,
Bonjour
Si erreur tu reviens au début de l'erreur qui te fera revenir au début de l'erreur qui te fera revenir au début de l'erreur etc......
Donc si erreur
Signalement et on quitte la procédure, ce qui te permet de corriger l'erreur
Bonne nuit
est ce que je peux te demander encore de l'aide s'il te plais
Je te remercie encore
Amicalement
Bonjour
Pas sur d'avoir tout solutionné
Ah ces dates !!!!
A tester
Si tu as tout solutionè ,a un petit détail près,en faite si je supprime une date sur le usf rien ne se passe sur la feuille excel(est ce que tu sais pourquoi ?) pour les dates c'est super....
Trop fort en tout cas j'aurais jamais pu faire cette manipulation,bravoooooooooooooooooooo.
A te lire
Amicalement
Bonjour
Oui j'ai raté ce test
Modifies la macro Private Sub ecriture()
Private Sub ecriture()
.
.
.
For I = 1 To nbcolonne
Select Case I
Case 4, 6, 9
If Me.Controls(control1(I) & I).Value <> "" Then
Sheets(nomf1).Cells(ligne2, I) = CDate(Me.Controls(control1(I) & I).Value)
Else
Sheets(nomf1).Cells(ligne2, I).ClearContents
End If
Case Else
Sheets(nomf1).Cells(ligne2, I) = Me.Controls(control1(I) & I).Value
End Select
Next I
.
.
End Sub
Désolé
Bonne journéeSans commentaire,
j'espère que j'arriverais a appliquer et a manipuler tout cela dans mes prochains projets.....
A très bientôt
Amicalement