OVH Cloud OVH Cloud

formule "tant que..."

8 réponses
Avatar
C15
Bonjour à tous et toutes,

Dans un tableau je saisis des heures de travail. (c15à n15)
j'ai par ailleurs des heures "affectables" (c13 à n13).
j'ai enfin des heures complémentaires (c18 à n18).

tant que le total des heures affectables (o13) est <324, les heures
complémentaires doivent être =0, sinon elles doivent correspondre aux heures
saisies

Comment essayer d'automatiser le calcul des heures complémentaires ?

Merci de votre aide

A+

C15

8 réponses

Avatar
Daniel
Bonsoir.
Ma dernière contribution de la nuit :
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C18:N18")) Is Nothing Then Exit Sub
If Range("O13") > 323 Then Exit Sub
Application.EnableEvents = False
Target.Value = 0
Application.EnableEvents = True
End Sub
Cordialement.
Daniel
"C15" <Mé a écrit dans le message de news:
42112142$0$5220$
Bonjour à tous et toutes,

Dans un tableau je saisis des heures de travail. (c15à n15)
j'ai par ailleurs des heures "affectables" (c13 à n13).
j'ai enfin des heures complémentaires (c18 à n18).

tant que le total des heures affectables (o13) est <324, les heures
complémentaires doivent être =0, sinon elles doivent correspondre aux
heures saisies

Comment essayer d'automatiser le calcul des heures complémentaires ?

Merci de votre aide

A+

C15



Avatar
JCR
Bonjour,
adapte avec la formule Max

pour les heures normales Max(c15;324)
pour les heures complémentaires = Max( heure saisie-heures normales;0)

J

"C15" <Mé a écrit dans le message de
news:42112142$0$5220$
Bonjour à tous et toutes,

Dans un tableau je saisis des heures de travail. (c15à n15)
j'ai par ailleurs des heures "affectables" (c13 à n13).
j'ai enfin des heures complémentaires (c18 à n18).

tant que le total des heures affectables (o13) est <324, les heures
complémentaires doivent être =0, sinon elles doivent correspondre aux
heures

saisies

Comment essayer d'automatiser le calcul des heures complémentaires ?

Merci de votre aide

A+

C15




Avatar
C15
Bonsoir Daniel,

Merci de cette réponse, j'ai mis ce code dans un module, mais j'ai toujours
un pb pour le déclenchement d'une telle procédure.
Peux-tu en quelquesmots me dire comment faire.

Merci de ton aide

A+
C15
"Daniel" a écrit dans le message de news:

Bonsoir.
Ma dernière contribution de la nuit :
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C18:N18")) Is Nothing Then Exit Sub
If Range("O13") > 323 Then Exit Sub
Application.EnableEvents = False
Target.Value = 0
Application.EnableEvents = True
End Sub
Cordialement.
Daniel
"C15" <Mé a écrit dans le message de
news: 42112142$0$5220$
Bonjour à tous et toutes,

Dans un tableau je saisis des heures de travail. (c15à n15)
j'ai par ailleurs des heures "affectables" (c13 à n13).
j'ai enfin des heures complémentaires (c18 à n18).

tant que le total des heures affectables (o13) est <324, les heures
complémentaires doivent être =0, sinon elles doivent correspondre aux
heures saisies

Comment essayer d'automatiser le calcul des heures complémentaires ?

Merci de votre aide

A+

C15







Avatar
C15
Bonsoir,

Merci de cette piste.

A+

C15
"JCR" a écrit dans le message de news:

Bonjour,
adapte avec la formule Max

pour les heures normales Max(c15;324)
pour les heures complémentaires = Max( heure saisie-heures normales;0)

J

"C15" <Mé a écrit dans le message de
news:42112142$0$5220$
Bonjour à tous et toutes,

Dans un tableau je saisis des heures de travail. (c15à n15)
j'ai par ailleurs des heures "affectables" (c13 à n13).
j'ai enfin des heures complémentaires (c18 à n18).

tant que le total des heures affectables (o13) est <324, les heures
complémentaires doivent être =0, sinon elles doivent correspondre aux
heures

saisies

Comment essayer d'automatiser le calcul des heures complémentaires ?

Merci de votre aide

A+

C15








