[VBA] Tableau des impôts - Calcul des frais réels en comptant les cellules

JeRoMe31320

XLDnaute Nouveau
Bonjour à toutes et à tous,

J'ai commencé à me lancer dans la création d'un tableau pour calculer les frais réels tous les ans :) Sacrés impôts ... :p

Ce n'est qu'un début en fait, pour le moment je veux juste automatiser le calcul des cellules de couleurs différentes pour calculer les choses suivantes :

- Jours travaillés dans l'année
- Jours congés dans l'année
- Jours Fériés dans l'année
- Jours Absence / Maladie dans l'année

Mes fonctions fonctionnent très bien, mais j'aimerai automatiser ces fonctions.
Je suis un vrai débutant en VBA, je n'y ai jamais touché de ma vie. Je me suis servi d'exemples trouvés sur le net pour calculer le nombre de cellule avec un background RGB.

Je me demande en fait premièrement, si on peut faire un bouton, qui va actualiser tous les formules pour recalculer les jours, sans avoir à me positionner sur la cellule et revalider la formule.

Sinon, si c'est possible bien évidemment, existe il un moyen, une formule qui permette de calculer automatiquement les cellules qui ont un fond de telle ou telle couleur, automatiquement, c'est à dire, dès que je change une cellule de couleur, ma fonction le calcule automatiquement.

Je vous joins le petit tableau.

Les calendriers sont pour le moment manuels, mais ils seront automatiques en perpétuel un peu plus tard.

Merci par avance, si vous avez des réponses ou des tuyaux, je suis également preneur de retours sur le tableau.

J'utilise Excel 2010 sur mon PC et Excel 2011 sur Mac :D

Bonne journée :)

Jérôme.
 

Pièces jointes

  • Calendriers_2010.xlsm
    77.1 KB · Affichages: 1 975

eretyk_1er

XLDnaute Nouveau
Re : [VBA] Tableau des impôts - Calcul des frais réels en comptant les cellules

Bonjour,

A priori ca marche automatiquement dès que l'option 'calcul automatique' est cochée (outils->options->calcul)
Sinon tu peux déclencher le recalcul en VBA ( worsheets("nomdelafeuille").calculate )
 

JeRoMe31320

XLDnaute Nouveau
Re : [VBA] Tableau des impôts - Calcul des frais réels en comptant les cellules

Merci pour ta réponse :)

Cette option est déjà cochée dans mon Excel, mais rien d'automatisé.

Pour déclencher le recalcul en VBA, je vais dans VBA, sur ma feuille ou dans Modules ?

Et je tape tout simplement ( worsheets("2010").calculate )

C'est bien ça ?
 

eretyk_1er

XLDnaute Nouveau
Re : [VBA] Tableau des impôts - Calcul des frais réels en comptant les cellules

J'ai répondu à côté...

Il faut rajouter "Application.Volatile" dans les codes de tes fonctions, pour qu'elles soient recalculées quand la feuille change.
(par exemple :

Function JoursMaladie(Plage As Range) As Long
Dim Cel As Range
Application.Volatile
For Each Cel In Plage.Cells
If Cel.Interior.Color = RGB(177, 160, 199) Then JoursMaladie = JoursMaladie + 1
Next Cel
End Function

)

Le hic, c'est que je ne crois pas qu'il soit possible de détecter un changement de couleur.
Tu peux déclancher le recalcul en changeant de case sélectionnée, en activant la feuille, en double-cliquant ou droite-cliquant, et en désactivant la feuille. (regarde dans vba, va sur feuil1 au lieu d'aller dans module1, joue avec les deux listes déroulantes en haut de la feuille de code)
Astuce : le raccourci F9 force le recalcul.

Ou alors, tu créé un bouton, lié au code Me.calculate (code à placer dans feuil1).
 

Pièces jointes

  • Impots.jpg
    Impots.jpg
    44.5 KB · Affichages: 1 134
Dernière édition:

JeRoMe31320

XLDnaute Nouveau
Re : [VBA] Tableau des impôts - Calcul des frais réels en comptant les cellules

Merci pour toutes ces infos :)

Je peux donc créer un bouton qui va gérer toutes les fonctions suivantes :

JoursTravaillés
JoursMaladie
Fériés
Vacances

En un clic, toutes les formules sont actualisées ?
 

CelluleVide

