Validation dans une cellule avec 1 formule
Bonjour messieurs et mesdames
Voila je vous sollicite pour un probleme que je n'arrive pas à résoudre je m'explique.
je fait des calculs de rendement , ce rendement se présente sous forme de pourcentage :
1 - sup à 98% ok
2 - en dessous 97% attention
3 - en dessous 96% alerte
Donc pour que cela se voit bien j'ai fait des formes conditionnelles avec couleur et je voulais mettre en place des validations avec un message proposant les préconisations à effectuer pour remonter le rendement.
mais j'ai 2 problèmes:
1 ce rendement se fait avec une formule du coup la validation ne s'active pas lors d'un mauvais rendement.
2 j'ai trouvé sur le forum une macro (types msgbox) qui aurais pu fonctionner mais si le rendement n'est pas bon le message apparait en permanence et je voudrai simplement que le message avertisse 1 fois que l'on valide l'information par ok et que le message n’apparaisse plus pour la cellule en question.
Je vous met un exemple en pièce jointe cela sera plus parlant.
voila si une personne pouvez me venir en aide merci d'avance
PI: je suis pas trop fort sur excel mais je connais un petit peu visual, et je travaille sur excel 2003.
Salut,
pour éviter que le message n'apparaisse à chaque fois que tu vas lancer ta macro, il suffit de "marquer" la cellule lors de sa première analyse : ici, lors de celle ci, la cellule passe en italique, donc, lorsque tu lanceras ton script la prochaine fois, il ignorera la cellule en italique et passera directement à l'analyse de la cellule suivante.
Sub Try()
'
' Try Macro
'
On Error Resume Next
Range("D6").Select 'l'analyse commence à partir de la cellule D6
Do Until IsEmpty(ActiveCell) ' la boucle continue jusqu'à ce qu'elle rencontre une cellule vide
If Selection.Font.Italic = True Then 'si la cellule séllectionnée est en italique, alors elle passe directement à la cellule suivante
ActiveCell.Offset(2, 0).Select
Else
Call maRoutine ' appelle la routine d'analyse de la cellule
ActiveCell.Offset(2, 0).Select
End If
If Selection.Font.Italic = True Then
ActiveCell.Offset(-2, 2).Select
Else
Call maRoutine
ActiveCell.Offset(-2, 2).Select
End If
If Selection.Font.Italic = True Then
ActiveCell.Offset(0, 1).Select
Else
Call maRoutine
ActiveCell.Offset(0, 1).Select
End If
Loop
'
End Sub
Sub maRoutine()
If ActiveCell <= 0.96 Then 'analyse de la valeur de la cellule
MsgBox ("alerte") ' message
Selection.Font.Italic = True 'la cellule est mise en italique, donc la prochaine fois que le script sera lancé, l'analyse (donc le message) sera ignoré
Else
If ActiveCell > 0.96 And ActiveCell < 0.97 Then
MsgBox ("attention")
Selection.Font.Italic = True
Else
If ActiveCell >= 0.97 And ActiveCell < 0.98 Then
MsgBox ("ok")
Selection.Font.Italic = True
Else
If ActiveCell >= 0.98 Then
MsgBox ("parfait")
Selection.Font.Italic = True
End If
End If
End If
End If
End Sub
merci game over
chaud la macro, je pensai pas que cela serait aussi compliqué.
j'ai regardé ta pièce jointe mais malheureusement je n'ai pas l'impression que cela fonctionne ou alors je fait une mauvaise manip.
En fait je veux que le message apparaisse seulement si le pourcentage de rendement n'est pas bon sur f6, I6, L6........
Merci beaucoup pour ton aide précieuse en attente de ta réponse bien cordialement Ludovic
La macro fontionne correctement :
- va dans le menu developpeur
- sélectionne Macros
- éxecute Try
l'inconvénient de la macro est que tu dois la lancer à chaque fois pour obtenir l'ouverture (ou non) de ta boite de dialogue.
Il est peut être possible d'obtenir tes boites de dialogue sans avoir à éxécuter la macro à chaque fois mais ça dépasse mes compétences.
J'ai corrigé le script pour qu'il n'analyse que les cellules F6, I6, L6 etc...