Avatar
Daniel
Bonsoir.
Il faut mettre le code au niveau de l'éditeur VBA, dans la feuille
concernée.
Pour une valeur de O13 < 324, la valeur entrée dans l'une des cellules de la
plage C18:N18 est ramenée à 0. Mais peut-être ai-je mal interprété ta
question ?
Cordialement.
Daniel
"C15" <Mé a écrit dans le message de news:
4213b62f$0$5212$
Bonsoir Daniel,

Merci de cette réponse, j'ai mis ce code dans un module, mais j'ai
toujours un pb pour le déclenchement d'une telle procédure.
Peux-tu en quelquesmots me dire comment faire.

Merci de ton aide

A+
C15
"Daniel" a écrit dans le message de news:

Bonsoir.
Ma dernière contribution de la nuit :
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C18:N18")) Is Nothing Then Exit Sub
If Range("O13") > 323 Then Exit Sub
Application.EnableEvents = False
Target.Value = 0
Application.EnableEvents = True
End Sub
Cordialement.
Daniel
"C15" <Mé a écrit dans le message de
news: 42112142$0$5220$
Bonjour à tous et toutes,

Dans un tableau je saisis des heures de travail. (c15à n15)
j'ai par ailleurs des heures "affectables" (c13 à n13).
j'ai enfin des heures complémentaires (c18 à n18).

tant que le total des heures affectables (o13) est <324, les heures
complémentaires doivent être =0, sinon elles doivent correspondre aux
heures saisies

Comment essayer d'automatiser le calcul des heures complémentaires ?

Merci de votre aide

A+

C15











Avatar
C15
Rebonsoir à tous deux,

Manifesteement je n'ai pas été assez clair car je n'arrive pas à mettre en
place vos procédures respectives.

en C10 j'ai 78 ==> Service mensuel minimum
en C11 j'ai =si(C12=0;0;C12-C10) cellule qui se remplit dons automatiquement
==>Heures affectables
en C12 je saisis un certain nombre d'heures effectuées (par exemple 110)
==>Total volume d'heures mensuel
en C11, j'obtiens donc 32

Ceci pour chacun des mois de l'année (colonnes C à N)

Dès que le total des heures de la ligne 11 (Heures affectables) atteint 324,
l'on "bascule" en heures complémentaires, je dois donc avoir (si j'ai fais
120 heures) 112 en total volume heures et 8 en complémentaires.
Toutes les autres heures à venir seront donc en complémentaires

Le problème est d'essayer d'automatiser cette bascule.

Peut-être le tableau ci dessous peut vous aider



J
F
M
A
M
J
J
A
S
O
N
D
total

Service mensuel minimum
78
78
78
78
78
78
78
78
78
78
78
78
936

Heures affectables
32
42
72
72
72
34
0
0
0
0
0
0
324

Total volume d'heures mensuel
110
120
150
150
150
112
0





468

heures complémentaires
0
0
0
0
0
8
110
0
0
0
0
0
118



Merci encore de votre aide

A+

C15



"C15" <Mé a écrit dans le message de news:
4213b65b$0$5217$
Bonsoir,

Merci de cette piste.

A+

C15
"JCR" a écrit dans le message de news:

Bonjour,
adapte avec la formule Max

pour les heures normales Max(c15;324)
pour les heures complémentaires = Max( heure saisie-heures normales;0)

J

"C15" <Mé a écrit dans le message de
news:42112142$0$5220$
Bonjour à tous et toutes,

Dans un tableau je saisis des heures de travail. (c15à n15)
j'ai par ailleurs des heures "affectables" (c13 à n13).
j'ai enfin des heures complémentaires (c18 à n18).

tant que le total des heures affectables (o13) est <324, les heures
complémentaires doivent être =0, sinon elles doivent correspondre aux
heures

saisies

Comment essayer d'automatiser le calcul des heures complémentaires ?

Merci de votre aide

A+

C15












Avatar
Daniel
Vite fait, mal fait.
Ca fonctionne en boîtant tant que l'on ne ferme pas le classeur.
A Refaire !
"Daniel" a écrit dans le message de news:
%
Bonsoir.
Essaie le code suivant :
Mets les variables suivantes dans un module :

Public Res(12) As Integer
Public Complement(12) As Integer

Dans ta feuille, mets :

