Trier et totaliser par N° de compte (EXCEL)

Résolu
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.
Configuration: Windows XP
Excel 2003

Firefox 1.5.0.12

7 réponses

  1. Contributeur
    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
    1. 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
      1. Contributeur
        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
        1. Contributeur
          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
          1. 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
            1. Contributeur
              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
              1. Merci gbinforme,

                Tu as fait un excellent travail.

                Le progamme foctionne bien.

                Tous mes remerciements.

                A. M.
                0
            2. Contributeur
              bonjour

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