recherche aide gestion erreur macro excel

lejere59

XLDnaute Nouveau
bonjour a toutes et à tous , je crée un planning annuel avec une macro qui me prévient d'erreur ....
j'ai reussi a faire beaucoup de choses mais je galere sur une macro

je dispose de 53 colonnes ( 1 colonne pour le nom et 52 pour les semaines )
je dispose de 30 lignes ( 30 personnes a dénombrer )
dans cette plage il y a des resultat provenant de calcul ...

j'aimerais que lorsque le résultat dépasse 4 , un message d'alerte intervient ...

j'y arrive pour une cellule , par exemple , si l'agent numéro 13 a une valeur en semaine 17 de 8
alors je lance un msgbox voici le code en question :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Worksheets("2015").Range("I3").Value = 5 Then
MsgBox Range("c3") & " a dépassé la durée légale en " & Range("I2"), vbExclamation
End If
End Sub


je veux donc , que la macro recherche dans une plage ( 30 agent et 52 semaines ) toutes valeur supérieur a 4 , ET
me donne le message d'alerte msgbox comme au dessus , mais surtout me donne le numéro de l'agent et la semaine ....

ci joint le fichier , si possible de faire avec la plage I3:AQ30 , la premiere cellule fonctionne si on mets 5 !!!!
apres je copierai et adapterai le code pour le planning original .....

merci d'avance
 

Pièces jointes

  • envoie site simple.xlsm
    24.3 KB · Affichages: 38
  • envoie site simple.xlsm
    24.3 KB · Affichages: 33
  • envoie site simple.xlsm
    24.3 KB · Affichages: 39

Jacou

XLDnaute Impliqué
Re : recherche aide gestion erreur macro excel

Bonjour lejere59, bonjour le forum.

Ci-joint une solution qui examine la valeur d'une cellule à chaque changement.
Il vaut mieux utiliser la macro "Worksheet_Change" plutôt que "Worksheet_SelectionChange".

Petite remarque : pour pouvoir automatiser sans problème, il vaut mieux éviter d'avoir des cellules fusionnées. Il est préférable de jouer sur la largeur des colonnes ou la hauteur des lignes quand d'autres considérations n'imposent pas la fusion de certaines cellules.

Bonne journée

Jacou

PS : la solution proposée n'examine pas l'ensemble du tableau, mais alerte dès qu'une valeur dépasse la condition définie.

pour vérifier l'ensemble du tableau il faudrait faire une macro dérivée de "Worksheet_Change" avec une boucle.
 

Pièces jointes

  • envoie site simple lejere59.xlsm
    29.7 KB · Affichages: 35
Dernière édition:

JBARBE

XLDnaute Barbatruc
Re : recherche aide gestion erreur macro excel

Bonjour à tous,

Peut-être ceci

bonne journée
 

Pièces jointes

  • envoie site simple.xlsm
    31.2 KB · Affichages: 25
  • envoie site simple.xlsm
    31.2 KB · Affichages: 30
  • envoie site simple.xlsm
    31.2 KB · Affichages: 29
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : recherche aide gestion erreur macro excel

Bonjour lejere59 et bienvenu sur le forum, Jacou, JBARBE

Trops tard, mais comme je l'ai fait, je le dépose :D

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plg As Range, C As Range, Txt$, Msg$
Set Plg = Range("$I$3:$AQ$30")
If Intersect(Target, Plg) Is Nothing Then Exit Sub
Txt = "Attentions dépassement(s)" & vbLf
Msg = Txt
For Each C In Plg
    If C.Value > 4 Then
        Msg = Msg & Range("c" & C.Row) & _
        " a dépassé la durée légale en " & _
        Cells(2, C.Column).Value & vbLf
    End If
Next C
On Error Resume Next
If Msg <> Txt Then MsgBox Msg, vbExclamation
If Err Then MsgBox "Trops de dépassements pour la visualistion", 64, "Capâcité de la boite de dialogue dépassée"
End Sub


Cordialement
 

lejere59

XLDnaute Nouveau
Re : recherche aide gestion erreur macro excel

Merci a tous de votre réponse rapide , le code idéal pour moi est celui de efgé , car je travaille sur une plage ...
le seul probleme , cest que les valeur prise sont elle meme calculé par rapport a d'autre cellule ...
si je modifie directement dans la plage "$I$3:$AQ$30" la valeur , l'erreur par le msgbox arrive de suite ....
tandis que si la valeur se modifie d'apres une modification indirect .... ca ne va pas :)
y a t'il une ligne a apporté afin qu'il y a une boucle ou un calcul permanent ????
 

JBARBE

XLDnaute Barbatruc
Re : recherche aide gestion erreur macro excel

Merci a tous de votre réponse rapide , le code idéal pour moi est celui de efgé , car je travaille sur une plage ...
le seul probleme , cest que les valeur prise sont elle meme calculé par rapport a d'autre cellule ...
si je modifie directement dans la plage "$I$3:$AQ$30" la valeur , l'erreur par le msgbox arrive de suite ....
tandis que si la valeur se modifie d'apres une modification indirect .... ca ne va pas :)
y a t'il une ligne a apporté afin qu'il y a une boucle ou un calcul permanent ????

J'ai modifié mon fichier en supprimant le vbYesNo qui permet à la boucle de ne pas s'arrêter !

Ainsi tout les chiffres sup à 4 sont présentés dans la msgbox !

ATTENTION : les cellules doivent impérativement continuer à être fusionnées

bonne aprés midi !
 

Pièces jointes

  • envoie site simple1.xlsm
    31.1 KB · Affichages: 31

lejere59

XLDnaute Nouveau
Re : recherche aide gestion erreur macro excel

merci JBARBE , mais le probleme c'est que je dois le renseigner 52 fois ( car le fichier joint j'ai juste mis 5 semaine pour faire rapide ;) )

j'aimerais utiliser le code de efgé

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plg As Range, C As Range, Txt$, Msg$
Set Plg = Range("$I$3:$AQ$30")
If Intersect(Target, Plg) Is Nothing Then Exit Sub
Txt = "Attentions dépassement(s)" & vbLf
Msg = Txt
For Each C In Plg
If C.Value > 4 Then
Msg = Msg & Range("c" & C.Row) & _
" a dépassé la durée légale en " & _
Cells(2, C.Column).Value & vbLf
End If
Next C
On Error Resume Next
If Msg <> Txt Then MsgBox Msg, vbExclamation
If Err Then MsgBox "Trops de dépassements pour la visualistion", 64, "Capâcité de la boite de dialogue dépassée"
End Sub


mais qui soit modifié de tel sorte qu'il tourne en boucle , car si je change pas la valeur directement dans sa plage de travail , il ne me dis rien , et comme la valeur viens d'un calcul d'un autre calcul par plusieur chaine de calcul .... LOL

de plus etant débutant le code me parait plus sympathique a comprendre

merci ;) ;)

bonne soirée :)
 

Efgé

XLDnaute Barbatruc
Re : recherche aide gestion erreur macro excel

Bonjour à tous,

@lejere59
Tu peux mettre le code, par exemple, dans une Private Sub Worksheet_Calculate() en enlevant la ligne:
VB:
If Intersect(Target, Plg) Is Nothing Then Exit Sub

Mais je pense que laisser tourner en permanence ce genre de code va vite devenir assez insupportable à l'utilisation.

C'est toi qui vois.

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 107
Messages
2 085 354
Membres
102 872
dernier inscrit
YvanCB