Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Userform avec combobox

JBL07

XLDnaute Occasionnel
Bonjour à tous !

Je fais appel à nouveau à vos compétences..
Voici un classeur de suivi bancaire, épuré au max car l'original est plus complexe
J'ai souhaité insérer un userform pour faciliter la saisie des nouvelles écritures

Il y a donc un bouton/macro "Saisie" qui ouvre une nouvelle ligne de tableau vierge en Ligne 10, dans laquelle les infos saisis dans le Userform doivent s'implémenter
Et un bouton/macro " Chrono" qui après saisie retrie le tableau chronologiquement et remets en ordre la colonne Q qui m'indique le solde

Je rencontre 2 soucis :

- les 2 combo avec listes dépendantes ( Catégories dont dépend S/Catégorie ) n'affichent pas les listes ( qui se trouvent dans la feuille BD2 ), donc je ne peux pas saisir toutes mes infos
_ Si je saisi de nouvelles données en ligne 10 avec le Userform, la saisie générée ne s'inclue pas dans le tri "Chrono", et se place en haut du tableau, faussant tout

Pour finir, je souhaiterais que les 2 cellules débit / crédit affiche et valide des sommes directement dans le format monétaire

Voilà, ça fait beaucoup, mais je suis dessus depuis des heures sans parvenir à régler le tout... si qq se sent de coder ça pour moi, ce serait super
Merc par avance de vos réponses !
 

Pièces jointes

  • Comptes - 7.xlsm
    930.1 KB · Affichages: 64
Solution
re
bonjour
si tu réfléchi une seconde tu te rend compte qu'il y a ( entre autres) erreur dans le raisonnement
comment tu peux vouloir nourrir N et O alors que l'un est débit l'autre crédit
du fait dans ta saisie tu est obligé de mettre "0" dans l'un ou dans l'autre selon un achat ou une entrée
je parle même pas du non contrôle de la validité de la date et j'en passe et des meilleures ailleurs dans le code aussi

le raisonnement n'a rien a voir avec vba soit on fait les choses dans le bon sens soit on le fait pas dans le bon sens et là c'est le crach bien évidement
VB:
Private Sub CBValider_Click()
    If Not IsDate(TextBox4) Or Len(TextBox4) < 10 Then MsgBox "la date n'est pas valide": Exit Sub
    If MsgBox("La...

JBL07

XLDnaute Occasionnel
Ah oui, ça fonctionne !! Merci Chalet53

Quand à mon histoire de tri, on dirait que, bien que le format dans les cellules du tableau soit bien en date et monétaire, les 2 données injectées via le userform ne sont pas correctes et créent le bug, et du coup ne sont pas inclus
 

CHALET53

XLDnaute Barbatruc
Essaie comme ça dans ton pgm de mise à jour

Private Sub CBValider_Click()

If MsgBox("La nouvelle saisie est-elle confirmée ?", vbYesNo, "demande confirmation de saise") = vbYes Then

Sheets("Ecritures").Select


Range("B10").Value = TextBox4
Range("E10").Value = CboComptes
Range("F10").Value = CboCatégories
Range("G10").Value = CboSousCat
Range("I10").Value = TextBox1
Range("L10").Value = CboModePaie
Range("N10").Value = Format(TextBox2, "0.00")
Range("O10").Value = Format(TextBox5, "0.00")


End If

Unload Me
FMSaisie.Show vbModeless

End Sub
 

JBL07

XLDnaute Occasionnel
J' ai carrément fait :
Range("N10").Value = Format(TextBox2, "0.00" & " " & "€")
Range("O10").Value = Format(TextBox5, "0.00" & " " & "€")
Et ça fonctionne nickel

Par contre pour la date, j'ai tenté sur le principe :

Range("B10").Value = Format(TextBox4, "DD/MM/YYYY")

Et ça ne marche pas - Mon format n'est pas ok ?
 

JBL07

XLDnaute Occasionnel
Ah bah je vais tester !
Il ne me reste plus qu'une chose à trouver, c'est appliquer le add in "Date Picker" directement dans la zone texte date du userform ( mais je ne sais pas si c'est faisable ), et faire que le curseur passe directement de champ en champ de saisie dans ce userform
Un grand merci en tout cas !
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

=>JBL07
[En complément]
Pourquoi ne pas utilser le format monétaire (puisqu'il existe) ?

Range("N10:O10").NumberFormat = "#,##0.00 $"

EDITION: Bonjour CHALET53
 
Dernière édition:

JBL07

XLDnaute Occasionnel
Bon, je n'y arrive pas
Pour info, le Range("B10").Value = CDate(TextBox4) a été adopté ( par contre, merci Staple, mais pas le format
Range("N10:O10").NumberFormat = "#,##0.00 $" ( ou alors je l'ai mal reporté ))
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…