OVH Cloud OVH Cloud

formule excel

26 réponses
Avatar
francois
bonjours
j'ai fais un tableau ur 26 colonnes de A à Z et 62 lignes

les 3 premières colones sont des calcul de dates la 1er sevant de référence
pour le calcul de la 11ème (K)colonne qui calcule la somme de D;E;F;G;H;I;J
(se sont des donnés manuelles en heures de travail)
L correspond a une formule de calcul de décompte par rapport a une semaine
de travail soit 34,92h
M calcule le resultat de L + M-1 et fait le cumul des heures suplémentaires
jusque là pas de problème,

le reste des colonnes de N à Z représentent les abcences , les conges,
intempéries, J. fériés etc....

je pense que pour vous cela doit etre facille de faire une formule VBA pour
récupérer les données sur les colonnes deD a J pour ventiller les diférentes
abcences sur N à Z

mois ce que je cherche serais une formule excel qui puisse calculer
les sommes de D à J en faisant référence a la couleur de police dans ces
plages
exemple
=si(d:j=police rouge;somme police rouge;"")ou
j'ai éssayé cette formulee ainsi que somme si mais sa me donne une boite
de dialogue d'érreur ou sa me trasforme la commende rouge en élément texte

avez vous une solution ?

a savoir que la meme formule me servira pour les autres catégories
d'abcences il suffirra de chager la référence de couleur de police dans la
formule etd'utiliser ces couleur sur la feuille de pointage exemple fleu
pour les jours fériés rouge pour les congé payes, vert pour les congé
evénements familiaux etc........

merci d'avence

10 réponses

1 2 3
Avatar
francois
"isabelle" a écrit dans le message de news:

bonjour François,

il ne faut pas mettre la fonction à l'intérieur d'une macro Sub
sommecouleurtext()

mais seulement

Function SommeCouleurText(plage As Range, couleur As Integer)
For i = 1 To plage.Count
If plage(i).Font.ColorIndex = couleur Then
SommeCouleurText = SommeCouleurText + plage(i)
End If
Next
End Function

isabelle
merci de votre patience avec le débutant que je suis


j'ai donc modifié le module comme cité si dessus,
j'ai ouvert la boite de dialogue de la macro,
et, en description j'ai mis
couleur
3 rouge
4 bleu
5 marron
6 vert
7 jaune

en application de la macro lla celulle selectionné pour le calcul me met 0
j'ai essayé plusieurs modif comme
' couleur
3 rouge etc......
ou
' couleur
' 3 rouge et idem pour les autres couleurs
le resultat est le meme

vraiment je ne comprend pas que la macro ne foctionne pas puisqu'elle renvoi
a la référence des couleurs

Avatar
Denis Michon
Bonjour François,


Dans un MODULE STANDARD : tu copie ceci ;

'-----------------------------
Function SommeCouleurText(plage As Range, couleur As Integer)
For i = 1 To plage.Count
With plage(i)
If IsNumeric(.Item(i)) = True And _
.Item(i).Font.ColorIndex = couleur Then
SommeCouleurText = SommeCouleurText + .item(i)
End If
End With
Next
End Function
'-----------------------------

Et dans la cellule de ton choix :

=SommeCouleurText(E1:E13;3)

E1:E13 = La Plage à additonner si la propriété de la couleur du texte est 3 (rouge si ta palette de couleurs est
standard)

3 = Propriété couleur : comme dans ceci :

si Range("A1").Font.ColorIndex = 3



Salutations!





"francois" a écrit dans le message de news:bp62id$2df$

"isabelle" a écrit dans le message de news:

bonjour François,

il ne faut pas mettre la fonction à l'intérieur d'une macro Sub
sommecouleurtext()

mais seulement

Function SommeCouleurText(plage As Range, couleur As Integer)
For i = 1 To plage.Count
If plage(i).Font.ColorIndex = couleur Then
SommeCouleurText = SommeCouleurText + plage(i)
End If
Next
End Function

isabelle
merci de votre patience avec le débutant que je suis


j'ai donc modifié le module comme cité si dessus,
j'ai ouvert la boite de dialogue de la macro,
et, en description j'ai mis
couleur
3 rouge
4 bleu
5 marron
6 vert
7 jaune

en application de la macro lla celulle selectionné pour le calcul me met 0
j'ai essayé plusieurs modif comme
' couleur
3 rouge etc......
ou
' couleur
' 3 rouge et idem pour les autres couleurs
le resultat est le meme

vraiment je ne comprend pas que la macro ne foctionne pas puisqu'elle renvoi
a la référence des couleurs

Avatar
francois
merci je n'avais pas remarqué que c'étais un i entre les guillemé
j'ai donc corrigé ses érreurs et malgré cela je suis toujours dans la meme
situation
a la diférence pré que la celulle de calcul ma reconnu une célule dont le
texte étais rouge (sur 2) et que pour éssai j'ai changé la couleur du texte
et sa n'a pas changé le resultat ( erreur celulles adjacentes) en fait les
plages celectionnés pour calcul de cette macro sont
D E F G H I J soit du lundi au dimanche
K L M sont des celulles de calcul conditionnel pour déterminer les heures de
travail et heures suppl. tenant compte de la modulation du temps de travail
de N à X doivent ventiler les données qui seront écrites dans les plages de
D à J celon des couleurs de textes
d'ou l'érreur de celulles adjacentes mais je ne pense pas que se soit sa qui
empéche la macro de fonctionner

