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...

Staple1600

XLDnaute Barbatruc
Re

Le format c'est pour les pépétes
(j'ai écrit format monétaire
Je disais simplement que c'est plus simple que
Range("N10").Value = Format(TextBox2, "0.00" & " " & "€")
Range("O10").Value = Format(TextBox5, "0.00" & " " & "€")
Et ça fonctionne nickel
Mais évidemment, avant de formater, faut injecter les valeurs
 

JBL07

XLDnaute Occasionnel
Lol oui j'avais compris que c'est pour les pépètes
Mais en utilisant ce format ( je l'ai essayé tel quel puis avec la forme "#,##0.00 €" ), et mes cellules N et O 10 restent vides après validation du Useform
 

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

 

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
 

Staple1600

XLDnaute Barbatruc
Re

Test toujours OK.
Par contre, j'ai noté un souci sur ton fichier
Dans ton code tu injectes une valeur en H10, alors que
1) la colonne H est masquée sur la feuillle
2) et surtout elle contient déjà une formule.
 

Discussions similaires

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