Je voudrais qu'une macro vérifie avant la fermeture et enregistrement de mon fichier que les cellules des colonnes de "A" à "R" ne contiennent pas de cellules vides. (par exemple les cellules en bleu)
NOMBREdeLIGNEdansleTABLEAU=Range("A" & Range("A" & Cells.Rows.Count).End(xlUp).Row).Row
For COLONNE = 1 to 18 'colonne A à R
For LIGNE = 2 to NOMBREdeLIGNEdansleTABLEAU
If cells (LIGNE,COLONNE)="" then
msgbx "La cellule " & COLONNE & LIGNE & " est vide"
end if
Next LIGNE
Next COLONNE
Bonsoir Bernard_SC et bienvenue, salut Soune26 ,
Tu vas te faire détester par tes camarades de jeux ...
A mettre dans ThisWorkbook
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim DerLigne As Integer
DerLigne = Feuil1.UsedRange.Rows.Count
If Evaluate("countblank(A1:R" & DerLigne & ")") > 0 Then
Cancel = True
MsgBox "Il reste des cellules vides !"
End If
End Sub
Bon courage
PS : Soune, avec 10 messages successifs (10 dans l'exemple, ça peux être 100 ...), ce ne sera plus détester, mais haïr ... !!
Bonsoir Bernard_SC et bienvenue, salut Soune26 ,
Tu vas te faire détester par tes camarades de jeux ...
A mettre dans ThisWorkbook
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim DerLigne As Integer
DerLigne = Feuil1.UsedRange.Rows.Count
If Evaluate("countblank(A1:R" & DerLigne & ")") > 0 Then
Cancel = True
MsgBox "Il reste des cellules vides !"
End If
End Sub
Bon courage
PS : Soune, avec 10 messages successifs (10 dans l'exemple, ça peux être 100 ...), ce ne sera plus détester, mais haïr ... !!
oups merci JNP, mais le fais de savoir quelle cellule est vide peut être utile!!!
alors je modifi
NOMBREdeLIGNEdansleTABLEAU=Range("A" & Range("A" & Cells.Rows.Count).End(xlUp).Row).Row
For COLONNE = 1 to 18 'colonne A à R
For LIGNE = 2 to NOMBREdeLIGNEdansleTABLEAU
If cells (LIGNE,COLONNE)="" then
msgbx "La cellule " & COLONNE & LIGNE & " est vide" exit sub
end if
Next LIGNE
Next COLONNE
ou alors pour avoir un message une fois la sub terminé
NOMBREdeLIGNEdansleTABLEAU=Range("A" & Range("A" & Cells.Rows.Count).End(xlUp).Row).Row
For COLONNE = 1 to 18 'colonne A à R
For LIGNE = 2 to NOMBREdeLIGNEdansleTABLEAU
If cells (LIGNE,COLONNE)="" then
VIDE= VIDE & " " & COLONNE & LIGNE
end if
Next LIGNE
Next COLONNE
msgbx "Les cellules " & VIDE & " sont vides!!"
Nettement mieux !
Après, la boucle peux être longue sur de gros fichiers, alors que l'utilisation de NB.VIDE est très rapide... Et n'empêche pas un .Find pour trouver la première cellule vide ...
Ça n'empêche que interdire la sauvegarde ou la fermeture, je ne suis pas pour ...
Une demande de confirmation, oui .
Bonne soirée