XL 2016 Affichage des données sur feuille

Jean Pierre REYNAUD

XLDnaute Junior
Bonjour,

J'ai créé un classeur pour suivre mon budget familial. Jusqu'à présent ce fichier ne comportait pas d'UserForm de saisie. Les données étaient inscrites mensuellement, au vu de mon relevé bancaire, sur les feuilles de saisie mensuelles (Saisie_Janvier, Saisie_Février, etc.). Ces feuilles de saisie mensuelle comportaient des listes déroulantes dans lesquelles je sélectionnais la nature de l’opération et le mode de paiement. Le montant des débits et/ou des crédits étaient servi directement. Ces informations sont transmises et reprises automatiquement dans les feuilles mensuelles (Janvier, Février, etc.) qui répartissent les données par catégories et par nature de recettes et de dépenses.

Tout cela fonctionnait parfaitement jusqu'au moment ou j'ai décidé de remplacer les sélections sur listes déroulantes par un formulaire de saisie.

J'ai donc créé un Userform et entré les codes correspondants (du moins ceux qui me paraissaient nécessaires et exacts) : Codes de l'Userform et ajouté un module (module1) pour l'inscription des données.

Dans cet UserForm, je sélectionne le mois concerné (la feuille de saisie choisie s'ouvre automatiquement) la nature de l'opération, si c'est une dépense ou une recette, et le montant.

Tout semble être correct et je n'ai aucun message d'erreur. Le seul problème, c'est que lorsque je valide les informations ne s'inscrivent pas dans la feuille de saisie mensuelle sélectionnée. Tout reste vierge.

Je ne sais pas ou est l'erreur. Est-ce le code ajouté dans le module ? J'ai tourné le problème dans tous les sens mais quelque chose m'échappe.

Quelqu'un aurait-il une idée, voire une solution.

D'avance merci.

Ci-joint le fichier en cause étant précisé que le bouton pour ouvrir l'UserForm a été placé sur la page Saisie_Janvier mais permet d'accéder à n'importe quelle page de saisie sélectionnée dans le Combobox Mois

Bramoset
 

Pièces jointes

  • Test_Budget_Personnel_v29_03_2018.xlsm
    685.3 KB · Affichages: 41

Lone-wolf

XLDnaute Barbatruc
Bonjour Jean Pierre

Il faut déplacer la ligne des totaux en la mettant en haut de la feuille. Quand tu met ceci
ligne = .Cells(Rows.Count, 1).End(xlUp).Row + 1, c'est la dernière ligne non remplie; mais comme tu as les totaux, les nouvelle données vienne s'inscrire sous celle-ci.

feuille.gif

Clique sur l'image pour mieux comprendre
 
Dernière édition:

laurent950

XLDnaute Accro
Bonjour,
il faut aussi nomée les feuilles dans votre code comme ci-dessous :
est corrigé l'orthographe avec les accents pour février (nomenclature et aussi pour la feuille)
donc
fevrier
août
décembre
i
ci le nom de la feuille cible ou seront écrite les informations. / Sheets(ComboBox3.Value)

Sheets(ComboBox3.Value).Range("A" & ligne) = ComboBox1.Value
et pas
Range("A" & ligne) = ComboBox1.Value

cdt
Laurent
 

Jean Pierre REYNAUD

XLDnaute Junior
Bonjour Lone-Wolf,
Merci pour ta réponse. En effet les données saisies s'inscrivent après la dernière ligne.
Si je déplace la ligne des totaux en la mettant en haut de la feuille, la première ligne saisie s'inscrit correctement mais le chiffre zéro (0) apparaît automatiquement sur la ligne suivante. Ce qui fait que si je saisi une nouvelle donnée, celle- s'inscrit sur la ligne suivante, c'est-à-dire sous celle où le "0" est apparu. J'ai donc une ligne vierge entre les données.
Ne pourrait-on pas modifier le code "page = .Cells(Rows.Count, 1).End(xlUp).Row + 1" pour que, tout en gardant la ligne des totaux en bas, les données s'inscrivent correctement dans la feuille de saisie, à partir du haut.
Ce code apparaît deux fois : dans Private Bouton_Valider_Click () (2ème ligne) et dans Private Sub CommandButton6_Click() - Nouveau -
Dois-je modifier les deux lignes.
A+
Jean Pierre
 

Jean Pierre REYNAUD

XLDnaute Junior
Bonjour laurent950,
Merci pour ta réponse.
J'ai procédé aux rectifications proposées en ce qui concerne l'orthographe des feuilles dans "Nomenclature". Pour le nom des feuilles, sauf erreur de ma part, je n'ai pas trouvé de nom avec des accents.
En ce qui concerne, le nom de la feuille cible où seront écrites les informations, j'ai rajouté le code que tu m'as proposé. Mais cela ne change rien : les infos ne s'inscrivent toujours pas sur la feuille cible.
Question : dois-je également modifier la ligne de code suivante "Range("B" & ligne) = ComboBox2.Value" et la remplacer par "Sheets(ComboBox3.Value).Range("B" & ligne) = ComboBox2.Value"
J'avoue que je suis un peu perdu.
Merci pour tes conseils.
A+
Jean Pierre
 

Jean Pierre REYNAUD

XLDnaute Junior
Re Bonjour Lone-Wolf,

;) Si dans "Private Sub Bouton_Valider_Click()", je remplace, à la 15 ème ligne (après End If et avant For i = ligne To derlig) " derlig = Cells(Rows.Count, 1).End(xlUp).Row " par " derlig = Cells(Rows.Count, 1).End(xlUp).Row +1 ", les données s'inscrivent correctement en haut de la page, à la première ligne vide et je peux garder ma ligne des totaux en bas.
:( Mais le zéro "O" s'inscrit toujours sur la ligne en dessous de celle où est enregistrée la donnée. Ce qui fait que lorsque je saisi une nouvelle donnée, celle- ci s'inscrit sur la première ligne vide, c'est-à-dire sous celle où le "0" est apparu. J'ai donc une ligne vierge entre les données.
A ton avis, peut-on corriger ce bug et comment ?
Merci
A +
Jean Pierre
 

Jean Pierre REYNAUD

XLDnaute Junior
A Lone-Wolf et à Laurent950,
Je viens de me rendre compte que si je veux saisir des données sur une feuille autre que "Saisie_Janvier", par exemple "Saisie_Fevrier" ou Saisie_Septembre, j'ai le même problème qu'au départ : aucune infos ne s'inscrit sur la feuille sélectionnée.
Qu'en pensez-vous ?
Merci
Jean Pierre
 

Jean Pierre REYNAUD

XLDnaute Junior
A Lone-Wolf et à Laurent950,
J'ai oublié de préciser, qu'en fait, les données s'inscrivent bien dans la feuille sélectionnée, mais en-dessous de la ligne des totaux (comme au départ). La correction que j'ai proposée plus haut ne vaut que pour la feuilel de saisie du mois de Janvier. Pourquoi cela ne fonctionne-t-il pas pour les autres feuilles alors que le code est le même ?
Merci
Jean Pierre
 

laurent950

XLDnaute Accro
J'ai corrigé le code

j'ai laissé les commentaire dans les feuilles de code
il faut corrigé mettre les accents dans les feuilles excel pour
février
août
décembre
car pas d'accent

je vous laisse réglé le nombre d'enregistrement aussi il y a une erreur !

Ps : ont peux continuer a corrigé par la suite, les grands principe sont noté
et avec mes explications vous pouvez régler la suite

Laurent
 

Pièces jointes

  • Test_Budget_Personnel_v29_03_2018.xlsm
    677.9 KB · Affichages: 39
Dernière édition:

Jean Pierre REYNAUD

XLDnaute Junior
Laurent,
Je n'ai malheureusement pas tout compris les explications.
1) Si je tente de saisir des données pour le mois de Janvier, celles-ci s'affichent dans la feuille mais tout de suite après j'au un message d'erreur qui m’explique que je ne peux pas saisir sur une feuille protégée et si je veux déprotéger la feuille un mot de passe m'est demandé. Jusqu'à présent je pouvais saisir mes infos alors que la feuille était protégée (les cellules n'étant pas vérouillées)
J'ai donc rétabli les codes que j'avais placé dans le module "Routines_Générales" pour protéger et déprotéger les feuilles. Je n'ai plus de problème de protection. Les données s'inscrivent mais tout de suite après validation, j'ai un message d'erreur et la ligne " Fcible.Cells(i, 5).Value = Fcible.Cells(i - 1, 5).Value + Fcible.Cells(i, 4).Value - Fcible.Cells(i, 3).Value" est surlignée.
2) Si je veux saisir sur une autre feuille (février par exemple) j'ai un message d'erreur qui s’affiche pour la ligne " Fcible.Range("A" & ligne) = ComboBox1.Value".
J'avoue ne plus savoir où j'en suis dans les codes de l'Userform et pour le bouton "Valider" en particulier.
Ne peut-on revenir à la version précédente, avant rectifications, et repartir de là pour débuter le programme ?
A +
Jean Pierre
 

