rh.finances
XLDnaute Occasionnel
Bonjour à tous les colistiers de ce superbe site d'échange.
je suis en train de confectionner un tableur excel comprenant des macros et n'étant pas vraiment aguerri sur ce dernier point, je me heurte à un problème insoluble qu'un connaisseur saura sans doute gérer.
dans l'onglet "tableau de saisie" du fichier joint, j'ai appliqué un nom ("total_journalier_en_heures") sur la plage$O$2:$O$500. il s'agit d'une plage de totalisation et si les données remplies dans les colonnes I, J, L et M conduisent à un résultat supérieur à 10.5, je souhaite qu'un msgbox de type VbRetryCancel s'affiche.
si on clique sur "réessayer", la dernière saisie ayant entraîné le dépassement s'efface afin de recommencer
si on clique sur "annuler", la saisie que l'on a faite est maintenue et la macro s'arrête.
j'ai donc essayé de bidouiller un code en fouillant dans différents forums. celui-ci ne semble pas présenter d'erreurs (tout du moins, je n'ai pas eu de message en ce sens) mais celui-ci ne s'active pas pour autant, d'où le problème que je rencontre.
je l'ai rédigé comme suit :
en revanche et ça, je ne l'ai pas indiqué dans le code susvisé, je souhaiterais simplement que la msgbox ne s'affiche qu'une seule fois lors de la survenance de l’événement, puis cesse ensuite de fonctionner et ce même si la condition déclenchant la macro demeure remplie.
d'avance merci beaucoup pour votre précieuse collaboration.
Alex
je suis en train de confectionner un tableur excel comprenant des macros et n'étant pas vraiment aguerri sur ce dernier point, je me heurte à un problème insoluble qu'un connaisseur saura sans doute gérer.
dans l'onglet "tableau de saisie" du fichier joint, j'ai appliqué un nom ("total_journalier_en_heures") sur la plage$O$2:$O$500. il s'agit d'une plage de totalisation et si les données remplies dans les colonnes I, J, L et M conduisent à un résultat supérieur à 10.5, je souhaite qu'un msgbox de type VbRetryCancel s'affiche.
si on clique sur "réessayer", la dernière saisie ayant entraîné le dépassement s'efface afin de recommencer
si on clique sur "annuler", la saisie que l'on a faite est maintenue et la macro s'arrête.
j'ai donc essayé de bidouiller un code en fouillant dans différents forums. celui-ci ne semble pas présenter d'erreurs (tout du moins, je n'ai pas eu de message en ce sens) mais celui-ci ne s'active pas pour autant, d'où le problème que je rencontre.
je l'ai rédigé comme suit :
VB:
Sub comparer()
Dim a As Variant
Dim tabl As Range
Dim answer As Integer
Set tabl = Range("total_journalier_en_heures")
a = 10.5
answer = MsgBox("le nombre d'heures journaliers est supérieur à 10h30. Voulez-vous continuer ?", vbRetryCancel + Apparence + TypeDeBox, "total journalier")
For Each cell In tabl
If cell.Value > a Then answer
If answer = vbRetry Then Application.Undo
Else: Exit Sub
End If
Next cell
End Sub
en revanche et ça, je ne l'ai pas indiqué dans le code susvisé, je souhaiterais simplement que la msgbox ne s'affiche qu'une seule fois lors de la survenance de l’événement, puis cesse ensuite de fonctionner et ce même si la condition déclenchant la macro demeure remplie.
d'avance merci beaucoup pour votre précieuse collaboration.
Alex