Microsoft 365 Listbox date inversée

eric72

XLDnaute Accro
Bonjour à tous,
Voilà un sujet traité des dizaines de fois sur ce forum mais malgré tout je ne parviens pas à m'en sortir.
Quand je veux modifier une "Dépense" et que je change la date à l'aide du "DatePicker3", la date se met systématiquement inversée dans la listbox et donc, par conséquent dans mon fichier!!!
alors que la date d'échéance qui se calcule automatiquement est bonne
Je ne m'en sors pas...
Et bonne année à tous.
Merci pour votre aide
Eric
 

Pièces jointes

  • test.xlsm
    619.1 KB · Affichages: 16
Solution
Bonjour
Une erreur dans ton test isdate et is numéric( double emploi)
voici ce que j'ai changé
If IsDate(tmp) Then
Range(NomTableau).Item(Enreg, c) = CDate(tmp)
Else
' Range(NomTableau).Item(Enreg, c) = tmp

If IsNumeric(tmp) Then
Range(NomTableau).Item(Enreg, c) = CDbl(tmp)
Else
Range(NomTableau).Item(Enreg, c) = tmp
End If
End If
End If
Else

sousou

XLDnaute Barbatruc
Bonjour
Une erreur dans ton test isdate et is numéric( double emploi)
voici ce que j'ai changé
If IsDate(tmp) Then
Range(NomTableau).Item(Enreg, c) = CDate(tmp)
Else
' Range(NomTableau).Item(Enreg, c) = tmp

If IsNumeric(tmp) Then
Range(NomTableau).Item(Enreg, c) = CDbl(tmp)
Else
Range(NomTableau).Item(Enreg, c) = tmp
End If
End If
End If
Else
 

eric72

XLDnaute Accro
Bonjour à tous et merci pour vos réponses, CP4, ta solution ne change rien toujours les dates à l'envers!!!
Jean-Marie j'ai essayé datevalue mais ça ne change rien!!!
Et sousou je ne parviens pas à placer ton code et surtout quoi remplacer, je veux bien que tu m'écrives le code entier si possible.
Merci beaucoup à tous les trois
eric
 

ChTi160

XLDnaute Barbatruc
Re
bien que résolu
la procédure que j'ai modifiée
VB:
Private Sub B_valid_Click()
         Application.ScreenUpdating = False
Unprotect
afficher
  Enreg = Me.Enreg
  For c = 1 To NbCol
  tmp = Empty
   If Not Range(NomTableau).Item(Enreg, c).HasFormula Then
     tmp = Me("textbox" & c)
     If IsNumeric(Replace(tmp, ".", ",")) And InStr(tmp, " ") = 0 Then
        tmp = Replace(tmp, ".", ",")
        Range(NomTableau).Item(Enreg, c) = CDbl(tmp)
            Else
         If IsDate(tmp) Then
           Range(NomTableau).Item(Enreg, c).Value = DateValue(tmp)        
         ElseIf IsNumeric(tmp) Then
            Range(NomTableau).Item(Enreg, c) = CDbl(tmp)        
          Else
           Range(NomTableau).Item(Enreg, c) = tmp
         End If
     End If
    Else
     Range(NomTableau).Item(Enreg - 1, c).Copy
     'Cells(2).Resize(, 12)
     Range(NomTableau).Item(Enreg, c).PasteSpecial Paste:=xlPasteFormats
    End If
  Next c
  UserForm_Initialize
  raz
           Application.ScreenUpdating = True
End Sub
Bonne Journée
jean marie
 

job75

XLDnaute Barbatruc
Bonjour eric72, cp4, sousou, ChTi160,

La macro du bouton "Modifier" était maladroite, utilisez :
VB:
Private Sub B_valid_Click()
Unprotect
Enreg = Me.Enreg
For c = 1 To NbCol
    If Not Range(NomTableau).Item(Enreg, c).HasFormula Then
        tmp = Me("textbox" & c)
        If IsNumeric(Replace(tmp, ".", ",")) Then tmp = Replace(tmp, ".", ",")
        If IsDate(tmp) Then
           Range(NomTableau).Item(Enreg, c) = CDate(tmp)
        ElseIf IsNumeric(tmp) Then
           Range(NomTableau).Item(Enreg, c) = CDbl(tmp)
        Else
           Range(NomTableau).Item(Enreg, c) = tmp
        End If
    End If
Next c
UserForm_Initialize
raz
End Sub
Edit : Unprotect ne sert à rien si l'on ne précise pas la feuille...

A+
 
Dernière édition:

eric72

XLDnaute Accro
Re
bien que résolu
la procédure que j'ai modifiée
VB:
Private Sub B_valid_Click()
         Application.ScreenUpdating = False
Unprotect
afficher
  Enreg = Me.Enreg
  For c = 1 To NbCol
  tmp = Empty
   If Not Range(NomTableau).Item(Enreg, c).HasFormula Then
     tmp = Me("textbox" & c)
     If IsNumeric(Replace(tmp, ".", ",")) And InStr(tmp, " ") = 0 Then
        tmp = Replace(tmp, ".", ",")
        Range(NomTableau).Item(Enreg, c) = CDbl(tmp)
            Else
         If IsDate(tmp) Then
           Range(NomTableau).Item(Enreg, c).Value = DateValue(tmp)        
         ElseIf IsNumeric(tmp) Then
            Range(NomTableau).Item(Enreg, c) = CDbl(tmp)        
          Else
           Range(NomTableau).Item(Enreg, c) = tmp
         End If
     End If
    Else
     Range(NomTableau).Item(Enreg - 1, c).Copy
     'Cells(2).Resize(, 12)
     Range(NomTableau).Item(Enreg, c).PasteSpecial Paste:=xlPasteFormats
    End If
  Next c
  UserForm_Initialize
  raz
           Application.ScreenUpdating = True
End Sub
Bonne Journée
jean marie

Bonjour Jean-Marie

J'ai le meme problème de date avec cette formule :

Private Sub BtnSaveDepense_Click()
' Ajoute les données à la base "Recette"
Dim x As Boolean, Y As Boolean
Application.ScreenUpdating = False
'd'abords on teste avant d'ajouter si ca existe deja ou si un des textbox n'est pas rempli
x = exist_in_tableau(CbFournisseur, Range("TbFournisseur"))
Y = TextboxestVide(Array(TxtDateDepense, CbChoixType, TxtCompteDepense, TxtPrixHTDepense))
If Y Then MsgBox "Saisie Obligatoire: La Date, Le Type de Dépense, Le N° de Compte et Le Prix H.T ": Exit Sub
If Not x Then
With Range("TbFournisseur").ListObject
.ListRows.Add.Range.Value = Array(CbFournisseur) 'si le contenu n'existe pas,on ajoute une ligne au TbFournisseur
End With
End If
Dim V, i&
With [TbDepense].ListObject
V = Array(CDate(TxtDateDepense.Value), CDate(TbDat1Depense.Value), TxtRefFacture, CbChoixType, CbFournisseur, TxtDesignationDepense, _
TxtCompteDepense, CbRgt, TxtPrixHTDepense, CbTVADepense, TxtPrixTTCDepense, TxtX) 'on ajoute une ligne au tableau
For i = LBound(V) To UBound(V)
If IsNumeric(V(i)) Then V(i) = CDbl(V(i))
Next
.ListRows.Add.Range.Cells(2).Resize(, 12) = V
End With
vidange
Application.ScreenUpdating = True
End Sub

Ca me renvoie une date à l'envers dans mon tableau, pffff pas simple les dates...

Merci beaucoup
Eric
 

Discussions similaires