Excel: Empêcher impression si cellule pas remplie
Stephane
-
Stephane -
Stephane -
Bonjour,
J'ai fait quelques recherches, mais n'ai malheureusement pas trouvé de solution à mon problème. Raison pour laquelle je demande ici.
J'ai un document Excel avec un bouton qui imprime et enregistre automatiquement mon document.
J'aimerai, que
si cellule A2 est remplie
il est obligatoire de remplir B2 -> Si B2 pas rempli -> Opération annulée avec message "Veuillez remplir B2"
Il est obligatoire de remplir C2 -> Si C2 pas rempli -> Opération annulée avec message "Veuillez remplir C2"
Il est obligatoire de remplir D2 -> Si D2 pas rempli -> Opération annulée avec message "Veuillez remplir D2"
Il est obligatoire de remplir F2 -> Si F2 pas rempli -> Opération annulée avec message "Veuillez remplir F2"
Il est obligatoire de remplir G2 -> Si G2 pas rempli -> Opération annulée avec message "Veuillez remplir G2"
J'ai mis une ligne par colonne, car j'aimerai pouvoir personnalisez mon texte d'erreur en fonction de l'information manquante.
En vous remerciant d'avance de votre aide
Bonne soirée
J'ai fait quelques recherches, mais n'ai malheureusement pas trouvé de solution à mon problème. Raison pour laquelle je demande ici.
J'ai un document Excel avec un bouton qui imprime et enregistre automatiquement mon document.
Sub imprimer_enregistrer()
Sheets("Form").PrintOut copies:=1
ActiveWorkbook.SaveAs Filename:= _
"C:\XXXX" & Format(Date, "yyyy.mm.dd") & " " & Format(Time, "hh-mm") & " " & Range("=Données!C2") & ".xlsm"
Application.Quit
End Sub
J'aimerai, que
si cellule A2 est remplie
il est obligatoire de remplir B2 -> Si B2 pas rempli -> Opération annulée avec message "Veuillez remplir B2"
Il est obligatoire de remplir C2 -> Si C2 pas rempli -> Opération annulée avec message "Veuillez remplir C2"
Il est obligatoire de remplir D2 -> Si D2 pas rempli -> Opération annulée avec message "Veuillez remplir D2"
Il est obligatoire de remplir F2 -> Si F2 pas rempli -> Opération annulée avec message "Veuillez remplir F2"
Il est obligatoire de remplir G2 -> Si G2 pas rempli -> Opération annulée avec message "Veuillez remplir G2"
J'ai mis une ligne par colonne, car j'aimerai pouvoir personnalisez mon texte d'erreur en fonction de l'information manquante.
En vous remerciant d'avance de votre aide
Bonne soirée
A voir également:
- Excel: Empêcher impression si cellule pas remplie
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel trier par ordre croissant chiffre - Guide
4 réponses
Bonjour,
Une facon de faire:
Une facon de faire:
Sub imprimer_enregistrer()
Cel_Vide1 = Application.CountIf(Range("B2:D2"), "") 'nombre de cellules vides
Cel_Vide2 = Application.CountIf(Range("F2:G2"), "") 'nombre de cellules vides
Cel_Vide = Cel_Vide1 + Cel_Vide2
If Cel_Vide = 0 Then
Sheets("Form").PrintOut copies:=1
ActiveWorkbook.SaveAs Filename:= _
"C:\XXXX" & Format(Date, "yyyy.mm.dd") & " " & Format(Time, "hh-mm") & " " & Range("=Données!C2") & ".xlsm"
Application.Quit
Else
If Range("B2") = "" Then
Cel = "B2"
ElseIf Range("C2") = "" Then
Cel = "C2"
ElseIf Range("D2") = "" Then
Cel = "D2"
ElseIf Range("F2") = "" Then
Cel = "F2"
ElseIf Range("G2") = "" Then
Cel = "G2"
Else
End If
Range(Cel).Select
Response = MsgBox("Veuillez remplir la cellule " & Cel & " svp!", vbCritical, "Cellule NON remplie")
End If
End Sub
Bonjour,
Merci pour votre aide, cela fonctionne.
Je n'ai malheureusement pas été très explicite dans ma demande.
J'aimerai que cela fonctionne exactement de la même manière, mais sur toute la colonne de A2 à A33
Ex: Si A7 rempli -> Obligation de remplir B7;C7;D7;F7;G7
Désolé pour cet oubli.
Stéphane
Merci pour votre aide, cela fonctionne.
Je n'ai malheureusement pas été très explicite dans ma demande.
J'aimerai que cela fonctionne exactement de la même manière, mais sur toute la colonne de A2 à A33
Ex: Si A7 rempli -> Obligation de remplir B7;C7;D7;F7;G7
Désolé pour cet oubli.
Stéphane
Re,
Sub imprimer_enregistrer()
If Not Cell_Vide Then
Sheets("Form").PrintOut copies:=1
ActiveWorkbook.SaveAs Filename:= _
"C:\XXXX" & Format(Date, "yyyy.mm.dd") & " " & Format(Time, "hh-mm") & " " & Range("=Données!C2") & ".xlsm"
Application.Quit
End If
End Sub
Function Cell_Vide() As Boolean
With Worksheets("Form")
For Lig = 2 To 33
Cel_Vide = 0
Cel_Vide1 = 0
Cel_Vide2 = 0
If .Cells(Lig, 1) <> "" Then
Cel_Vide1 = Application.CountIf(.Range("B" & Lig & ":D" & Lig), "") 'nombre de cellules vides
Cel_Vide2 = Application.CountIf(.Range("F" & Lig & ":G" & Lig), "") 'nombre de cellules vides
Cel_Vide = Cel_Vide1 + Cel_Vide2
If Cel_Vide <> 0 Then
If .Range("B" & Lig) = "" Then
Cel = "B" & Lig
ElseIf .Range("C" & Lig) = "" Then
Cel = "C" & Lig
ElseIf .Range("D" & Lig) = "" Then
Cel = "D" & Lig
ElseIf .Range("F" & Lig) = "" Then
Cel = "F" & Lig
ElseIf .Range("G" & Lig) = "" Then
Cel = "G" & Lig
Else
End If
.Range(Cel).Select
Response = MsgBox("Veuillez remplir la cellule " & Cel & " svp!", vbCritical, "Cellule NON remplie")
Cell_Vide = True
Exit Function
End If
End If
Next Lig
End With
Cell_Vide = False
End Function