Private Sub Worksheet_Activate()
For i = 0 To 11
Res(i) = Range("C12").Offset(0, i)
Complement(i) = Range("C13").Offset(0, i)
Next
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C12:N12")) Is Nothing Then Exit Sub
If Range("O11") < 324 Then Exit Sub
Application.EnableEvents = False
Ctr = Target.Value
Target.Offset(1, 0) = Target.Offset(1, 0).Value + Target.Value -
Res(Target.Column - 3)
Target.Value = Res(Target.Column - 3)
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 0 To 11
Res(i) = Range("C12").Offset(0, i)
Complement(i) = Range("C13").Offset(0, i)
Next
End Sub

Ça le fait....presque.
Il reste à gérer les cas suivants :
- quand tu entres 2 fois la même valeur en ligne 12, la ligne 13
s'incrémente 2 fois.
- quand tu entres en ligne 12 une valeur inférieure à la précédente.
J'aurai bien cherché davantage, mais le fiston piaffe pour prendre le
contrôle de l'ordinateur depuis un bon moment déjà.
Si personne n'a rectifié le code, je m'y remettrai quand il sera couché.
Cordialement.
Daniel
"C15" <Mé a écrit dans le message de news:
42143201$0$5222$
Rebonjour à tous deux,

Je réexpédie mon dernier message en HTML en espérant que mon tableau passera
bien

Manifestement je n'ai pas été assez clair car je n'arrive pas à mettre en
place vos procédures respectives.

en C10 j'ai 78 ==> Service mensuel minimum
en C11 j'ai =si(C12=0;0;C12-C10) cellule qui se remplit dons automatiquement
==>Heures affectables
en C12 je saisis un certain nombre d'heures effectuées (par exemple 110)
==>Total volume d'heures mensuel
en C11, j'obtiens donc 32


Ceci pour chacun des mois de l'année (colonnes C à N)

Dès que le total des heures de la ligne 11 (Heures affectables) atteint 324,
l'on "bascule" en heures complémentaires, je dois donc avoir (si j'ai fait
120 heures) 112 en total volume heures et 8 en complémentaires.
Toutes les autres heures à venir seront donc en complémentaires

Le problème est d'essayer d'automatiser cette bascule.

Peut-être le tableau ci dessous peut vous aider

Service mensuel minimum787878787878787878787878936
Heures affectables324272727234000000324
Total volume d'heures mensuel 1101201501501501120468
heures complémentaires00000811000000118


Merci de votre aide

A+

C15

PS les lignes ci-dessus sont bien 10 11 12 et 13


"Daniel" a écrit dans le message de news:
eRaMp$
Bonsoir.
Il faut mettre le code au niveau de l'éditeur VBA, dans la feuille
concernée.
Pour une valeur de O13 < 324, la valeur entrée dans l'une des cellules de
la
plage C18:N18 est ramenée à 0. Mais peut-être ai-je mal interprété ta
question ?
Cordialement.
Daniel
"C15" <Mé a écrit dans le message de
news:
4213b62f$0$5212$
Bonsoir Daniel,

Merci de cette réponse, j'ai mis ce code dans un module, mais j'ai
toujours un pb pour le déclenchement d'une telle procédure.
Peux-tu en quelquesmots me dire comment faire.

Merci de ton aide

A+
C15
"Daniel" a écrit dans le message de news:

Bonsoir.
Ma dernière contribution de la nuit :
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C18:N18")) Is Nothing Then Exit Sub
If Range("O13") > 323 Then Exit Sub
Application.EnableEvents = False
Target.Value = 0
Application.EnableEvents = True
End Sub
Cordialement.
Daniel
"C15" <Mé a écrit dans le message de
news: 42112142$0$5220$
Bonjour à tous et toutes,

Dans un tableau je saisis des heures de travail. (c15à n15)
j'ai par ailleurs des heures "affectables" (c13 à n13).
j'ai enfin des heures complémentaires (c18 à n18).

tant que le total des heures affectables (o13) est <324, les heures
complémentaires doivent être =0, sinon elles doivent correspondre aux
heures saisies

Comment essayer d'automatiser le calcul des heures complémentaires ?

Merci de votre aide

A+

C15















Avatar
Daniel
Le code suivant utilise une ligne supplémentaire, éventuellement cachée
(ligne 14 dans mon exemple). On peut procéder sans ajout de ligne avec une
InputBox en demandant quel mois il faut saisir.
Un point reste également en suspens : que faire quand O11 passe la limite
sur une saisie.
Cordialement.
Daniel
"Daniel" a écrit dans le message de news:
OyzY$
Vite fait, mal fait.
Ca fonctionne en boîtant tant que l'on ne ferme pas le classeur.
A Refaire !
"Daniel" a écrit dans le message de news:
%
Bonsoir.
Essaie le code suivant :
Mets les variables suivantes dans un module :

