[RESOLU] Transfert listbox date (inversion jour/mois)

cathodique

XLDnaute Accro
Bonjour,:)

Afin de mettre à jour une base de factures. Je voudrais utiliser une userform pour vérifier le total de chaque facture.

Je procède comme suit:
1- saisie les données dans des textboxs
2- clic sur bouton valider ---> transfert les textboxs dans la listbox
et dans textbox5=somme les montants (index colonne 3 de la listbox)
3- clic sur bouton suivant vide les textbox sauf la 1ère (code)
et ainsi de suite.

4- clic sur bouton transfert pour écrire données sur la feuille et c'est là que j'ai un problème
j'ai remarqué l'inversion du mois et du jour.

une autre question: comment formater les données de la listbox par exemple pour les montants avec le signe €

en vous remerciant par avance.
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonjour.
La ListBox restant reprise à la fin comme source de donnée, ce que personnellement je préfère éviter de faire :
VB:
Private Sub Bt_transfert_Click()
Dim T(), L&
With Me.ListBox1
   T = .List
   For L = 0 To UBound(T, 1)
      T(L, 1) = CDate(T(L, 1))
      T(L, 3) = CCur(T(L, 3))
      Next L
   Worksheets("Feuil1").Range("A" & dl).Resize(.ListCount, .ColumnCount) = T
   End With
End Sub
 

cathodique

XLDnaute Accro
Bonjour Dranreb:),

Comme à l'accoutumé, efficace.
De mon côté, mes vieillissants neurones m'ont trouvés ce code
VB:
Private Sub Bt_transfert_Click()
  Dim x As Integer, Nb_L_ListBox As Integer
With Me.ListBox1
   With Worksheets("feuil1")
  For x = 1 To Me.ListBox1.ListCount
  .Cells(x + dl, 1) = Me.ListBox1.List(x - 1, 0)
  .Cells(x + dl, 2) = CDate(Me.ListBox1.List(x - 1, 1))
  .Cells(x + dl, 5) = Me.ListBox1.List(x - 1, 1)
  .Cells(x + dl, 3) = Me.ListBox1.List(x - 1, 2)
  .Cells(x + dl, 4) = Me.ListBox1.List(x - 1, 3)
  .Cells(x + dl, 4).NumberFormat = "$#,##0.00_);($#,##0.00)"

  Next x
  End With

  End With
End Sub
ça a l'air de donner un bon résultat, mais je n'ai pas encore effectué plusieurs tests pour en être sûr à 100%.

Je teste ton code et reviens aux nouvelles.

Merci beaucoup;)
 

cathodique

XLDnaute Accro
Voilà, je suis de retour aux nouvelles.

Incompatibilité de type si le nombre est décimal. Par contre, si c'est un entier le code ne plante pas.

sur cette ligne de code
T(L, 3) = CCur(T(L, 3))
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Veille à ce que ce soit bien une virgule qui a été utilisée comme séparateur décimal et non un point.
 

cathodique

XLDnaute Accro
Veille à ce que ce soit bien une virgule qui a été utilisée comme séparateur décimal et non un point.
Effectivement, Dranreb le séparateur est bien un point (j'utilise le clavier numérique). Que faire alors, vraiment embêtant ces histoires avec les dates et les valeurs numériques.
Merci beaucoup.

edit: merci Dranreb, je pense avoir trouvé comme ci-dessous, j'espère ne pas avoir de mauvaises surprises.
T(L, 3) = CCur(Replace(T(L, 3), ".", ","))
 
Dernière édition:

cathodique

XLDnaute Accro
En fait, je n'ai rien trouvé du tout, j'ai fait une connerie.
T(L, 3) = CCur(Replace(T(L, 3), ".", ",")) 'incompatibilité de type

Merci, j'ai besoin d'un coup de pouce.
 

Chris24

XLDnaute Impliqué
Supporter XLD
Bonjour

comme ceci peut être

Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 46 Then KeyAscii = 44
End Sub

Cdt
 

cathodique

XLDnaute Accro
Bonjour Chris24:),

En fait, je me suis rendu compte tardivement.
cette ligne plante -----> T(L, 3) = CCur(Replace(T(L, 3), ".", ",")) 'incompatibilité de type
car quelques fois, je n'ai pas le montant mais je dois entrer quand même les données.
du coup quand il n'y a pas de montant le code plante.

Je teste quand même ton code pour la textbox.

Merci beaucoup.
 

Dranreb

XLDnaute Barbatruc
VB:
If T(L, 3) = "" Then T(L, 3) = Empty Else T(L, 3) = CCur(Replace(T(L, 3), ".", ","))
 

Discussions similaires


Haut Bas