Msgbox conditionnelle

Y compris Power BI, Power Query et toute autre question en lien avec Excel
W
Wam21
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 21 janvier 2015
Version d'Excel : 2010

Message par Wam21 » 21 janvier 2015, 11:26

Bonjour à tous,

Je début tout juste sur VBA et j'aurais besoin d'un petit conseil.
Voilà, j'ai une liste déroulante sur une feuille et j'aimerais afficher un message lorsqu'on sélectionne certaines valeurs de la liste.
J'ai trouvé sur internet qu'il fallait utiliser les Msgbox mais j'ai essayé sur un exemple simple et ça ne marche pas.

Sur un fichier vierge, je crée une liste déroulante contenant A,B, C et D et j'écris la macro suivante :

Sub Sel()
If cellule.Value = "A" Then
Msgbox ("Vous avez sélectionné A")
End Sub

Mais il ne se passe rien, pourriez-vous me guider s'il vous plaît ?

En vous remerciant :)
Avatar du membre
lillysg
Membre habitué
Membre habitué
Messages : 120
Inscrit le : 14 juillet 2014
Version d'Excel : 2013

Message par lillysg » 21 janvier 2015, 11:43

Bonjour Wam

Je viens de tester cela et il semblerait que ça fonctionne


Sub Sel()
If ActiveCell.Value = "A" Then
MsgBox "Vous avez sélectionné A"
End If

End Sub

:btres:
Lilly...
« Errare humanum est, sed persevare diabolicum est » (l’erreur est humaine, persévérer dans celle-ci est diabolique)
W
Wam21
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 21 janvier 2015
Version d'Excel : 2010

Message par Wam21 » 21 janvier 2015, 13:41

Bonjour Lilly,

J'ai bien copié la macro que tu m'as proposée mais il n'y a aucun effet quand je sélectionne A.

Merci pour ton aide :)
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'342
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 21 janvier 2015, 14:13

Bonjour,

Pour détecter la modification de la valeur d’une cellule, il faut que tu utilises la procédure évènementielle Worksheet.Change

Exemple avec la détection d’une modification de la valeur de A1.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Address = "$A$1" Then
        If Target.Value = "A" Then MsgBox ("Vous avez sélectionné A")
    End If
End Sub
La procédure doit être placée dans le module de la feuille concernée.
A+
Avatar du membre
AMIR
Membre dévoué
Membre dévoué
Messages : 733
Appréciations reçues : 6
Inscrit le : 19 janvier 2015
Version d'Excel : 2007

Message par AMIR » 21 janvier 2015, 14:16

SALUT
ESSAI CA COPIER LE MACROS SI LA VERSION D4EXEL N EST PAS COMLPATIBLE
MERCI
LISTEDEROULANTE.xlsm
(20.7 Kio) Téléchargé 24 fois
W
Wam21
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 21 janvier 2015
Version d'Excel : 2010

Message par Wam21 » 21 janvier 2015, 15:23

Merci AMIR pour ton aide mais ça ne fonctionne pas.

En revanche, le code de frangy fonctionne parfaitement, merci !!
Par contre, si je saisis bien ton code, il n'affichera la Msgbox que pour la valeur A dans A1.
Comment faire si je veux étendre la Msgbox à plusieurs cellules, voire un tableau de cellules où chaque cellule est une liste déroulante identique ? J'ai essayé

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$A$1" Or "$A$2" Then
If Target.Value = "A" Then MsgBox ("Vous avez sélectionné A")
End If
End Sub

Et

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$A$1:$C$15" Then
If Target.Value = "A" Then MsgBox ("Vous avez sélectionné A")
End If
End Sub

Respectivement pour le cas de deux cellules et un tableau de cellules...sans succès.

Merci pour votre aide :)
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'342
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 21 janvier 2015, 15:34

Pour étendre la détection à la plage A1:C15 :
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Application.Intersect(Target, Range("$A$1:$C$15")) Is Nothing Then
        If Target.Value = "A" Then MsgBox ("Vous avez sélectionné A")
    End If
End Sub
A+
W
Wam21
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 21 janvier 2015
Version d'Excel : 2010

Message par Wam21 » 21 janvier 2015, 15:47

Merci frangy, ça marche à la perfection et en plus, j'en apprends plus sur le VBA, merci !!!

A présent, ma tâche se complique et j'aimerais n'afficher la Msgbox qu'à condition que dans le tableau, on va dire A est sélectionné 3 fois par exemple.

Je ne sais pas si je suis clair mais j'aimerais que l'on puisse remplir les cellules comme on le souhaite et que dès qu'il y a au moins 3 A sélectionnés sur une ligne, la Msgbox 'Trop de A' s'affiche avec cerise sur le gâteau, la non prise en compte de la dernière sélection donc...ça me paraît tendu.

Merci pour toute aide :)
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'342
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 21 janvier 2015, 16:41

Un exemple, toujours sur la plage A1:C15
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MaPlage As Range
    If Target.Count > 1 Then Exit Sub
    If Not Application.Intersect(Target, Range("$A$1:$C$15")) Is Nothing Then
        Set MaPlage = Cells(Target.Row, 1).Resize(, 3)
        If Application.CountIf(MaPlage, "A") >= 3 Then
            MsgBox ("Trop de A avec cerise sur le gâteau")
            Application.EnableEvents = False
            Target.Value = ""
            Application.EnableEvents = True
        End If
    End If
End Sub
A+
Avatar du membre
AMIR
Membre dévoué
Membre dévoué
Messages : 733
Appréciations reçues : 6
Inscrit le : 19 janvier 2015
Version d'Excel : 2007

Message par AMIR » 22 janvier 2015, 11:20

SALUT

svp essai ça
merci
LISTEDEROULANTE.xlsm
(20.31 Kio) Téléchargé 26 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • Msgbox qui recapitule toutes les msgbox précédentes
    par favadusy57 » 27 mai 2014, 14:54 » dans Excel - VBA
    19 Réponses
    1130 Vues
    Dernier message par favadusy57
    2 juin 2014, 11:39
  • msgbox
    par pompaero » 20 juillet 2014, 13:11 » dans Excel - VBA
    4 Réponses
    273 Vues
    Dernier message par pompaero
    20 juillet 2014, 19:06
  • msgbox
    par julien35000 » 24 janvier 2016, 20:30 » dans Excel - VBA
    1 Réponses
    82 Vues
    Dernier message par Banzai64
    25 janvier 2016, 00:30
  • MsgBox Yes/No
    par Superman96 » 27 août 2016, 16:39 » dans Excel - VBA
    4 Réponses
    882 Vues
    Dernier message par Superman96
    27 août 2016, 18:18
  • MsgBox si...
    par vaffancolor » 3 octobre 2018, 14:27 » dans Excel - VBA
    3 Réponses
    49 Vues
    Dernier message par dhany
    3 octobre 2018, 17:37
  • MSGbox
    par Fornstep » 12 juin 2015, 11:35 » dans Excel - VBA
    5 Réponses
    117 Vues
    Dernier message par Fornstep
    12 juin 2015, 13:55