XLDnaute Occasionnel
Re : [VBA] Tableau des impôts - Calcul des frais réels en comptant les cellules

Bonjour JeRoMe31320,eretyk_1er,

J'ai essayer ton fichier sous XL 2003 et je pense que les formules ne s'actualisent pas car color.RGB ne marche pas sous 2003.
Si je remplace par colorindex = "la valeur de la couleur" là ça marche.
Les spécialistes pourront peut etre nous expliquer...

Ton code corrigé:
Function Vacances(Plage As Range) As Long
Dim Cel As Range
For Each Cel In Plage.Cells
If Cel.Interior.ColorIndex = 42 Then Vacances = Vacances + 1
Next Cel
End Function
Function Fériés(Plage As Range) As Long
Dim Cel As Range
For Each Cel In Plage.Cells
If Cel.Interior.ColorIndex = 22 Then Fériés = Fériés + 1
Next Cel
End Function
Function JoursTravaillés(Plage As Range) As Long
Dim Cel As Range
For Each Cel In Plage.Cells
If Cel.Interior.ColorIndex = 36 Then JoursTravaillés = JoursTravaillés + 1
Next Cel
End Function
Function JoursMaladie(Plage As Range) As Long
Dim Cel As Range
For Each Cel In Plage.Cells
If Cel.Interior.ColorIndex = 15 Then JoursMaladie = JoursMaladie + 1
Next Cel
End Function
 

eretyk_1er

XLDnaute Nouveau
Re : [VBA] Tableau des impôts - Calcul des frais réels en comptant les cellules

En effet sur 2003 ça bloque...

J'ai fait les modifications auxquelles je pensais, avec les deux exemples:
-> boutons "recalcul" pour la première feuille,
-> recalcul à l'évènement 'selection_change' pour la seconde.

J'ai modifié un peu le code comme CelluleVide pour qu'il marche sur 2003 (colorindex au lieu de color, regarde dans le code pour voir à quoi ça correspond).
Je n'ai pas touché au code de la fonction Fériés(), car je n'ai pas trouvé de couleur indéxée équivalente. Je te laisse le soin de le modifier selon tes préférences.

astuce : la commande pour récupérer l'index de couleur de la cellule sélectionnée est
msgbox selection.interior.colorindex
 

Pièces jointes

  • JeRoMe31320.xls
    205.5 KB · Affichages: 890
Dernière édition:

JeRoMe31320

XLDnaute Nouveau
Re : [VBA] Tableau des impôts - Calcul des frais réels en comptant les cellules

En effet sur 2003 ça bloque...

J'ai fait les modifications auxquelles je pensais, avec les deux exemples:
-> boutons "recalcul" pour la première feuille,
-> recalcul à l'évènement 'selection_change' pour la seconde.

J'ai modifié un peu le code comme CelluleVide pour qu'il marche sur 2003 (colorindex au lieu de color, regarde dans le code pour voir à quoi ça correspond).
Je n'ai pas touché au code de la fonction Fériés(), car je n'ai pas trouvé de couleur indéxée équivalente. Je te laisse le soin de le modifier selon tes préférences.

astuce : la commande pour récupérer l'index de couleur de la cellule sélectionnée est
msgbox selection.interior.colorindex

Bonjour eretyk_1er,

Merci pour cet modification de code :)

J'ai tout regardé, ca fonctionne bien :) J'ai vu les différences au niveau du RGB, je modifierai la couleur pour les jours manquants.

Juste une mauvaise manip aussi au niveau des jours Absence, je vais régler ça :) Parce que sinon j'ai plus de 100 jours de maladie ... :p ^^

Y'a pas de palette index Color pour 2010 ?
 

eretyk_1er

XLDnaute Nouveau
Re : [VBA] Tableau des impôts - Calcul des frais réels en comptant les cellules

:) nickel!

Je pense qu'il y a une palette sur 2010, mais les indexes des couleurs ne correspondent peut-être pas avec les celles de 2003. A google-iser...
Tu peux utiliser l'astuce du message précédent pour retrouver l'index de ta couleur. (le code se place dans une nouvelle macro, ou dans la fenêtre 'debug')

Bon courage pour la suite!
++
 

Discussions similaires

Statistiques des forums

Discussions
311 719
Messages
2 081 874
Membres
101 829
dernier inscrit
listener75