XL 2021 Recherche solution vba

bendv

XLDnaute Nouveau
Bonjour à tous.

Voici mon cas de figure,

Dans la colonne A2,A3,A4 nous avons le type de travail à réaliser.
A partir de A10 j'ai la répartition qui est faite jusque la ok

Pour la ligne 10 si en cellule A10 j'ai "C" une des 2 cellules AB10 ou AC10 doivent être remplie plus AD10 ou AE10 si pas rempli impossible de fermer excel
Pour la ligne 10 si en cellule A11 j'ai "A" une des 2 cellules X11 ou Y11 doivent être remplie plus AD11 ou AE11 si pas rempli impossible de fermer excel
et ainsi de suite pour les autres lignes

avec un messageBox " veuillez remplir les cellules vides"

Merci d'avance
 

Pièces jointes

  • Classeur1 test.xlsx
    16.1 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Bendv,
Un essai en PJ avec :
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Cancel = False: Flag = 0
    DL = Cells(Cells.Rows.Count, "A").End(xlUp).Row
    For L = 10 To DL
        If Cells(L, "A") = "c" And (Cells(L, "AB") & Cells(L, "AC") = "" Or Cells(L, "AD") & Cells(L, "AE") = "") Then
                Flag = 1
        ElseIf Cells(L, "A") = "a" And (Cells(L, "X") & Cells(L, "Y") = "" Or Cells(L, "AD") & Cells(L, "AE") = "") Then
                Flag = 1
        End If
    Next L
    If Flag = 1 Then
        Cancel = True
        MsgBox "Veuillez remplir les cellules vides"
    End If
End Sub
J'ai rajouté deux MFC en colonne AF :
Code:
=ET($A10="c";OU($AB10&$AC10="";$AD10&$AE10=""))
=ET($A10="a";OU($X10&$Y10="";$AD10&$AE10=""))
 

Pièces jointes

  • Classeur1 test (1).xlsm
    21.1 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Une version plus rapide si le tableau est grand puisqu'il suffit qu'une ligne soit mal remplie pour refuser de sortir :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Cancel = True: Flag = 1
    For L = 10 To Cells(Cells.Rows.Count, "A").End(xlUp).Row
        If Cells(L, "A") = "c" Then
            If (Cells(L, "AB") & Cells(L, "AC") = "" Or Cells(L, "AD") & Cells(L, "AE") = "") Then
                Flag = 0: Exit For
            End If
        ElseIf Cells(L, "A") = "a" Then
            If (Cells(L, "X") & Cells(L, "Y") = "" Or Cells(L, "AD") & Cells(L, "AE") = "") Then
                Flag = 0: Exit For
            End If
        End If
    Next L
    If Flag = 0 Then
        Cancel = True
        MsgBox "Veuillez remplir les cellules vides"
    Else
        Cancel = False
    End If
End Sub
 

Pièces jointes

  • Classeur1 test (V2).xlsm
    21.4 KB · Affichages: 0

Statistiques des forums

Discussions
312 211
Messages
2 086 294
Membres
103 171
dernier inscrit
clemm