Simplification macro Excel
Résolu
Bonjour,
Je suis en train de réaliser un tableau excel pour gérer un budget. J'ai dans une feuille ("data") un tableau résumant les dépenses/recettes par poste et par mois. L'utilisation de formule directement dans les cellules ralentissait considérablement l'exécution des tâches, d'où l'idée de passer en macro.
Le problème, c'est que j'ai des lignes et des lignes de code relativement répétitives, et bien sûr j'ai le message "Procédure trop longue". N'étant qu'un débutant du VBA, pourriez vous m'aider pour simplifier ces lignes de codes afin que la macro puisse être exécutée. Elle s'étend jusqu'à la ligne 54 !
Merci beaucoup pour votre aide !
grhum7
Je suis en train de réaliser un tableau excel pour gérer un budget. J'ai dans une feuille ("data") un tableau résumant les dépenses/recettes par poste et par mois. L'utilisation de formule directement dans les cellules ralentissait considérablement l'exécution des tâches, d'où l'idée de passer en macro.
Le problème, c'est que j'ai des lignes et des lignes de code relativement répétitives, et bien sûr j'ai le message "Procédure trop longue". N'étant qu'un débutant du VBA, pourriez vous m'aider pour simplifier ces lignes de codes afin que la macro puisse être exécutée. Elle s'étend jusqu'à la ligne 54 !
Merci beaucoup pour votre aide !
grhum7
'POSTES de dépenses
'Assurance
Sheets("Data").Range("b27").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 1, Sheets("CCourant").Range("c5:c65536"), "Assurance")
Sheets("Data").Range("c27").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 2, Sheets("CCourant").Range("c5:c65536"), "Assurance")
Sheets("Data").Range("d27").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 3, Sheets("CCourant").Range("c5:c65536"), "Assurance")
Sheets("Data").Range("e27").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 4, Sheets("CCourant").Range("c5:c65536"), "Assurance")
Sheets("Data").Range("f27").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 5, Sheets("CCourant").Range("c5:c65536"), "Assurance")
Sheets("Data").Range("g27").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 6, Sheets("CCourant").Range("c5:c65536"), "Assurance")
Sheets("Data").Range("h27").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 7, Sheets("CCourant").Range("c5:c65536"), "Assurance")
Sheets("Data").Range("i27").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 8, Sheets("CCourant").Range("c5:c65536"), "Assurance")
Sheets("Data").Range("j27").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 9, Sheets("CCourant").Range("c5:c65536"), "Assurance")
Sheets("Data").Range("k27").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 10, Sheets("CCourant").Range("c5:c65536"), "Assurance")
Sheets("Data").Range("l27").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 11, Sheets("CCourant").Range("c5:c65536"), "Assurance")
Sheets("Data").Range("m27").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 12, Sheets("CCourant").Range("c5:c65536"), "Assurance")
'Audiovisuel
Sheets("Data").Range("b28").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 1, Sheets("CCourant").Range("c5:c65536"), "Audiovisuel")
Sheets("Data").Range("c28").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 2, Sheets("CCourant").Range("c5:c65536"), "Audiovisuel")
Sheets("Data").Range("d28").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 3, Sheets("CCourant").Range("c5:c65536"), "Audiovisuel")
Sheets("Data").Range("e28").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 4, Sheets("CCourant").Range("c5:c65536"), "Audiovisuel")
Sheets("Data").Range("f28").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 5, Sheets("CCourant").Range("c5:c65536"), "Audiovisuel")
Sheets("Data").Range("g28").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 6, Sheets("CCourant").Range("c5:c65536"), "Audiovisuel")
Sheets("Data").Range("h28").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 7, Sheets("CCourant").Range("c5:c65536"), "Audiovisuel")
Sheets("Data").Range("i28").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 8, Sheets("CCourant").Range("c5:c65536"), "Audiovisuel")
Sheets("Data").Range("j28").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 9, Sheets("CCourant").Range("c5:c65536"), "Audiovisuel")
Sheets("Data").Range("k28").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 10, Sheets("CCourant").Range("c5:c65536"), "Audiovisuel")
Sheets("Data").Range("l28").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 11, Sheets("CCourant").Range("c5:c65536"), "Audiovisuel")
Sheets("Data").Range("m28").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 12, Sheets("CCourant").Range("c5:c65536"), "Audiovisuel")
'Autre
Sheets("Data").Range("b29").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 1, Sheets("CCourant").Range("c5:c65536"), "Autre")
Sheets("Data").Range("c29").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 2, Sheets("CCourant").Range("c5:c65536"), "Autre")
Sheets("Data").Range("d29").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 3, Sheets("CCourant").Range("c5:c65536"), "Autre")
Sheets("Data").Range("e29").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 4, Sheets("CCourant").Range("c5:c65536"), "Autre")
Sheets("Data").Range("f29").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 5, Sheets("CCourant").Range("c5:c65536"), "Autre")
Sheets("Data").Range("g29").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 6, Sheets("CCourant").Range("c5:c65536"), "Autre")
Sheets("Data").Range("h29").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 7, Sheets("CCourant").Range("c5:c65536"), "Autre")
Sheets("Data").Range("i29").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 8, Sheets("CCourant").Range("c5:c65536"), "Autre")
Sheets("Data").Range("j29").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 9, Sheets("CCourant").Range("c5:c65536"), "Autre")
Sheets("Data").Range("k29").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 10, Sheets("CCourant").Range("c5:c65536"), "Autre")
Sheets("Data").Range("l29").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 11, Sheets("CCourant").Range("c5:c65536"), "Autre")
Sheets("Data").Range("m29").Value = Application.WorksheetFunction.SumIfs(Sheets("CCourant").Range("D5:D65536"), Sheets("CCourant").Range("R5:R65536"), 12, Sheets("CCourant").Range("c5:c65536"), "Autre")
6 réponses
-
Ok c'est bon ! Merci, c'est moi qui avait supprimer une ligne sans m'en rendre compte ! Désolé.
Du coup ça fonctionne Nickel !! Un très grand merci, car je ne connaissais pas cette fonction, que je vais essayer d'étudier de plus près.
Peux tu m'expliquer le codeDerlig = .Columns("A").Find("*", , , , , xlPrevious).Row
Mille merci ! -
Bonjour,
Merci Michel_m , je comprends à peu près ton code, mais malheureusement il ne fonctionne pas. Lorsque je l'exécute rien ne se passe, mais je n'ai pas de message d'erreur. Est ce qu'il y a quelque chose que je dois modifier pour l'adapter à ma feuille ? J'utilise excel 2007, est ce que ça viendrait de là ?
grhum7-
ContributeurBonjour,
Ci joint la maquette de travail qui, elle, fonctionne
Peut-^tre n'as tu pas mis à jour l'affectation à la macro de ton bouton...
https://www.cjoint.com/?3EklksgEthE
-
-
ContributeurEt voilà pour les dépenses à toi de jouer pour les recettes sur le m^me principe et la présentation de la feuille "data" : zéro non apparent, décimales, euro....
Option Explicit
'-----------------------------
Sub consolider()
Dim Derlig As Integer, T_data
Dim Idx As Byte, Col As Byte
'------
Application.ScreenUpdating = False
'---------
'Dépenses:
T_data = Sheets("data").Range("A27:M47")
With Sheets("Ccourant")
For Idx = 1 To UBound(T_data)
Derlig = .Columns("A").Find("*", , , , , xlPrevious).Row
For Col = 2 To 13
T_data(Idx, Col) = Application.SumIfs(.Range("D5:D" & Derlig), _
.Range("R5:R" & Derlig), Col - 1, _
.Range("c5:c" & Derlig), T_data(Idx, 1))
Next
Next
End With
'--------
'consolidation dépenses
Sheets("data").Range("A27:M47") = T_data
' recettes
'A TOI DE JOUER
End Sub
Michel -
ContributeurOk, je dois m'absenter; retour en fin d'apr-midi (j'espère)
Merci d'^tre un peu patient :o)
-
-
ContributeurBonjour,
Envoie plutôt ton classeur, ou un extrait, en pièce jointe car sinon, il est difficile de tester une proposition
pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse