Problème, formule qui fait tout buger, dans la mise en forme conditionnelle

diaboloman

XLDnaute Nouveau
Bonjour,

Je dois créer un tableau excel afin de recenser et évaluer les risques sur différent poste de travail.
J'ai donc appliqué plusieurs formules, des listes déroulantes en cascades, des codes couleurs...

Depuis quelques jours j'ai un problème que je n'arrive pas à résoudre. En effet comme sur le fichier joint que je vous transmet, j'ai mis en place une liste déroulante en cascade sur les colonnes P et Q.
Comme vous pouvez le constater si vous choississez un type de risque dans P vous obtiendrez des types de dangers qui s'y rapporte dans Q.

Mon problème est que si je change de type de risque dans la colonne P le contenu de la cellule de la colonne Q ne change pas, il peut donc il y avoir des erreurs lors de la modification du tableau.

J'ai donc voulu appliquer une mise en forme conditionnelle avec cette formule "=NB.SI(INDIRECT(SUBSTITUE(P9;" ";"_"));Q9)=0" et je demande que le motif soit rouge. Ainsi, si je change de type de risque et que le type de danger ne correspond pas, le type de danger devient rouge, montrant bien qu'il y a une erreur.

Jusque là tout marche bien, j'enregistre puis je ferme tout va bien.

Mais là est le problème, je veux réouvrir le fichier mais un message d'erreur s'affiche après que j'active les macros. Une fois que je ferme la fenêtre du message d'erreur je retrouve mon tableau avec juste les écris mais plus de formules, plus de macro, plus de liste, plus de construction visuel bien organisé. Heureusement j'avais fait une sauvegarde sur une clé avant d'appliquer la mise en forme conditionnelle

Sauriez-vous d'où viens le problème ?

Amicalement

diaboloman
 

Pièces jointes

  • tableau d'évaluation SDIS 63.xls
    115.5 KB · Affichages: 86
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Problème, formule qui fait tout buger, dans la mise en forme conditionnelle

Bonjour diaboloman, et bienvenue à toi ami pompier,

Voici ton fichier modifié, vois si ma solution te convient.

Nul besoin d'utiliser une mise en forme conditionnelle : toute sélection d'une option de liste dans la plage P9:p... efface la valeur et déroule automatiquement la liste dans la cellule Q correspondante.

La sélection d'une cellule en colonne P déroule également la liste de choix.

Espérant avoir été utile.

Cordialement.
 

Pièces jointes

  • Copie de tableau d'évaluation SDIS 63.xls
    116.5 KB · Affichages: 46

Papou-net

XLDnaute Barbatruc
Re : Problème, formule qui fait tout buger, dans la mise en forme conditionnelle

RE diaboloman,

Pour parvenir à ce résultat, j'ai écrit 2 procédures événementielles (macros) attachées à la feuille 1. Pour voir ces deux macros, il suffit de taper ALT+F11, ce qui fait apparaître l'éditeur VBA à l"écran. Dans l'éditeur, un double-clic dans la fenêtre de gauche (Projet - VBA Project) sur Feuil1 affiche ces 2 procédures, telles que :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 16 Or Target.Row < 9 Then Exit Sub
Target.Offset(0, 1).Select
ActiveCell = ""
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not ActiveCell.Validation.InCellDropdown Then Exit Sub
SendKeys "%{UP}"
End Sub

La première (Private Sub Worksheet_Change(ByVal Target As Range) se déclenche lorsqu'une cellule est modifiée dans la feuille 1.

La 1ère ligne teste si la colonne de la cellule modifiée est la 16ème (colonne P) et si la ligne de cette même cellule est égale ou supérieure à 9. Dans le cas contraire, la macro se termine sans autre action.
La deuxième ligne sélectionne la cellule située immédiatement à droite de la cellule modifiée. Par exemple, si on modifie la cellule P9, la macro sélectionne la cellule Q9.
La troisième ligne efface cette cellule, Q9 dans l'exemple ci-dessus.

La deuxième macro (Private Sub Worksheet_SelectionChange(ByVal Target As Range)) se déclenche lorsqu'une nouvelle cellule est sélectionnée.

La première ligne permet d'éviter le blocage du programme si celui-ci rencontre une erreur. Étant donné le test effectué dans le module précédent, cette instruction n'est pas obligatoire dans ce cas mais je l'ai conservée.
La deuxième ligne teste si la cellule contient une liste de validation. Dans le cas contraire, on sort de la procédure sans autre forme de procès.
La troisième ligne envoie la séquence de touches qui correspond à l'appui sur la flèche de ka liste déroulante pour afficher cette liste.

Voilà, ne connaissant pas ton niveau de connaissances en macros, j'espère avoir été suffisamment clair dans mes explications.

Restant à ta disposition,

Je te souhaite une bonne journée.

Cordialement.
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 086
Messages
2 085 197
Membres
102 814
dernier inscrit
JLGalley