Lone-wolf

XLDnaute Barbatruc
Re Jean-Pierre

Il faut faire comme le montre l'image. Dans les formules il faut ajouter la condition =SI(B5=""; "";Somme(B5:B100)), ceci n'est qu'un exemple, à toi de l'adapter. Dans les Options > Options avancées >Options d'affichage de la feuille de calcul décoche Afficher un zéro.....

EDIT: pourquoi avoir mis les formules en colonne E, alors que la macro fait déjà le calcul?? :rolleyes:
J'ai mi les tirets manuellement pour ne pas avoir de ligne vide (au cas où).

feuille.gif
 
Dernière édition:

Jean Pierre REYNAUD

XLDnaute Junior
Je suis complètement perdu !
Plus rien ne fonctionne. Je préfère revenir à la situation avant tes modifications et essayer de debugger le programme à partir de là.
Le problème, c'est que je ne sais plus où j'en suis et et que je suis pas sûr de rétablir les codes avant modifications.
A +
Jean Pierre
 

Jean Pierre REYNAUD

XLDnaute Junior
Re,
Si j'avais compris le message ce n'aurait pas été sorcier pour moi. Mais je ne l'ai pas compris.
Je regrette quand même que tu aies modifié les codes sans m'y associer. Résultat : je ne reconnais plus rien et je ne sais plus où j'en suis.
C'et pourquoi je vais revenir à la version avant tes modifications et essayer de débugger mon programme.
Peut-être que quelqu'un d'autre sur le forum m'aidera à trouver la solution. Peut-être que Laurent950 répondra à mes observations.
A+
Jean Pierre
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali