[résolu]Ou est l'erreur ?

  • Initiateur de la discussion anthonygg
  • Date de début
A

anthonygg

Guest
Bonjour,

J'ai une userform qui me sert de boite de saisie. Je dois choisir une date et faire un commentaire ensuite je valide et le logiciel me l'enregistre dans un tableau. Pour améliorer le confort j'incrémente la date de +1 à chaque saisie.

Problème : Si je saisie mes données à la suite, tout marche mais si je saute une date (par exemple du 16/01 au 18/01), mes données ne s'enregistre plus pour un jour, puis le jour d'après cela remarche ...

Comment faire pour que cela enregistre mes données à 100% ?
 

Pièces jointes

  • Problème de date.xlsm
    45.7 KB · Affichages: 43
  • Problème de date.xlsm
    45.7 KB · Affichages: 51
  • Problème de date.xlsm
    45.7 KB · Affichages: 52
Dernière modification par un modérateur:

job75

XLDnaute Barbatruc
Re : [résolu]Ou est l'erreur ?

Re,

Maintenant si vous voulez modifier Saisie!A1 via l'USF il faut ajouter une macro :

Code:
Private Sub dateBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Not IsDate(dateBox) Then Cancel = True: MsgBox "Date non valide !", 48: Exit Sub
    Sheets("Saisie").[A1] = CDate(dateBox)
    UserForm_Initialize 'pour copier le format
End Sub

Private Sub UserForm_Initialize()
    dateBox = Sheets("Saisie").Range("A1").Text
End Sub

Private Sub validerBouton_Click()
Dim lig5

'Recopie les données vers la BDD
    lig5 = Application.Match(Sheets("Saisie").[A1].Value2, Sheets("data").[A1:A367], 0)
    If IsError(lig5) Then MsgBox "date non trouvée": Exit Sub
    Sheets("data").Cells(lig5, 2) = commentairesBox
    
'Incrémente de 1 la date
    Sheets("Saisie").[A1] = Sheets("Saisie").[A1] + 1
    UserForm_Initialize
End Sub

A+
 

Docmarti

XLDnaute Occasionnel
Re : [résolu]Ou est l'erreur ?

@job75 : La solution que tu suggères

Code:
Private Sub UserForm_Initialize()
    dateBox = Sheets("Saisie").Range("A1").Text
End Sub

fait exactement ce que fait la mienne :


Code:
dateBox.Value = CStr(madate)

Ces 2 solutions attribuent au TextBox une valeur de type String et l'inversion Jour/Mois n'a pas lieu.

Comme la propriété Value du TextBox est toujours de type String, le fait de lui attribuer une valeur de type String n'exige pas un appel à la fonction interne dans VBA de conversion d'un type à un autre (type Date vers type String dans le cas présent). Donc la date n'est pas interprétée, mais est acceptée telle quelle par le TextBox.

Pour observer l'inversion des dates dans un TextBox, j'ai effectué mes tests sur une version française de Excel 2007 qui doit être ouverte après que les paramètres régionaux et linguistiques dans le Panneau de configuration aient été changé pour Langue : Anglais (Etats-Unis)
 

Discussions similaires

Statistiques des forums

Discussions
312 216
Messages
2 086 344
Membres
103 194
dernier inscrit
rtison