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:rolleyes:
je parle même pas du non contrôle de la validité de la date :rolleyes: 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
Ta chaumière doit être mieux rangée que la mienne, car celà ne fonctionne pas
Et c'est bien dommage, car bien que visuellement, la solution de Chalet53 ressemble à un montant en euros correct dans les cellules N et O10, je viens de m'apercevoir que les montants ne sont pas pris en compte dans les totaux en haut de feuille ... c'est fatiguant de ne pas savoir faire, un pb peut en cacher un autre en vba !!

Je ne vous en voudrai pas si vous laissez tomber ! Lol

1609091987552.png
 

Staple1600

XLDnaute Barbatruc
Re

Lire le message#21 ;)

NB: Ci-dessous le code VBA utilisé dans le message#21
VB:
Private Sub CommandButton1_Click()
With Range("N10:O10")
.Value = Array(TextBox1 * 1, TextBox2 * 1)
.NumberFormat = "#,##0.00 $"
End With
End Sub

Private Sub UserForm_Initialize()
TextBox1 = "1600,57"
TextBox2 = "1729" 'remember  G. H. Hardy, Ramanujan ;-)
End Sub
 

JBL07

XLDnaute Occasionnel
Pour sûr
En attendant, je ne sais pas comment faire fonctionner ça à la suite de mes autres champs de userform, vu que ça ne match pas dans mon tableau :)

Private Sub CBValider_Click()

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

Sheets("Ecritures").Select


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
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

JBL07
J'ai testé sur ta pièce jointe (dans le message#1)
Ci-dessous le code du bouton Valider
(J'ai généralisé la syntaxe présente dans le message#24, juste par gain de place et parce que c'est ma manière d'écrire)
VB:
Private Sub CBValider_Click()
If MsgBox("La nouvelle saisie est-elle confirmée ?", _
vbYesNo, "Demande confirmation de saise") = vbYes Then
With Sheets("Ecritures")
.Range("B10").Value = CDate(TextBox4)
.Range("E10:H10").Value = Array(CboComptes, CboCatégories, CboSousCat, TextBox1)
.Range("L10").Value = CboModePaie
.Range("N10:O10").Value = Array(TextBox2 * 1, TextBox5 * 1)
.Range("N10:O10").NumberFormat = "#,##0.00 $"
End With
End If
Unload Me
'FMSaisie.Show vbModeless
End Sub
 

Discussions similaires

Réponses
93
Affichages
2 K

Statistiques des forums

Discussions
312 099
Messages
2 085 269
Membres
102 845
dernier inscrit
Baticle.geo