XL 2016 Codes Userform

Jean Pierre REYNAUD

XLDnaute Junior
Bonjour à tous
J'ai créé un formulaire pour saisir des données sur une feuille qui comporte 5 colonnes :
Nature des opérations
Mode de paiement
Débit
Crédit
Solde (lequel se calcul par une formule)
A chaque nouvelle saisie les infos s’inscrivent bien sur la feuille de données. Mais j’ai trois problèmes :
1) Lorsque je saisie une nouvelle donnée, celle-ci remplace purement et simplement les infos de la première ligne alors que je voudrais que cette nouvelle information s’inscrive, juste dessous, sur la première ligne vierge.
2) Le formulaire contient un cadre (frame) avec 2 optionbutton : « Dépense » et « Recette ».
Voici le code que j’ai saisi pour le Bouton « Valider » (pour les boutons OptionButton1 et OptionButton2 je n'ai pas mis de code) :
Private Sub Bouton_Valider_Click()
' Validation de l'opération
Sheets("Feuil1").Range("A4") = ComboBox1.Value
Sheets("Feuil1").Range("B4") = ComboBox2.Value
If OptionButton1 = True Then
Sheets("Feuil1").Range("C4") = TextBox1 ‘Choix « Dépense »
Else
Sheets("Feuil1").Range("D4") = TextBox1 ‘ Choix « Recette »
End If
End Sub
Bien entendu, lorsque je clique sur le bouton « Dépense », la valeur « Montant » s’inscrit dans la colonne C, ligne 4 et si je choisie « Recette » l’inscription se fait dans la colonne D, ligne 4, étant précisé, comme je l’ai dit plus haut, qu’à chaque donnée, celle-ci remplace purement et simplement les infos de la première ligne et ne s’enregistre pas sur la ligne suivante.
Je voudrais que la valeur inscrite dans le TextBox "Montant" s’inscrive dans la colonne « C » si je choisie « Dépense » et dans la colonne « D » si je choisie le bouton « Recette », et qu'à chaque saisie, les informations s’enregistrent sur la première ligne libre (vierge) de ma feuille. Pour l’instant, les infos s'inscrivent sur la même ligne et écrasent celles précédemment enregistrées.
3) Pour l’instant, je n’ai qu’une feuille de saisie. Mais j’ai l’intention d’en créer une par mois (c’est-à-dire 12) et d’utiliser le même Userform pour chaque feuille de saisie mensuelle. Quel est le code ? Que faut-il que je modifie dans la feuille « Code » de l’Userform pour que celui-ci soit utilisable sur toutes les feuilles de saisie.
J’ai cherché un peu partout sur Internet : sans succès.
J'aurais bien aimé vous joindre le fichier que j’ai créé mais, apparemment, il est trop volumineux.
D’avance, je vous en remercie
Jean Pierre REYNAUD
 

Jean Pierre REYNAUD

XLDnaute Junior
Bonjour Fanfan
Merci pour la réponse. Je vais ouvrir le fichier joint. Peut-être trouverais-je la réponse à mes questions. J'ai réussi à compacter mon fichier que je pensais joindre à ma réponse mais je n'ai pas encore trouvé comment le joindre à la présente réponse.
Affaire à suivre
Cordialement
Jean Pierre
 

Jean Pierre REYNAUD

XLDnaute Junior
Bonsoir François,
Les dernières corrections correspondent à ce que je recherche, à savoir pouvoir saisir les données sur des feuilles mensuelles correspondant au mois concerné.
Les essais que j'ai effectués provoquent les bug suivants :
1) les infos ne s'inscrivent pas correctement dans la grille du mois sélectionné ni sur la première ligne vide
2) la saisie provoque l'erreur suivante "Erreur d'exécution :13 ; Incompatibilité de type" et la ligne de code "
Range("C" & ligne).Value = CDbl(TextBox1.Value)" est surlignée.
Mais je pense qu'on est sur la bonne voie.
A bientôt

