Somme prod

G

GClaire

Guest
Salut a toutes et tous,

Alors j'ai cette formule, donnée par une personne du forum, que je remercie :

=SOMMEPROD(SI(A22:A52=CoordonnéesBebe!C13;C22:C52;SI(ESTNUM(C22:C52);SI(C22:C52>5,5;C22:C52-5,5;0);0)))

Valider avec ctrl + maj + enter

Qui me sert a calculer les heures supplementaires suivant plusieur critères

1) Si le jour tombe suivant le résulat de la celulle C13 de la feuille CoordonnéesBebe (Donc un jour sans garde)

2) Si les heures dépasse 5,5

Aprés, plusieur mois je me suis rendu compte que la demande, par rapport a ma nourice pouvais changer et certain résultat que j'avais mis dans une feuille réunissant tous mes critères cela éronnée mes calcules.

Donc voici ce que j'aimerais faire.

1) Pour le cas ou cela tombe un jours sans garde :

Dans la feuille, j'ai placer un tableau avec cette plage de celulle :

AS30 a AS 34 : Jours , je nomme les jours de lundi a vendredi
AT30 à AT 34 : Si garde ou pas garde (Avec comme résultat non et oui)

Comment dans la formule je pourrai remplacer cela CoordonnéesBebe!C13 (Qui me donne la possibilité que d'un jour sans garde), par la possibilité d'avoir plusieur jours sans garde, et que s'il sont travaillé seraient compter en heures supplémentaires.

Et pour le cas 2, j'ai tenté de remplacer le 5,5, par une celulle de manière a pouvoir modifier par UserForm le résultat de la celulle, mais cela ne fonctionne pas, voici comment j'avais transformé la formule :

=SOMMEPROD(SI(A22:A52=CoordonnéesBebe!C13;C22:C52;SI(ESTNUM(C22:C52);SI(C22:C52>AX31;C22:C52-AX31;0);0)))

Valider avec ctrl + maj + enter


Merci, pour votre aide, G'Claire

P-S : Si je ne suis pas assezclaire je suis entrain de faire une feuille pour de meilleurs explications
 
D

Dugenou

Guest
Salut Jacques,

A vue de nez, si ta cellule ax31 est unique il faut peut être la verrouiller avec $ax$31. Je dis ça juste en regardant ta formule mais peut être est-ce plus compliqué : du genre avec sommeprod il faut des pages de cellules de longueur identique...

Attendons l'avis de Monique...
 
M

Monique

Guest
Bonjour,

Ton fils n'a pas besoin de nounou le samedi, le dimanche ni les jours fériés ?
Je n'ai pas trop compris ton système.

On commence par le plus simple, la 1ère formule de ton message, à valider seulement par entrée :
=SOMMEPROD((A22:A52=CoordonnéesBebe!C13)*(C22:C52>5,5);C22:C52-5,5)
La 2ème :
=SOMMEPROD((A22:A52=CoordonnéesBebe!C13)*(C22:C52>AX31);C22:C52-AX31)

Ce que tu sembles chercher, mais je n'en suis pas sûre.
Au lieu de mettre tes 5 jours de AS30 à AT34 et tes "non" de AT30 à AT34,
tu les mets en AS28:AW28 pour les jours,
en AS29:AW29 pour les "non"
Et ça donne :
=SOMMEPROD((A22:A52=AS28:AW28)*(AS29:AW29="non")*(C22:C52>AX31)*(C22:C52-AX31))
En donnant des noms :
=SOMMEPROD((A22:A52=Jours)*(OuiNon="non")*(C22:C52>Limite)*(C22:C52-Limite))

Si je suis à côté de la plaque, tu postes un fichier.
 
G

GClaire

Guest
Salut a toutes et tous,

Désollé de ma réponse tardive, mais je me suis levé trés tard ce matin, une raclette trop abondante peu être,lol.

Voici le fichier et ce que m'as donné comme solution Jean-Marie (Que je remercie).

Monique, j'ai esayé ta solution, mais en vain, mais je pense que c'est plustot par un manque d'explication de ma part et que sans fichier cela ne doit pas être évidant, de traduire mes explications. Donc je joint le fichier, pour avoir un apercu de mon problème, mais ne t'éternise pas dessus.

J'essaye de comprendre la formule, et vous tiens au courant, Bzzzzzzzz.

Merci a vous deux, G'Claire
 

Pièces jointes

  • PayesNourisseEssaieUneFeuille.zip
    27.9 KB · Affichages: 16
M

Monique

Guest
Bonjour,

On peut supposer :
heures supp, quelle que soit la durée de la journée, si c'est un jour "non",
heures supp les autres jours si durée > 05:30
C'est ca ?

Si c'est ça, tu as 2 méthodes :
ou bien tu gardes ton tableau "oui non" tel quel et tu obtiens le résultat par SommeProd et Transpose(),
à valider par ctrl, maj et entrée.
ou bien tu mets ton tableau en ligne et tu obtiens la même chose avec une formule plus pratique, plus courte.
 

Pièces jointes

  • NounouLucas.zip
    32.6 KB · Affichages: 33
G

GClaire

Guest
Re, a toutes et tous

Monique, aprés quelques test, je me suis rendu compte, que s'il y avait autre chose que des chiffres dans la colonne C22:C52, cela me mettait des erreurs un peu partout.

Chose que je n'ai pas pensé a mettre dans l'exemple car j'ai des valeurs alpha, du genre AbsB-B, AbsA-S, Mal ...etc.

Excuses-moi de cet oublie, G'Claire
 
G

GClaire

Guest
Re, a toutes et tous

Décidement je ne vais pas m'en sortir.
Le souci que j'ai maintenant, n'est je pense pas dù aux formules fournient pas Monique ou Jean-Marie.

J'envois la valeur minimun d'heures dans la cellule (AX31) avec le code suivant, en partie donné par @Thierry, merci a lui :

Private Sub ValiderHeuresMiniMumJours_Click()
Dim TheNum As Byte
Dim i
TheDate = Month(Date)
TheNum = CByte(Month(Date))
If HeuresMiniMumJours = "" Then
MsgBox "Veuillez entrer une durée minimum de garde !!!", vbCritical, "Erreur à la validation"
HeuresMiniMumJours.SetFocus
Exit Sub
End If

MsgBox "Les données seront modifié pour la période restante de : " & _
(Worksheets(TheNum).Name) & " à " & (Worksheets(12).Name)
For i = TheNum To 12
With Worksheets(i)
.Range("AX31") = HeuresMiniMumJours.Value
End With
Next i
Unload Me
End Sub

et pour le format du TextBox :

Private Sub HeuresMiniMumJours_Enter()
HeuresMiniMumJours = format(HeuresMiniMumJours, "#,##0.00")
End Sub

Private Sub HeuresMiniMumJours_Exit(ByVal Cancel As MSForms.ReturnBoolean)
HeuresMiniMumJours = format(HeuresMiniMumJours, "#,##0.00")
End Sub

Donc si je garde, la valeur envoyée de la sorte, les heures supplémentaires (Supérieur a 5,50) ne sont pas comptées (Sauf pour les jours sans gardes), par contre si je tape dans cette cellule manuellement la valeur 5,50, cela fonctinne.

Donc avec Jean-Marie il m'a dit que cela venais d'un problème de type (1 ou 2).

Et m'as sugérer de modifier mon code de cette manière:

.Range("AX31") = HeuresMiniMumJours.Value

par

.Range("AX31") = Val (HeuresMiniMumJours)

Chose que j'ai faite, mais le problème et que la valeur retournée dans la cellule est 5,00 pour la valeur saisie dans le TextBox 5,50

Ce que me disait Jean-Marie est que par ce code je suis obligé de saisir dans le TextBox 5.50 au lieu de 5,50, car VBA ne comprends pas le point 5si j'ai bien compris)

Comment puis-je faire, pour remédier a cela?

Merci d'avance, G'Claire
 

Discussions similaires

Statistiques des forums

Discussions
314 085
Messages
2 105 647
Membres
109 410
dernier inscrit
fwbox