Msgbox

vmax67

XLDnaute Occasionnel
Bonsoir les experts

J’ai besoin de vos lumières à propos d’une message box
J’ai des cellules grisées qu’il faut absolument remplir, et des cellules en bleue qu’il faut
également remplir uniquement après saisie totale des grises.
Il me faudrait une alerte par message box qui signale qu’elle cellule grise n’est pas remplie
quand on essaie de saisir une valeur dans une des cellules en bleue
Nom cellule grise = Test_Zone_Grise
Nom cellule bleue = Test_Zone_Bleue
Merci pour votre aide
VMAX67
 

Pièces jointes

  • Msgbox.xlsm
    21.3 KB · Affichages: 60
  • Msgbox.xlsm
    21.3 KB · Affichages: 63
  • Msgbox.xlsm
    21.3 KB · Affichages: 63

vmax67

XLDnaute Occasionnel
Re : Msgbox

BONJOUR Gurgeh

l'extension xlms et le format pour enregister les macros.

essaie avec cette version de fichier

VMAX67
 

Pièces jointes

  • Msgbox.xlsm
    19.9 KB · Affichages: 36
  • Msgbox.xlsm
    19.9 KB · Affichages: 34
  • Msgbox.xlsm
    19.9 KB · Affichages: 39

Gurgeh

XLDnaute Occasionnel
Re : Msgbox

En fait je te suggérais de le mettre en .xls (version Excel 2003) pour éviter les problèmes de conversion.

Mais peu importe, ça marche donc j'ai pu regarder.

Tout d'abord, tu as utilisé des cellules fusionnées, et ça c'est mal. Du coup, même quand tu as l'impression que toutes tes cellules grises sont remplies, lorsque tu balayes chaque cellule de la zone TEST_ZONE_GRISE, tu vas en trouver des vides.

Je te suggère donc dans un premier temps de changer la définition de TEST_ZONE_GRISE et de mettre :
Code:
=Feuil1!$B$5;Feuil1!$C$5:$C$10;Feuil1!$J$5:$J$10;Feuil1!$C$14;Feuil1!$J$14

Ensuite, j'ai un peu modifié ta macro, que tu trouveras commentée ci-dessous, de façon à ce que s'il y a 3 cellules non remplies, l'utilisateur ne se tape pas trois messages, mais un seul qui résume toutes les cellules non remplies.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  'Test pour savoir si la cellule qui a déclenché l'événement est bien dans la zone bleue
  If Not Intersect(Range("TEST_ZONE_BLEUE"), Target) Is Nothing And Target.Count = 1 Then
    'La variable AuMoinsUneCelluleGriseNonRemplie servira à stocker le fait qu'on a trouvé une cellule grise vide
    AuMoinsUneCelluleGriseNonRemplie = False
    'La variable CellulesNonRemplies servira à stocker la liste des cellules vides
    CellulesNonRemplies = ""
    'On va balayer chaque cellule de TEST_ZONE_GRISE
    For Each c In Range("TEST_ZONE_GRISE")
        'et si l'une d'elles est vide, on bascule AuMoinsUneCelluleGriseNonRemplie et on note l'adresse de la cellule dans CellulesNonRemplies
        If c.Value = "" Then
            AuMoinsUneCelluleGriseNonRemplie = True
            If CellulesNonRemplies <> "" Then CellulesNonRemplies = CellulesNonRemplies & " / "
            CellulesNonRemplies = CellulesNonRemplies & c.Address
        End If
    Next c
    'Si une des cellules de la zone grise est vide, on affiche le message prévu
    If AuMoinsUneCelluleGriseNonRemplie Then
        réponse = MsgBox("Attention saisie imcomplète voir cellule(s)  :  " & CellulesNonRemplies & Chr$(10), vbInformation, "ZONE GRISE NON REMPLIE")
        Application.EnableEvents = False
        Target.Value = Empty
        Target.Select
        Application.EnableEvents = True
    End If
  End If
End Sub

A ta dispo si pas clair

Gurgeh
 

vmax67

XLDnaute Occasionnel
Re : Msgbox

Merci trop fort

encore une petite question sur une partie de code à insérer sur la même feuille

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("TEST_NL"), Target) Is Nothing And Target.Count = 1 Then
For Each c In Range("TEST_NL")
If UCase(c.Value) = UCase(Target.Value) And c.Row <> Target.Row And c.Value <> Empty Then
réponse = MsgBox("Le n° de licence de la personne que vous voulez saisir figure déjà dans la cellule : " & c.Address & Chr$(10) _
, vbInformation, "DETECTION DOUBLON")
Application.EnableEvents = False
Target.Value = Empty
Target.Select
Application.EnableEvents = True
End If
Next c
End If
End Sub


Je détecte bien les doublons, sauf s'il sont sur la même ligne

exemple C6 = 120 et J = 120 ne détecte pas le doublon

Les cellules concernées par les doublons sont :

C6;C8;C10,J6;J10;J12

Mille fois merci et vive le forum
 

Discussions similaires

Statistiques des forums

Discussions
312 655
Messages
2 090 571
Membres
104 579
dernier inscrit
christelleduport@hotmail.