Bonjour à tous les experts,
Je rencontre un petit souci avec le code vba ci-dessous. Le principe de la macro est qu'avant toute sauvegarde :
On parcourt toutes les lignes de données dont la colonne A est renseignée et si l'une de la colonne F est vide.
On affiche une inputbox pour chaque cellule G vide correspondante en cas d'annulation, on ne sauvegarde pas .
J'aimerais la modifier, comme suit :
On parcourt toutes les lignes de données dont la colonne B est renseignée et si l'une de la colonne F est vide.
On affiche une inputbox pour chaque cellule G vide correspondante en cas d'annulation, on ne sauvegarde pas.
Je vous joins le fichier excel associé
Merci d'avance,
Je rencontre un petit souci avec le code vba ci-dessous. Le principe de la macro est qu'avant toute sauvegarde :
On parcourt toutes les lignes de données dont la colonne A est renseignée et si l'une de la colonne F est vide.
On affiche une inputbox pour chaque cellule G vide correspondante en cas d'annulation, on ne sauvegarde pas .
J'aimerais la modifier, comme suit :
On parcourt toutes les lignes de données dont la colonne B est renseignée et si l'une de la colonne F est vide.
On affiche une inputbox pour chaque cellule G vide correspondante en cas d'annulation, on ne sauvegarde pas.
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not ThisWorkbook.Saved Then
Select Case MsgBox("Voulez-vous enregistrer ce Classeur ?", vbQuestion + vbYesNoCancel)
Case vbYes: ThisWorkbook.Save
Case vbCancel: Cancel = True
Case vbNo: ThisWorkbook.Saved = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Ligne As Range
Dim Sh As Worksheet
Dim Comment As Variant
Set Sh = Worksheets("Carte de ctrl")
Sh.Activate
For Each Ligne In Sh.Range("A35:O" & Sh.Cells(Rows.Count, "A").End(xlUp).Row).Rows
If WorksheetFunction.CountIf(Ligne.Columns("F:F"), "<>") < 1 Then
If Ligne.Columns("G") = vbNullString Then
ActiveWindow.ScrollRow = Ligne.Row
Ligne.Select
Do: Comment = InputBox( _
"Un commentaire est obligatoire" & vbLf & _
"pour le n° de lot " & Ligne.Columns("D"), "Valeur(s) manquante(s) pour la ligne n° " & Ligne.Columns("A"))
Loop While Comment = "" Or Comment = " " Or Comment = " " Or Comment = "." Or Comment = ".." Or Comment = "..." Or Comment = " " Or Comment = " " Or Comment = " " Or Comment = False
Application.EnableEvents = False
Ligne.Columns("G").Value = Comment
Application.EnableEvents = True
End If
End If
Next
Set Sh = Nothing
End Sub
Private Sub Workbook_Open()
Worksheets("Carte de ctrl").Protect "2230", UserInterfaceOnly:=True
End Sub
Je vous joins le fichier excel associé
Merci d'avance,