Simplification macro Excel
Résolu
grhum7
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
grhum7 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
grhum7 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
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")
A voir également:
- Simplification macro Excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
6 réponses
Bonjour,
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
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
Et 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....
Michel
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
Bonjour,
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
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
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 code
Mille merci !
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 code
Derlig = .Columns("A").Find("*", , , , , xlPrevious).Row
Mille merci !