XL 2013 afficher un msgbox si une plage de données est vide mais avec une condition

jhibon80

XLDnaute Nouveau
bonjour,

j'ai besoin de faire afficher un msgbox si la plage de données allant de k6 à v6 est vide MAIS si A6 est non vide.

et répéter ceci pour chacune des lignes de mon tableau (dernière ligne n°90)

upload_2018-6-26_14-38-15.png
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Jhibon, bonjour le forum,

Peut-être comme ça :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
For I = 6 To DL 'boucle sur toutes les lignes I de 6 à DL
    'si la cellule en colonne A de la boucle n'est pas vide et le nombre de cellules vides des colonne K à V est égale à 12, message
    If O.Cells(I, "A").Value <> "" And Application.WorksheetFunction.CountBlank(O.Range(O.Cells(I, "K"), O.Cells(I, "V"))) = 12 Then MsgBox "Ligne " & I & " à completer !"
Next I 'prohaine ligne de la boucle
End Sub
 

jhibon80

XLDnaute Nouveau
Merci beaucoup Robert. puis je abuser encore?
ce message pourrait il apparaître lorsque l'on descend sur la ligne suivante.

en gros si en A6 je mets ma date et que je vais à la ligne du dessous sans avoir complété de K à V je veux que le message apparaisse.

je suis désolée je commence tout juste le VBA et je vois que c'est pas gagné!
 

jhibon80

XLDnaute Nouveau
Merci Robert.
là le message s'affiche quand tu passes d'une cellule à une autre sur la ligne 6. je vais etre chiante mais je l'aurai voulu à la fin de la ligne quand tu veux passer à la ligne suivante et quand tu selectionnes dans le tableau par exemple A7.
en résumé bloquer toute action si K6:V6 sont vides.
 

job75

XLDnaute Barbatruc
Re,

Fichier joint et cette macro :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range, cible As Range
If Target.Row < 6 Then Exit Sub
For Each c In Range("A6", Range("A" & Rows.Count).End(xlUp)(6))
    If c <> "" And c.Row <> Target.Row Then
        Set cible = c(1, 11).Resize(, 12) 'colonnes K à V
        If Application.CountA(cible) = 0 Then
            Application.EnableEvents = False 'désactive les évènements
            cible.Select
            Application.EnableEvents = True 'réactive les évènements
            MsgBox cible.Address(0, 0) & " à renseigner..."
            Exit For
        End If
    End If
Next
End Sub
Pas de message quand la ligne sélectionnée est celle qui est concernée par le contrôle.

A+
 

Pièces jointes

  • test conan(1).xlsm
    61.4 KB · Affichages: 16

Discussions similaires

Statistiques des forums

Discussions
312 149
Messages
2 085 771
Membres
102 970
dernier inscrit
JMaurice