Jean Pierre
 

Jean Pierre REYNAUD

XLDnaute Junior
Bonjour François,
Je viens de tester le fichier que tu as modifié sur les mois de Janvier et d'avril. La validation provoque dans les deux cas un message d'erreur :
à la ligne Range("C" & ligne).Value = CDbl(TextBox1.Value) si je veux inscrire une dépense et à la ligne Range("D" & ligne).Value = CDbl(TextBox1.Value) lorsque je choisie une recette. Dans les deux cas les montants choisis ne s'inscrivent pas dans les colonnes correspondantes : C pour le montant de la dépense et D pour le montant de la recette.
Par ailleurs, lorsque j'ouvre l'UserForm à partir d'un mois quelconque (Janvier par exemple) , c'est toujours la feuille de Mars qui s'affiche et le mois de mars est toujours proposé dans la liste déroulante "Mois". Enfin, dans le textbox "Montant, un zéro (0) est toujours apparent.
Pardon pour toutes ces remarques car tu as fait un boulot particulièrement intéressant.
Merci encore
A bientôt
Jean Pierre
 

Jean Pierre REYNAUD

XLDnaute Junior
Re Bonjour,
En effet, instinctivement, lorsque je saisie un montant, j'utilise le point du clavier et non la virgule.
Pour éviter cet écueil, j'ai rajouté le code suivant :
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'TRANSFORMER LE POINT PAR UNE VIRGULE
If KeyAscii = 46 Then KeyAscii = 44
'ACCEPTER UNIQUEMENT UNE SEULE VIRGULE ET LES CHIFFRES ENTRE 0 ET 9
If InStr("1234567890,", Chr(KeyAscii)) = 0 Or (InStr(TextBox1.Value, ",") <> 0 And Chr(KeyAscii) = ",") _
Or (TextBox1.SelStart = 0 And Chr(KeyAscii) = ",") Then KeyAscii = 0: Beep
End Sub
que j'ai trouvé sur Internet. Maintenant je peux utiliser indistinctement la virgule ou le point.
J'ai réussi a vider, après validation, la nature des opérations (ComboBox1), les Modes (Combobox2) et le montant (TextBox1).
En revanche, je n'ai pas réussi à vider le ComboBox3 (Mois).
Enfin, l'UserForm continue a s'ouvrir sur le mois de Mars (même si après on peut sans problème choisir le mois que l'on souhaite. J'aimerais bien que lorsque j'ouvre l'UserForm, celui-ci soit vierge de toute référence.
Ci-joint, le fichier que j'ai modifié.
On progresse !!!
Cordialement
Jean Pierre
 

Pièces jointes

  • Budget_03_2018 (6).xlsm
    121.6 KB · Affichages: 22

fanfan38

XLDnaute Barbatruc
C'est à cause de cette ligne que le combobox3 s'ouvre sur mars...
dans
Private Sub UserForm_Initialize() 'initialisation de l'userform

Me.ComboBox3.Value = ActiveSheet.Name
que tu peux remplacer par
Me.ComboBox3.ListIndex = -1

A+ françois
 

Jean Pierre REYNAUD

XLDnaute Junior
J'ai procédé à la rectification que tu proposes. Lorsque j'ouvre le classeur, la feuille "MARS" continue à s'afficher et l'UserForm (vierge de toute référence) s'ouvre automatiquement. Je souhaiterais que la feuille qui s'ouvre soit une feuille dénommée "Accueil" que j'aménagerais à ma manière et avoir la maîtrise de l'ouverture du formulaire en cliquant sur le bouton "Afficher Userform" pour décider du moment où je commence la saisie et sur quel mois.
Merci
Ci-joint la dernière version du fichier
A+

Jean Pierre
 

Pièces jointes

  • Budget_03_2018 (8).xlsm
    126.5 KB · Affichages: 28

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16