Macro pour sommer des résultats

Bonjour à tous  .j’espère que tout le monde va bien.
Je commence à mieux maitriser excel mais les macros ou autre pas encore – une chose à la fois -.
Je me permets de revenir vers vous car chaque mois, je fais une tache qui est du copier –coller (x109fois) et j’aimerais savoir s’il était possible de l’automatiser.
Je récupère un fichier tous les mois qui est exactement sous la même forme tous les mois à savoir :

  • 1 onglet DF9 qui récapitule l’intégralité des autres onglets.
  • 1 onglet par département.

Dans chaque onglet, je dois

  1. aller à la colonne N et rajouter les montants à la colonne L.
  2. sommer les montants de la colonne L
  3. reporter dans l’onglet DF9 les nouveaux montants dans la colonne L
  4. m’assurer que les montants soient justes et que les colonnes N soient bien à 0

Alors chaque mois le nombre de ligne peuvent changer par contre jamais les noms des colonnes ne changent.

Je remercie d’avance la personne susceptible de m’aider.

Facturation T4 2017CNAMTS.xlsx (621,6 Ko)

Bonjour,
J’ai pas tout compris le raisonnement,
Merci de bien préciser le noms des feuilles avec un exemple de ce que cela donnerais en manuel

Ok, j’essaye de plus détaillé :slight_smile: .
Merci déjà de prendre en compte mes soucis.

Etape1, je vais dans l’onglet CPAM011
Etape2, je vais dans la colonne N voir s’il y’a des données
Si oui, je vais en L et j’additionne les données de la colonne N donc En L46 il y’aura =L46+N46
Etape 3 : je vide la colonne N en mettant 0 ( une fois que j’ai additionner les données).
Etape 4 je fais une somme dans la colonne Totaux de la colonne N donc en L60=Somme(L4 :L59) le nombre de ligne peut varier.
ETAPE 5 : je filtre sur chaque CODE OC (colonne A) et je note la somme total obtenu en colonne L. (je le note sur un papier)

Je reproduis cela pour chaque ONGLET de cpam011 à CPAM 976.

Etape 5 : dans ‘l’onglet DF9 en colonne L j’additionne mes résultats obtenus dans chaque onglets et ça pour chaque OC.
Etape 6: dans 'longlet DF9, je somme toujours ma colonne L90=Somme(L10:90).

les colonnes sont donc INVARIABLES mais le nombre de lignes peut varier.

Re,
OK, je vais ce que je faire :thinking:
Mais un peu de patience quand même :wink:

Merci de ton aide . C’est vraiment sympa de ta part.

Bonjour,

A tester (Normalement cela doit être bon :wink: )

La macro :

Option Explicit

Sub Transfert()

Dim Ws As Worksheet, Wd As Worksheet, Dl%, DernLig%, i%, j% 'Déclaration des variables
Application.ScreenUpdating = False 'Désactive le rafraissement Ecran

