[résolu]Ou est l'erreur ?

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière modification par un modérateur:
Re : Ou est l'erreur ?

Bonjour Anthonygg,
tes données semblent bien s'enregistrer à chaque fois, mais uniquement pour la date enregistrée en cellule A1 de la feuille "saisie" et non en fonction de la date modifiée dans le textbox "dateBox".
Je m'explique :
en A1 tu as par exemple la date 01/02/2015
quand tu affiches ton formulaire, c'est bien cette date qui est affichée.
le commentaire saisi va être enregistré dans la cellule correspondante à la date 01/02/2015 de la feuille DATA.
puis en A1 la date va être mise à jour en ajoutant 1 à la date affichée dans le textbox "dateBox".
je suppose que si tu veux sauter une date (par exemple passer directement au 04/02/2015) tu vas modifier la date affichée (dans mon exemple : 02/02/2015) en tapant la date souhaitée(04/02/2015).
en cliquant sur le bouton "valider" comme tu mets à jour la feuille DATA en fonction de la date enregistrée en A1 de la feuille "saisie" le deuxième commentaire va s'enregistrer dans la feuille DATA pour la date du 02/02/2015. puis tu mets à jour la cellule A1 de la feuille "saisie" mais cette fois en tenant compte de ce que tu as modifié dans le textbox "dateBox".
si bien que pour la saisie suivante tu passeras bien au 05/02/2015, mais le commentaire de la date 04/02/2015 n'a pas été mis à jour au bon endroit.
il faut modifier ton code :
Private Sub validerBouton_Click()

'Recopie les données vers la BDD
dateBox.Value = Format(dateBox.Value, "dd/mm/yyyy")
Sheets("Saisie").Range("A1") = dateBox.Text
Sheets("Saisie").Range("A1") = Format(Sheets("Saisie").Range("A1").Value, "mm/dd/yyyy")
lig5 = Application.Match(Sheets("Saisie").[A1], Sheets("data").[A1:A367], 0)
If IsError(lig5) Then MsgBox "date non trouvée": Exit Sub
Sheets("data").Cells(lig5, 2) = commentairesBox.Value

'Incrémente de 1 la date
Sheets("Saisie").Range("A1") = CDate(DateAdd("d", 1, dateBox.Value))
dateBox.Value = Sheets("Saisie").Range("A1").Text


End Sub
bonne journée
 
Re : Ou est l'erreur ?

Merci c'est la fonction que je voulais !

Par contre le logiciel ne marche pas pour les dates type 06/01/2015 ... ça l'enregistre dans 01/06/2015 🙁
 
Dernière modification par un modérateur:
Re : Ou est l'erreur ?

bonsoir,
c'est l'éternel problème des formats date "dd/mm/aaaa" et "mm/dd/aaaa".
comme tu as sans doute pu le remarquer, j'ai modifié le type de format dans l'instruction
Sheets("Saisie").Range("A1") = Format(Sheets("Saisie").Range("A1").Value, "mm/dd/yyyy")
.
en effet avec le format "dd/mm/aaaa" l'instruction
lig5 = Application.Match(Sheets("Saisie").[A1], Sheets("data").[A1:A367], 0)
ne trouve pas les dates dont le jour est supérieur à 12.
Il faut trouver le compromis.
à suivre
bon courage
 
Dernière édition:
Re : Ou est l'erreur ?

Bonjour à tous.

Moi, je ferais comme ceci :

Code:
Private Sub validerBouton_Click()
Dim madate As Date

'Recopie les données vers la BDD
    madate = dateBox.Value
    Sheets("Saisie").Range("A1").NumberFormat = "m/d/yyyy"
    Sheets("data").[A2:A368].NumberFormat = "m/d/yyyy"
    
'L'inversion survient quand une valeur contenant une date est transférée vers une cellule, le format de celle-ci étant de type Date et la valeur étant de type String, ou l'inverse.
'Pour éviter tout risque d'inversion Jour/Mois, il y a FormulaLocal 
    Sheets("Saisie").Range("A1").FormulaLocal = madate
    
    lig5 = Application.Match(Sheets("Saisie").Range("A1"), Sheets("data").[A1:A368], 0)
    If IsError(lig5) Then MsgBox "date non trouvée": Exit Sub
     
    Sheets("data").Cells(lig5, 2) = commentairesBox.Value
'Incrémente de 1 la date
    madate = madate + 1
    Sheets("Saisie").Range("A1").FormulaLocal = madate
    dateBox.Value = madate

End Sub

Cordialement

Docmarti
 
Dernière édition:
Re : [résolu]Ou est l'erreur ?

C'est encore moi !

J'ai essayé vos deux fonctions sur un pc en anglais et hélàs plus rien ne marche !
Or mon code doit pouvoir marcher sur un pc en anglais principalement 🙁

Excel ne fait t'il pas la conversion automatiquement ?
 
Re : [résolu]Ou est l'erreur ?

Problème : La date dans ma boite de saisie s'affiche en anglais : ex : 01/21/2015 pour le 21 janvier et si on met une date avec un seul chiffre ça passe du 3/3 au 3/4 puis au 4/4 ... 🙁

Voici le fichier :
 

Pièces jointes

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

Le problème provient de
Code:
dateBox.Value = madate

Le premier élément étant de type String et le second étant de type Date, il y a conversion d'un type à l'autre, ce qui peut créer une mauvaise interprétation de la date.

Il faut éviter la conversion par.

Code:
dateBox = madate
'ou
dateBox.Value = CStr(madate)
 
Re : [résolu]Ou est l'erreur ?

Bonjour,

Je me demande vraiment ce que vous fabriquez tous sur ce fil avec vos formats, c'est pourtant simple :

Code:
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

L
Réponses
2
Affichages
4 K
L
B
Réponses
2
Affichages
2 K
B
J
Réponses
3
Affichages
2 K
julien 07
J
C
Réponses
6
Affichages
3 K
christophe697569
C
Retour