XL 2016 VBA Msgbox

Yücel

XLDnaute Junior
Bonjour à toutes et à tous,

Encore une fois j'ai besoin de votre aide. J'ai trouvé quelque piste à mon problème (mixage entre 2 code vba)

Je souhaiterai lorsque la colonne 14 (intitulé équilibre) indique "FAUX" alors le msgbox affiche un message du genre : Merci d'équilibrer l'écriture num (et là prendre le numéro d'écriture de la colonne 3 et de la ligne précédente).

Voici le code :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Equilibre As Range

For Each Equilibre In ActiveSheet.Column = 14

Valeur = Cells(Equilibre.Row, 3)

If Equilibre = "Faux" Then

MsgBox " Merci d'équilibrer l'écriture num … " & Chr(10) & " " & Chr(10) & " ( " & Valeur & " )", vbExclamation, " IMPORTANT ! "

End If

Next

End Sub


Avec mes remerciements anticipés !
 
Solution
Bonsoir Yücel,
Un essai en PJ avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    DL = Range("N65500").End(xlUp).Row
    If Not Intersect(Target, Range("C6:C1" & DL)) Is Nothing Then  ' Début de plage à adapter
        If Cells(Target.Row, "N") = False Then
            If Target.Row = 7 Then
                MsgBox " Merci d'équilibrer l'écriture de la première ligne", vbExclamation, " IMPORTANT ! "
            Else
                MsgBox " Merci d'équilibrer l'écriture numéro  " & Cells(Target.Row - 1, 3), vbExclamation, " IMPORTANT ! "
            End If
        End If
    End If
Fin:
End Sub
Mais impossible d'indiquer la ligne au dessus ... si c'est la première...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Yücel,
Vous pourriez essayer ceci, à mettre dans la feuille considérée :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("N1:N1000")) Is Nothing Then  ' Plage à adapter
        If Target = False Then
            MsgBox " Merci d'équilibrer l'écriture num … " & Chr(10) & " " & Chr(10) & _
                    " ( " & Cells(Target.Row, 3) & " )", vbExclamation, " IMPORTANT ! "
        End If
    End If
Fin:
End Sub
J'ai supposé que FAUX était le résultat d'une formule donc False pour le VBA, et non une chaine de caractères.
 

Yücel

XLDnaute Junior
Bonsoir Sylvanu !!

FAUX est bien le résultat d'une formule.

Ça fonctionne mais que lorsqu'on entre dans la cellule (via F2) puis on clique sur le bouton "entrée".
il m’aurait fallut le msgbox à chaque apparition de la valeur "faux" sans entrer dans la cellule. (ci-joint fichier)

Merci encore à vous pour votre aide !

Très bonne soirée à vous.
 

Pièces jointes

  • TUTO 11.xlsm
    17 KB · Affichages: 10

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Yücel,
Il faut mettre l'exécution de la macro sur les cellules qui provoquent vrai/faux.
Soit ici sur la colonne A. En modifiant :
VB:
If Not Intersect(Target, Range("A10:A1000")) Is Nothing Then  ' Plage à adapter
        If Cells(Target.Row, "N") = False Then
Activation sur modification colonne A, et examen de la valeur en colonne N.
 

Pièces jointes

  • TUTO 11.xlsm
    17 KB · Affichages: 3

Yücel

XLDnaute Junior
Bonsoir Sylvanu !

Avant tout un grand merci !

On se rapproche beaucoup de ce que je souhaite :D je suis désolé mais encore deux petits détails à résoudre si possible.

Vous trouverez dans le fichier ci-joint ma demande.

Très bonne soirée à vous.
 

Pièces jointes

  • TUTO 11.xlsm
    17.4 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Yücel,
Un essai en PJ avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    DL = Range("N65500").End(xlUp).Row
    If Not Intersect(Target, Range("C6:C1" & DL)) Is Nothing Then  ' Début de plage à adapter
        If Cells(Target.Row, "N") = False Then
            If Target.Row = 7 Then
                MsgBox " Merci d'équilibrer l'écriture de la première ligne", vbExclamation, " IMPORTANT ! "
            Else
                MsgBox " Merci d'équilibrer l'écriture numéro  " & Cells(Target.Row - 1, 3), vbExclamation, " IMPORTANT ! "
            End If
        End If
    End If
Fin:
End Sub
Mais impossible d'indiquer la ligne au dessus ... si c'est la première ligne.
Donc dans ce cas je n'indique que : " Merci d'équilibrer l'écriture de la première ligne"
 

Pièces jointes

  • TUTO 11 (2).xlsm
    17.6 KB · Affichages: 4

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
308

Statistiques des forums

Discussions
312 095
Messages
2 085 250
Membres
102 837
dernier inscrit
CRETE