je tien a vous remercier isabelle et vous pour votre promptitude a me
répondre et de votre patence

Donc deux erreurs:
plage(i) au lieu de
plage(1)
sommecolortext = sommecolortext au lieu de
sommecolortext = sommecouleurtex

--
@+
Thierry


Avatar
Papyty
Salut @ Tous,
francois a écrit:
et que pour éssai j'ai changé la couleur du texte
et sa n'a pas changé le resultat ( erreur celulles adjacentes) en fait


Denis michon t'as donné la mise en oeuvre mais je peux ajouter que le fait
que tu changes la couleur de police aprés que tu ais fait le total
n'entraine pas le recalcul de la fonction. c'est d'ailleur le gros probleme
de faire des calculs sur des couleurs.
Donc une solution ajouter Application.Volatile au début du code et ensuite
demander un recalcul si tu modifies des couleurs (F9) je crois.
--
@+
Thierry

Avatar
francois
ouffff
sa fonctionne

mais j'ai un autre soucis ,

sa ne fonctionne que si dans les plages le texte est déja écrit dans la
couleur demandé si la formule est déja appliqué avant que les plages ne
soient remplies sa ne marche plus au meme titre que si je change la couleur
du texte après avoir utilisé la macro

mais je vous remerci tous pour ce début déja prometteur
il faut dire que s'est ma 1ere macros
Avatar
francois
"Papyty" a écrit dans le message de news:
fwqzrr66icic.195uw20bscr73$
.
Donc une solution ajouter Application.Volatile au début du code et ensuite
demander un recalcul si tu modifies des couleurs (F9) je crois
d'après vous, que me conseillez vous pour automatiser le tableur pour que sa

me donne l'équivalent de ce que je recherchai en utilisant les couleur de
police pour ventiler
les données des plages de D à J sur le reste de la ligne

j'avais fait se choix parcequ'il m'est plus facile de de repérer par des
couleur les diférentes formes d'absences
puisque ces absences font varier le resultat final pour les majorations
heures suppl et majorations de plus pour compliquer le tout il y a la
modulation du temps de travail et ses absences sont comptabilisé en temps de
travail ce qui implique une autre forme d'absence fesant égalemnt incidence
au resultat
j'avais pensé au début de rentrer les données sous forme de texte exemple
CP TT AB mais trop compliqué pour mois surtout que le texte doit faire
référence a un cota horaire variable au jour a jour vriant de 0 a 12 heures
pour le calcul des celulles K L M

Avatar
Papyty
Salut @ Tous,
francois a écrit:

d'après vous, que me conseillez vous pour automatiser le tableur pour que
sa

me donne l'équivalent de ce que je recherchai en utilisant les couleur de
police pour ventiler
les données des plages de D à J sur le reste de la ligne


Le plus simple serait de m'envoyer un fichier avec quelques exemples et se
qu'il faut j'ai du mal à reproduire tout ça en suivant juste les posts.
L'adresse est valide

--
@+
Thierry

Avatar
AV
Comme dit au début du fil, une fonction se basant sur un format de cellule pour
calculer, n'est pas volatile même en mettant comme instruction
"Application.Volatile" pour la bonne raison que le changement de format
n'entraine pas de recalcul
M'est avis que la seule façon de rendre ce type de calcul volatile est de passer
par une proc évènementielle....

AV
Avatar
francois
"AV" a écrit dans le message de news:
OQ58#
Comme dit au début du fil, une fonction se basant sur un format de cellule
pour

calculer, n'est pas volatile même en mettant comme instruction
"Application.Volatile" pour la bonne raison que le changement de format
n'entraine pas de recalcul
M'est avis que la seule façon de rendre ce type de calcul volatile est de
passer

par une proc évènementielle....>
pourtant j'ai appliqué la macro présenté dans ce fil

et sa marche
mon erreur etais de vouloir faire le calcul par rapport aux couleur de
police alors que la solution étais de prendre la couleur de la célulle
appliqué ainsi le calcul se fait meme si l'on change les données maintenant
que se soit fiable a 1OO% je n'en sais rien
mais je vais refaire la mise en forme de la feuille une foix fini je
l'enverais a papyty comme il me la demandé
il pourra ainsi me dire si ma solution et crédible

merci encore de vos interventions si constructives
pour l'instant j'ai du mal a mi retrouver avec les codes VBA mais en je ne
desespère pas avec un peut de volonté j'y arriverais

Avatar
AV
....j'ai appliqué la macro présenté dans ce fil et sa marche..


Je pense qu'il y a confusion entre une macro (qui calcule en fonction déjà
formats appliqués) et la fonction perso qui ne se mettra pas à jour au
changement de format....

AV

1 2 3