Créer message d'erreur excel 2003

[Résolu/Fermé]
Signaler
Messages postés
4
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
18 novembre 2010
-
 Dusty -
Bonjour,

Je souhaite créer un message d'erreur (nouvelle petite fenêtre qui s'ouvre avec message personnalisé) sous excel 2003, si dans E6 et F6 (qui comportent une liste déroulante), le "OUI" est sélectionné dans les deux cellules.

Je ne sais pas comment faire...

D'avance merci de votre aide

9 réponses

Messages postés
17551
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
4 744
Salut tout le monde,

Je n'ai pu répondre plus tôt pour apporter des précisions, dans la demande il est bien précisé qu'il existait deux listes de validation ce qui supprime une deuxième utilisation de cette fonction, pour ma part je pense qu'il faut avoir recours au VBA ou supprimer les liste de validations en E et F.

pour répondre à Jojoob, le code à remplacer dans les propriétés de feuille.
J'ai complété le code par une gestion d'erreur

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([E6:F25], Target) Is Nothing Then
On Error GoTo errorHandler
If Target = "oui" And Target.Offset(0, 1) = "oui" Or _
Target = "oui" And Target.Offset(0, -1) = "oui" Then
MsgBox "Oui à été sélectionné pour la deuxième fois en " & Target.Address
errorHandler:
On Error GoTo 0
Exit Sub
End If
End If
End Sub
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
26192
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
22 septembre 2021
6 066
bonjour
il y a des solutions via l'affichage d'un message par le système de validation, mais elle ne sont pas applicables à la fois avec une liste par cellule et une formule liant les deux cellules, c'est soit la liste, soit la condition
Peut être vous en sortirez vous simplement avec une mise en forme conditionnelle qui pourrait passer E6 et F6 en rouge si elles comportent toutes deux un OUI
pour cela, si excel avant 2007:
Sélectionner E6:F6
barre d'outil / Format /Mise en forme conditionnelle
dans la fenêtre à droite, choisir "formule"
la formule est:
=ET(E6="oui";F6="oui")
formater dans la couleur souhaitée



en attendant mieux.. peut être

Crdlmnt
Messages postés
4
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
18 novembre 2010

Merci pour votre réponse.

En effet, ce que j'aimerais c'est vraiment un message d'erreur...
En attendant une autre solution je vais supprimer les listes déroulantes, car en plus elles sont déjà en mise en forme conditionnelle (OUI en vert, NON en rouge).

Salutations
Messages postés
17551
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 septembre 2021
4 744
Salut,

En VBA, clic droit sur l'onglet de feuille/Visualiser le code
et colle ce code dans la feuille blanche


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([E6:F6], Target) Is Nothing Then
If Range("E6") = "oui" And Range("F6") = "oui" Then
MsgBox "quel message voulez vous afficher"
End If
End If
End Sub

il y a plus simple avec Validation
tu peux définir tes critères et s'ils sont remplis avec tes deux oui par exemple, tu as un message d'erreur qui s'affiche.

je susi sous 2007 chez moi mais de mémoire ça doit être dans Données puis validation et ensuite tu sélectionnes dans la liste déroulante
"égal à" cellule 1= cellule 2 =OUI
et là tu peux taper ton message qui doit s'afficher

tu as le choix entre un stop, une info, un avertissement
Messages postés
54730
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
27 septembre 2021
16 621
Bonsoir, Anthony et Jojoob.

Pour aider Anthony (je suis chez moi), c'est bien dans Données/Validation des données qu'il faut aller.
Mais ensuite il faut choisir Options/Autoriser/Personnalisé et dans la fenêtre "Formule" qui apparaît, saisir =ET(E6="OUI";F6="OUI").
Puis cliquer sur l'onglet Alerte d'erreur et mettre le texte de son choix.

Cordialement.
Messages postés
26192
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
22 septembre 2021
6 066
Bonjour mon ami Raymond
C'est d'accord sur la solution, mais comme dit dans mon premier message , cette option est lié à la validation de données et n'est pas cumulable avec un menu déroulant.
Je pense que c'est dans cet but que jojoob a supprimé ses menus déroulants, vois son message 3

Par ailleurs, la solution est valable selon ta proposition, à ceci près:
le principe de validation par formule autorise mais n'interdit pas, ce qui veut dire qu'avec ta formule, seuls les deux OUI sont autorisés, ce qui est le contraire de la demande
La formule adaptée serait donc:
=(ET(OU($F6="NON";$E6="NON");$F6<>$E6))
et il est impératif de bloquer les colonnes pour qu'elle fonctionne, sinon elle se décale.
bien amicalement
Crdlmnt
Messages postés
4
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
18 novembre 2010

Merci pour vos réponse.

Je vais utiliser la solution de Mike mais j'ai encore besoin d'aide.

Je ne connais pas du tout le visual basic, mais avec cette formule ça fonctionne.
Pouvez-vous svp me modifier la formule de manière à l'incrémenter jusqu'à E25 et F25 ?

Merci d'avance
Messages postés
4
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
18 novembre 2010

C'est exactement ce qu'il me fallait.

Merci beaucoup

A+
Bonjour

Dans ces cas là, je ne me casse pas trop la tête, j'ajoute simplement une petite colonne qui sert de voyant à coté des 2 valeurs à traiter (en G6 ici). Cette colonne prendra comme valeur 1 ( texte formaté en rouge par exemple) si les 2 valeurs sont à OUI et vide sinon. Ensuite le format conditionnel met la cellule en rouge si la valeur est de 1.
Tu peux aussi remplacer la valeur 1 par un texte quelconque mais ça tient plus de place.
Tu peux même bloquer tout traitement si une seule cellule de cette colonne n'est pas vide ...
C'est simplet mais efficace..