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.

24test.zip (25.25 Ko)

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

5copie-de-test.zip (29.62 Ko)

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...

17copie-de-test-2.zip (29.25 Ko)
Rechercher des sujets similaires à "validation formule"