Msgbox conditionnelle

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
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'337
Appréciation reçue : 1
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 : 748
Appréciations reçues : 7
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é 28 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'337
Appréciation reçue : 1
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'337
Appréciation reçue : 1
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 : 748
Appréciations reçues : 7
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é 28 fois
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • MSGbox
    par Fornstep » 12 juin 2015, 11:35 » dans Excel - VBA
    5 Réponses
    130 Vues
    Dernier message par Fornstep
    12 juin 2015, 13:55
  • Pb MsgBox
    par quattro26140 » 11 avril 2020, 09:54 » dans Excel - VBA
    3 Réponses
    60 Vues
    Dernier message par LouReeD
    11 avril 2020, 12:24
  • MsgBox
    par Irys » 5 novembre 2019, 14:35 » dans Excel - VBA
    8 Réponses
    53 Vues
    Dernier message par Pedro22
    5 novembre 2019, 15:55
  • msgbox
    par pompaero » 20 juillet 2014, 13:11 » dans Excel - VBA
    4 Réponses
    284 Vues
    Dernier message par pompaero
    20 juillet 2014, 19:06
  • MsgBox si...
    par vaffancolor » 3 octobre 2018, 14:27 » dans Excel - VBA
    3 Réponses
    94 Vues
    Dernier message par dhany
    3 octobre 2018, 17:37
  • Msgbox
    par Darkangel » 29 septembre 2014, 13:31 » dans Excel - VBA
    4 Réponses
    103 Vues
    Dernier message par h2so4
    29 septembre 2014, 14:36