Trier et totaliser par N° de compte (EXCEL)

Résolu/Fermé
andremo Messages postés 15 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 30 octobre 2007 - 19 juin 2007 à 21:36
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 25 juin 2007 à 19:25
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.
A voir également:

7 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
19 juin 2007 à 22:02
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.
0
andremo Messages postés 15 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 30 octobre 2007
21 juin 2007 à 12:23
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.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
21 juin 2007 à 22:08
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.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
22 juin 2007 à 00:32
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
0

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.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
22 juin 2007 à 16:13
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
0
Merci gbinforme,

Tu as fait un excellent travail.

Le progamme foctionne bien.

Tous mes remerciements.

A. M.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
25 juin 2007 à 19:25
bonjour

Merci, c'est agréable de recevoir un message sympathique !
0