Trier et totaliser par N° de compte (EXCEL)
Résolu
andremo
Messages postés
15
Statut
Membre
-
gbinforme Messages postés 14930 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 14930 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Sous EXCEL 2003, j'ai un fichier de compta avec en feuille 1 "le journal" et les champs suivants: dates, trimestre, type, montants, libellé, montants,N° de compte, N° d'activité.
Les N° de compte sont précedés des caractéres "P-" pour les recettes (Ex: P-75601) ou "D-" pour les depenses (Ex: D-40601).
En feuille 2 je souhaite trier les enregistrements de recettes, les regrouper et effectuer le total par N° de compte.
En feuille 3 je souhaite trier les enregistrements de dépenses, les regrouper et effectuer le total par N° de compte.
Le tri et le total par N° de compte doit s'effectuer automatiquement aprés: ajout, suppression ou modification d'un enregistrement sur le journal de la feuille 1.
Pouvez vous m'aider à realiser ces modifications.
Merci d'avance.
A. M.
Sous EXCEL 2003, j'ai un fichier de compta avec en feuille 1 "le journal" et les champs suivants: dates, trimestre, type, montants, libellé, montants,N° de compte, N° d'activité.
Les N° de compte sont précedés des caractéres "P-" pour les recettes (Ex: P-75601) ou "D-" pour les depenses (Ex: D-40601).
En feuille 2 je souhaite trier les enregistrements de recettes, les regrouper et effectuer le total par N° de compte.
En feuille 3 je souhaite trier les enregistrements de dépenses, les regrouper et effectuer le total par N° de compte.
Le tri et le total par N° de compte doit s'effectuer automatiquement aprés: ajout, suppression ou modification d'un enregistrement sur le journal de la feuille 1.
Pouvez vous m'aider à realiser ces modifications.
Merci d'avance.
A. M.
Configuration: Windows XP Excel 2003 Firefox 1.5.0.12
7 réponses
-
bonjour
Le tri et le total par N° de compte doit s'effectuer automatiquement aprés: ajout, suppression
il faut travailler avec une macro VBA évenementielle et pour t'aider,
ce serais bien que tu nous mettes un petit bout de fichier sans données confidentielles.
tu peux mettre un fichier test ici : https://www.cjoint.com/
et donner le code lien fourni dans ce sujet.
-
Bonjour gbinforme,
J'ai mis le fichier souhaité sur Cjoint.https://www.cjoint.com/?gvl2T3oRAR
Le fichier est composé de 3 feuilles:
La 1ére comporte le journal
La 2éme comporte les dépenses par N° de Compte (réaliser manuellement)
La 3éme comporte les recettes par N° de Compte ( réalisé manuellement)
Ce que je souhaite obtenir: Que les 2éme et 3éme feuilles se mettent à jour automatquement en fonction des modifications de saisie dans la feuille Journal.
Merci de ton aide
A. M.
-
bonsoir.
Je viens de récupérer ton fichier et je penses que cela doit être possible de faire cela.
Il me faut un peu de temps libre et je te mets le résultat.
à bientôt.
-
bonsoir
Voilà ce que tu voulais est réalisé et disponible ici : https://www.cjoint.com/?gwashr2a4O
En fait, tu peux saisir autant d'écritures que tu veux dans le journal,
et c'est lorsque tu vas dans la feuille dépenses ou recettes qu'elle est mise à jour.
Pour cela, lors de l'activation de la feuille, on appelle une macro avec le paramètre
correspondant soit aux recettes soit aux dépenses.
La macro se trouve dans le module1 :
Option Explicit Public c As Integer 'colonne du N° de compte Public i As Integer 'indice écriture Public j As Integer 'indice colonne Public l As Integer 'ligne compte Public k As Integer 'colonne compte Public Const cpt = "N° Compte" 'libellé colonne N° compte Public Const czi = "Journal" 'libellé feuille de saisie journal Public Const rec = "P-" 'début libellé compte recettes Public Const dep = "D-" 'début libellé compte dépenses Public Const mnt = "Montants" 'libellé colonne montants Public Const tit = 2 'ligne titre Public Sub cre_feuille(sel As String) ' initialisation feuille Cells(tit, 1).RemoveSubtotal ' recherche de la dernière ligne j = 0 For i = 1 To Cells(tit, 1).End(xlToRight).Column If Cells(65536, i).End(xlUp).Row > j Then j = Cells(65536, i).End(xlUp).Row End If Next i Cells(tit + 1, 1).Resize(j, Cells(tit, 1).End(xlToRight).Column).ClearContents ' recherche de la colonne du N° de compte For i = 1 To Sheets(czi).Cells(tit, 1).End(xlToRight).Column If Sheets(czi).Cells(tit, i).Value = cpt Then c = i Next i ' recherche des écritures l = tit For i = 4 To Sheets(czi).Cells(65536, 1).End(xlUp).Row If Left(Sheets(czi).Cells(i, c).Value, 2) = sel Then l = l + 1 For k = 1 To Sheets(czi).Cells(tit, 1).End(xlToRight).Column For j = 1 To Cells(tit, 1).End(xlToRight).Column If Sheets(czi).Cells(tit, k).Value = _ Cells(tit, j).Value Then Cells(l, j).Value = Sheets(czi).Cells(i, k).Value Exit For End If Next j Next k End If Next i ' recherche de la colonne du N° de compte For i = 1 To Cells(tit, 1).End(xlToRight).Column If Cells(tit, i).Value = cpt Then c = i Next i ' recherche de la colonne Montants For i = 1 To Cells(tit, 1).End(xlToRight).Column If Cells(tit, i).Value = mnt Then j = i Next i ' tri des écritures Cells(tit, 1).Resize(l, Cells(tit, 1).End(xlToRight).Column).Sort _ Key1:=Cells(tit + 1, c), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Cells(tit, 1).Subtotal GroupBy:=c, Function:=xlSum, TotalList:=Array(j), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True End Sub
Il suffit de la copier dans ton classeur de travail, et de rajouter la macro évenementielle
dans les feuilles correspondantes :
Private Sub Worksheet_Activate() Call cre_feuille(rec) End Sub
ou
Private Sub Worksheet_Activate() Call cre_feuille(dep) End Sub
Tiens nous au courant du résultat de tes tests
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Merci gbinforme,
j'ai bien reçu le dossier, mais quand je veux l'ouvrir j'ai le message suivant qui s'affiche:"Les macros de ce classeur sont désactivées car le niveau de sécurité est élevé et elles n'ont pas été signées numériquement au moyen d'un certificat approuvé. ........."
Est un probléme de Config. au niveau de mon PC ??
Si oui que faire ??
Je suis absent jusqu'a lundi
Merci pour toute ton aide.
A. M. -
bonjour
le niveau de sécurité est élevé
Effectivement pour utiliser les macros, il faut autoriser la procédure.
Pour cela, faire le menu Outils/macro/sécurité et cocher :
- soit sécurité moyen : un message s'affiche à l'ouverture pour demander l'autorisation.
- soit sécurité faible : pas de message mais toutes les macros sont autorisées.
bon test
-
bonjour
Merci, c'est agréable de recevoir un message sympathique !