XL 2019 message d'alerte si une cellule est vide

CYNO68

XLDnaute Junior
Bonjour a tous

je suis en train de réaliser un bon de commande sur EXCEL et je sèche sur un code ...
ce document comporte 64 lignes
pour chaque ligne on va renseigner la référence, la quantité puis le prix va s'afficher automatiquement
SI on souhaite faire une promotion au client et que l'on force le prix on doit indiquer le "type de promotion" sur la même ligne
j'aimerai qu'un message d'alerte apparaisse si l'opérateur force le prix et oublie d'indiquer la raison
En bref, l'idée est
Si la cellule X est pleine et que la cellule Y est vide alors il faut un message d'erreur indiquant ce qu'il faut renseigner la cellule Y
cela doit se répéter pour les 64 lignes du bon de commande
j espère avoir été suffisamment clair
merci d’avance !
 

CYNO68

XLDnaute Junior
Bonjour
pourriez vous me donner plus de précisions quant a la différence entre la 2 et la 3 ?
en fait ce qui va varier entre les postes ce sera le début du chemin car on utilise un dossier partagé DROPBOX pour déposer les fichiers donc une fois qu'on rentrera dans la DROPBOX ce sera la même terminaison
 

CYNO68

XLDnaute Junior
Bonjour
j'ai besoin maintenant d'obliger l'utilisateur a remplir la cellule G13
j'aimerai qu'il y ai un message a l'ouverture du classeur et que l'on reste bloqué sur la cellule G13 tant qu'elle n'est pas remplie
Une fois celle ci remplie il faut aller à la cellule A18
pouvez vous m'aider ?
merci
 

job75

XLDnaute Barbatruc
Bonsoir CYNO68,

A priori il s'agit d'un nouveau fichier puisque sur le fichier du post #13 G13 est fusionnée dans F10.

Merci de le joindre, faut-il contrôler comme précédemment les autres cellules en colonne G ?

A+
 

CYNO68

XLDnaute Junior
Bonjour
effectivement
désolé
de plus savez vous comment par exemple mettre la cellule en couleur (orange par exemple) temps que l'utilisateur ne l'as pas rempli ?
merci
 

Pièces jointes

  • exemple de commande excel CYNNOTEK v2.xlsm
    314.8 KB · Affichages: 9

job75

XLDnaute Barbatruc
Bonjour CYNO68,

Votre fichier en retour avec dans ThisWorkbook :
VB:
Private Sub Workbook_Open()
With Sheets("COMMANDE").[G13]
    .Parent.Visible = xlSheetVisible 'si la feuille est masquée
    Application.Goto .Cells
    .Value = .Value 'lance la macro Worksheet_Change
End With
End Sub
et dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
ScrollArea = "" 'libère la sélection
Set c = [G13]
If Not Intersect(Target, c) Is Nothing Then _
    If Not IsEmpty(c) Then [A18].Select Else c.Select: ScrollArea = c.Address: MsgBox c.Address(0, 0) & " doit être remplie...": Exit Sub
For Each c In [H18:H119] 'plage adaptable au besoin
    If IsEmpty(c) And (IsNumeric(CStr(c(1, 6))) Or CStr(c(1, 6)) = "REPRISE RMA TEK1.0") _
        Then c.Select: ScrollArea = c.Address: Exit Sub 'bloque la sélection
Next
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [G13]) Is Nothing Then Worksheet_Change ActiveCell 'lance la macro
End Sub
A+
 

Pièces jointes

  • exemple de commande excel CYNNOTEK v2.xlsm
    319.8 KB · Affichages: 5

CYNO68

XLDnaute Junior
Bonjour
je reviens vers vous car il me faut rajouter des éléments
je souhaites maintenant qu' un message apparaisse si la personne qui saisie la commande saisie une date inférieure au délai minimum puis que l'on reste sur la cellule H7 pour que la personne saisisse une bonne date
voici le code que j'ai fait, il permet l'ouverture de la fenêtre mais pas de rester sur le cellule
pouvez vous m'aider ?
merci
1607074490095.png


Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Dim d As Range
ScrollArea = "" 'libère la sélection
Set c = [G13]
If Not Intersect(Target, c) Is Nothing Then _
If Not IsEmpty(c(1)) Then [H7].Select Else c.Select: ScrollArea = c.Address: MsgBox "MERCI DE SPECIFIER LE TYPE DE COMMANDE POUR CONTINUER": Exit Sub
Set d = [H7]
If Not Intersect(Target, d) Is Nothing Then _
If Not IsEmpty(d(1)) Then [H7].Select Else d.Select: ScrollArea = d.Address: MsgBox "MERCI DE RENSEIGNER UNE DATE DE LIVRAISON": Exit Sub

If Not Intersect(Target, d) Is Nothing Then _
If Target < [H5] Then MsgBox "ATTENTION !!! La date est inférieure au délai minimum"


For Each c In [H18:H119] 'plage adaptable au besoin
If IsEmpty(c) And (IsNumeric(CStr(c(1, 6))) Or c(1, 6) = "05-REPRISE RMA TEK1.0") _
Then c.Select: ScrollArea = c.Address: Exit Sub 'bloque la sélection
Next
ScrollArea = "" 'libère la sélection

End Sub
 

job75

XLDnaute Barbatruc
Bonjour CYNO68,

Il faut modifier les 2 macros de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
ScrollArea = "" 'libère la sélection
Set c = [G13]
If Not Intersect(Target, c) Is Nothing Then _
    If Not IsEmpty(c) Then Set Target = [H7] Else c.Select: ScrollArea = c.Address: MsgBox "MERCI DE SPECIFIER LE TYPE DE COMMANDE POUR CONTINUER": Exit Sub
Set c = [H7]
If Not Intersect(Target, c) Is Nothing Then _
    If IsDate(c) And c >= [H5] Then [A18].Select Else c.Select: ScrollArea = c.Address: MsgBox "LA DATE DE LIVRAISON DOIT ÊTRE AU PLUS TÔT " & UCase([H5].Text): Exit Sub
For Each c In [H18:H119] 'plage adaptable au besoin
    If IsEmpty(c) And (IsNumeric(CStr(c(1, 6))) Or CStr(c(1, 6)) = "05-REPRISE RMA TEK1.0") _
        Then c.Select: ScrollArea = c.Address: Exit Sub 'bloque la sélection
Next
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [G13,H7]) Is Nothing Then Worksheet_Change ActiveCell 'lance la macro
End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 174
Messages
2 085 951
Membres
103 058
dernier inscrit
florentLP