DernLig = Sheets("DF9").Range("A" & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de la colonne A de DF9

Set Wd = Sheets("DF9")
  For Each Ws In Worksheets 'Boucle sur les onglets sauf DF9
    If Ws.Name <> "DF9" Then
      Application.StatusBar = "Traitement onglet " & Ws.Name
      Sheets(Ws.Name).Activate 'Active l'onglet
      Set Ws = Sheets(Ws.Name)
      Dl = Range("A" & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de la colonne A de l'onglet sélectionné
'************************************************************
'*            TRAITEMENT DE L'ONGLET SELECTIONNE
'************************************************************
      For i = 4 To Dl 'boucle sur les lignes
        If Cells(i, 14).Value <> 0 Then 'si la cellue colonne "N" est différent de 0
          Cells(i, 12).Value = Cells(i, 12).Value + Cells(i, 14).Value 'Addition de la valeur colonne L + colonne N
          Cells(i, 14).Value = 0 'Passe la colonne N à 0
        End If
      Next i
      'Somme des valeurs colonne L
      Cells(Dl + 1, 12).Value = Application.WorksheetFunction.Sum(Range(Cells(4, 12), Cells(Dl, 12)))
      Cells(Dl + 1, 14).Value = 0
      
'************************************************************
'*     TRAITEMENT ENTRE L'ONGLET SELECTIONNE ET "DF9"
'************************************************************
      
    For i = 4 To Dl 'Double boucle sur l'onglet sélectionné et l'onglet DF9
      For j = 10 To DernLig
        'Si la valeur de la colonne B de l'onglet sélectionné = la valeur de la colonne B de l'onglet DF9
        If Mid(Ws.Cells(i, 2).Value, 5, 8) = Mid(Wd.Cells(j, 2).Value, 5, 8) Then
          Wd.Cells(j, 12) = Wd.Cells(j, 12) + Ws.Cells(i, 12) 'Addition de la valeur colonne L de DF9 + colonne L de l'onglet en cours
          Exit For 'Si trouvé, sort de la boucle
        End If
      Next j
    Next i
    'Somme des valeurs colonne L de DF9
    Wd.Cells(DernLig + 1, 12).Value = Application.WorksheetFunction.Sum(Range(Wd.Cells(10, 12), Wd.Cells(DernLig, 12)))
    End If
  Next Ws
  Application.StatusBar = False
  Sheets("DF9").Activate
  Range("A7").Select
  Application.ScreenUpdating = True
  MsgBox " Transfert terminé !", vbInformation, "Traitement"
End Sub

Le classeur :

Facturation T4 2017CNAMTS V01.xlsm (602,0 Ko)

1 J'aime

Coucou . Je test dans la matinée. Merci je te fais un retour tout à l’heure.

Je refais un extract courant de semaine prochaine , je te dirai si ca marche au top :slight_smile: .
en tout cas merci :slight_smile:

Bonjour à tous et plus particulièrement @Mimimathy qui m’avait pas mal aide.
la formule a tourner dans la caisse et cette dernière marche au top.
Cependant pour les non initié on a du mal c’est pourquoi j’aimerai savoir si tu pouvais l’améliorer un petit peu ?
mes chefs qui sont très sympa te proposent un gâteau pour te remercier :croissant::croissant:

Bonjour,

Qu’entends tu par

Améliorer quoi, où, ?
Il y a juste à cliquer sur un bouton

Hello , je te confirme le bouton marche parfaitement bien :grin: .

En fait, ton script pourrait servir à l’intégralité du service car nous faisons tous ici les mêmes requêtes.
mais comme le vba est sur 1 fichier et qu’aucune des personne ici n’a les compétences pour l’utiliser .
Voilà la requête par rapport à ça.

Idéalement, comme on fait un extract 1 à 2 fois par mois c’est pas évident de réutiliser le code donc
il serait top d’avoir un caneva vierge de l’onglet DF9 avec par exemple un onglet paramétrage dans lequel on indiquerait le chemin de l’extract du fichier source donc “Facturation T4 2017CNAMTS V01.xlsm” .
Ce caneva referait les mêmes calculs que tu as fait la 1ere fois et faudrait juste une fois que les calculs soient fait que tt les colonne « part OC non calculée » de l’onglet DF9 passe à zéro .

Qu’en penses tu ?

Re,

Il faut qu’au départ il y ai un classeur “Facturation T4 2017CNAMTS V01.xlsm” avec l’onglet “DF9” identique, mise à part la colonne “N” remis avec des 0 sur toutes les lignes
En ouvrant ce classeur, un petit bouton pour aller chercher le classeur contenant les diverses CPAM et remplir le classeur “Facturation T4 2017CNAMTS V01.xlsm” - onglet “DF9”, avec les données des CPAM

Hello, je n’ai pas trop compris ta réponse.
Souhaites tu une fichier tram juste pour la form?

Re,

Je recapepete depuis le bedut

-1) Un classeur “Facturation T4 2017CNAMTS V01.xlsm” avec l’onglet “DF9” identique, mise à part la colonne “N” remis avec des 0 sur toutes les lignes
Sur ce classeur, et sur appui du bouton pour la mise en route de la macro, on choisit le dossier et le classeur concerné pour rapatrier les données CPAM

    1. Enregistrement du classeur “Facturation T4 2017CNAMTS V01.xlsm” avec l’onglet “DF9” à jour sous un nom différent
      -3) Le classeur “Facturation T4 2017CNAMTS V01.xlsm” avec l’onglet “DF9” d’origine est toujours intact

Ou alors,
Il faudrait faire une copie du classeur “Facturation T4 2017CNAMTS V01.xlsm” avec l’onglet “DF9” d’origine sur le dossier à traiter

Mais comme je n’ai pas compris ta demande dés le départ,
développe ta façon de voir la modification, à savoir que le fichier récepteur qui contient l’onglet DF9, doit contenir la macro, sinon :face_with_raised_eyebrow:

tram.xls (49 Ko)
Hello, penses tu que cette tram est viable pour toi ? :slight_smile:

Re,

Quel colonne ou cellule pour
a chaque fois que l’on clique sur lancer les calculs l’onglet DF9 doit s’initialiser à 0

Est ce que la trame que tu as fourni doit être tel que transmis ?
Ou la colonne “N” doit être à zéro avant le calcul, et après calcul ?

Hello :slight_smile:
Alors non la tram en fait est changeante dans le sens ou le cadre change pas ,le contenu des lignes colonnes quant à lui peut changer c’est à dire que le contenu des colonnes A B C D peut changer d’ou le fait qu’il doit etre repris lors des imports.

Quant à la colonne N , c’est après calcul pour bien montrer que les valeurs ont été sommé en L.

Re,

Alors, je vais te dire , NON, c’est pas faisable,

  • non la tram en fait est changeante

Si elle est changeante, c’est plus une trame

Que tu me dises, garder le format (ou le cadre sur lequel je m’en fou comme l’an 40)
avec des valeurs qui ne sont plus les mêmes pour une recherche sur des dossiers

Dis moi plutôt de récupérer l’ensemble des données d’un classeur sur un choix, et de placer les résultats sans doublons et les ajouter.

Mais je pense qu’avec tes explications au compte goutte, je passe la main.
Pense simplement que ton JOB, je ne le connais pas, que je ne suis pas dans ton dos, et que pour monter un classeur qui tient la route, et bien il faut des explications CLAIRES - NETTES & PRECISES