Public Res(12) As Integer
Public Complement(12) As Integer

Dans ta feuille, mets :

Private Sub Worksheet_Activate()
For i = 0 To 11
Res(i) = Range("C12").Offset(0, i)
Complement(i) = Range("C13").Offset(0, i)
Next
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C12:N12")) Is Nothing Then Exit Sub
If Range("O11") < 324 Then Exit Sub
Application.EnableEvents = False
Ctr = Target.Value
Target.Offset(1, 0) = Target.Offset(1, 0).Value + Target.Value -
Res(Target.Column - 3)
Target.Value = Res(Target.Column - 3)
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 0 To 11
Res(i) = Range("C12").Offset(0, i)
Complement(i) = Range("C13").Offset(0, i)
Next
End Sub

Ça le fait....presque.
Il reste à gérer les cas suivants :
- quand tu entres 2 fois la même valeur en ligne 12, la ligne 13
s'incrémente 2 fois.
- quand tu entres en ligne 12 une valeur inférieure à la précédente.
J'aurai bien cherché davantage, mais le fiston piaffe pour prendre le
contrôle de l'ordinateur depuis un bon moment déjà.
Si personne n'a rectifié le code, je m'y remettrai quand il sera couché.
Cordialement.
Daniel
"C15" <Mé a écrit dans le message de
news: 42143201$0$5222$
Rebonjour à tous deux,

Je réexpédie mon dernier message en HTML en espérant que mon tableau
passera bien

Manifestement je n'ai pas été assez clair car je n'arrive pas à mettre en
place vos procédures respectives.

en C10 j'ai 78 ==> Service mensuel minimum
en C11 j'ai =si(C12=0;0;C12-C10) cellule qui se remplit dons
automatiquement ==>Heures affectables
en C12 je saisis un certain nombre d'heures effectuées (par exemple 110)
==>Total volume d'heures mensuel
en C11, j'obtiens donc 32


Ceci pour chacun des mois de l'année (colonnes C à N)

Dès que le total des heures de la ligne 11 (Heures affectables) atteint
324,
l'on "bascule" en heures complémentaires, je dois donc avoir (si j'ai fait
120 heures) 112 en total volume heures et 8 en complémentaires.
Toutes les autres heures à venir seront donc en complémentaires

Le problème est d'essayer d'automatiser cette bascule.

Peut-être le tableau ci dessous peut vous aider

Service mensuel minimum787878787878787878787878936
Heures affectables324272727234000000324
Total volume d'heures mensuel 1101201501501501120468
heures complémentaires00000811000000118


Merci de votre aide

A+

C15

PS les lignes ci-dessus sont bien 10 11 12 et 13


"Daniel" a écrit dans le message de news:
eRaMp$
Bonsoir.
Il faut mettre le code au niveau de l'éditeur VBA, dans la feuille
concernée.
Pour une valeur de O13 < 324, la valeur entrée dans l'une des cellules de
la
plage C18:N18 est ramenée à 0. Mais peut-être ai-je mal interprété ta
question ?
Cordialement.
Daniel
"C15" <Mé a écrit dans le message de
news:
4213b62f$0$5212$
Bonsoir Daniel,

Merci de cette réponse, j'ai mis ce code dans un module, mais j'ai
toujours un pb pour le déclenchement d'une telle procédure.
Peux-tu en quelquesmots me dire comment faire.

Merci de ton aide

A+
C15
"Daniel" a écrit dans le message de news:

Bonsoir.
Ma dernière contribution de la nuit :
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C18:N18")) Is Nothing Then Exit Sub
If Range("O13") > 323 Then Exit Sub
Application.EnableEvents = False
Target.Value = 0
Application.EnableEvents = True
End Sub
Cordialement.
Daniel
"C15" <Mé a écrit dans le message de
news: 42112142$0$5220$
Bonjour à tous et toutes,

Dans un tableau je saisis des heures de travail. (c15à n15)
j'ai par ailleurs des heures "affectables" (c13 à n13).
j'ai enfin des heures complémentaires (c18 à n18).

tant que le total des heures affectables (o13) est <324, les heures
complémentaires doivent être =0, sinon elles doivent correspondre aux
heures saisies

Comment essayer d'automatiser le calcul des heures complémentaires ?

Merci de votre aide

A+

C15