Empêcher l'affichage d'un formulaire si une condition n'est pas remplie

  • Initiateur de la discussion Initiateur de la discussion Papirus
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

Papirus

Guest
Bonne nuit le forum

encore moi,

Je voudrais savoir comment empêcher l'affichage d'un formulaire si une condition n'est pas remplie.

Mon code:

Private Sub UserForm_Initialize()

Dim X As String

Dim Valeur1 As Variant
Dim Valeur As Variant
Dim nom1 As Range
Dim nom2 As Range

' concatene le nom de feuille dans laquelle la recherche sera faite.
Set nom1 = Workbooks("AnalyseDePerformance.xls").Worksheets("aa_MAJ_donnees").Range("a53")
Set nom2 = Workbooks("AnalyseDePerformance.xls").Worksheets("aa_MAJ_donnees").Range("b21")
X = nom1 & " " & nom2

' formate la feuil1 pour permettre de faire un filtre élaboré
Sheets("feuil1").Cells.Clear 'efface le contenu et le format de la feuil1
Workbooks("AnalyseDePerformance.xls").Worksheets(X).Range("b2").Copy ' Copie le mot Nom de la feuille dépassement
Workbooks("AnalyseDePerformance.xls").Sheets("feuil1").Range("a1").PasteSpecial xlPasteValues 'Colle le mot Nom dans la Feuil1
Workbooks("AnalyseDePerformance.xls").Worksheets(X).Range("c2").Copy ' Colle le mot Prénom de la feuille dépassement
Workbooks("AnalyseDePerformance.xls").Sheets("feuil1").Range("b1").PasteSpecial xlPasteValues 'Copie le mot Prénom dans la Feuil1
Workbooks("AnalyseDePerformance.xls").Worksheets(X).Range("A2:k2").Copy ' Copie les entêtes de colonne de la feuille dépassement
Workbooks("AnalyseDePerformance.xls").Sheets("feuil1").Range("a5:k5").PasteSpecial xlPasteValues ' colle les entêtes de colonne de la feuille dépassement

' Copie/Colle le nom et le prénom de l'agent sur la feuil1 en A2 et B2 pour compléter le critère
Workbooks("AnalyseDePerformance.xls").Worksheets("aAnalyse_Agents").Range("j4").Copy ' Copie le prénom de l'agent
Workbooks("AnalyseDePerformance.xls").Sheets("feuil1").Range("a2").PasteSpecial xlPasteValues 'Colle le prénom de l'agent
Workbooks("AnalyseDePerformance.xls").Worksheets("aAnalyse_Agents").Range("n4").Copy ' Copie le nom de l'agent
Workbooks("AnalyseDePerformance.xls").Sheets("feuil1").Range("b2").PasteSpecial xlPasteValues 'Colle le nom de l'agent


' vérifie si en A2 il y a eu saisie
Valeur = Sheets("Feuil1").Range("A2")
If Valeur = "" Then Sheets("Feuil1").Range("A2:z2") = "": Exit Sub

' s’il y a eu une saisie en A2, Exécute le critère
Worksheets("feuil1").Activate
Sheets(X).Range("A2:I2117").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("feuil1").Range("a1:a2"), CopyToRange:=Range("a5:I26"), Unique:= _
False
'teste si l'exécution du critère a donné un résultat
Valeur1 = Sheets("Feuil1").Range("A6")
'MsgBox Valeur1

' s'il n'y a pas de résultat, fermer le Userform Dépassement
If Valeur1 <> "" Then MsgBox " Il n'y a pas de dépassement pour cet Agent": Exit Sub


Text_Change
End Sub


Merci de votre aide,

Papirus
 
Bonjour fodjio, le forum

Voila mon code du sub Text_Change:

Private Sub Text_Change()

Dim cible3 As Integer
Dim cible4 As Double
Dim cible5 As Double
Dim cible5a As Integer
Dim cible6 As Double
Dim cible6a As Integer
Dim cible7 As Double
Dim cible7a As Integer
Dim cible8 As Double
Dim cible8a As Integer
Dim cible9 As Double
Dim cible9a As Integer
Dim cible10 As Double
Dim cible10a As Integer

cible3 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("h2")
cible4 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("g2")
cible5 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("o2")
cible5a = cible5 * 100
cible6 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("v2")
cible6a = cible6 * 100
cible7 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("w2")
cible7a = cible7 * 100
cible8 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("x2")
cible8a = cible8 * 100
cible9 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("y2")
cible9a = cible9 * 100
cible10 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("z2")
cible10a = cible10 * 100

TextBox49 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("a6")

MsgBox TextBox49
'If TextBox49 <> "" Then: Exit Sub


TextBox5 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("b6")
TextBox46 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("c6")

TextBox45 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("d6").Value, "hh:mm:ss")
TextBox44 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("e6").Value, "hh:mm:ss")
TextBox43 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("f6")
TextBox30 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("g6")
TextBox42 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("h6")
TextBox41 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("i6").Value, "yyyy-mm-dd")

TextBox50 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("d7").Value, "hh:mm:ss")
TextBox55 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("e7").Value, "hh:mm:ss")
TextBox54 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("f7")
TextBox51 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("g7")
TextBox53 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("h7")
TextBox52 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("i7").Value, "yyyy-mm-dd")

TextBox56 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("d8").Value, "hh:mm:ss")
TextBox61 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("e8").Value, "hh:mm:ss")
TextBox60 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("f8")
TextBox57 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("g8")
TextBox59 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("h8")
TextBox58 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("i8").Value, "yyyy-mm-dd")

TextBox62 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("d9").Value, "hh:mm:ss")
TextBox67 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("e9").Value, "hh:mm:ss")
TextBox66 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("f9")
TextBox63 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("g9")
TextBox65 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("h9")
TextBox64 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("i9").Value, "yyyy-mm-dd")

TextBox68 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("d10").Value, "hh:mm:ss")
TextBox73 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("e10").Value, "hh:mm:ss")
TextBox72 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("f10")
TextBox69 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("g10")
TextBox71 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("h10")
TextBox70 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("i10").Value, "yyyy-mm-dd")

TextBox74 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("d11").Value, "hh:mm:ss")
TextBox79 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("e11").Value, "hh:mm:ss")
TextBox78 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("f11")
TextBox75 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("g11")
TextBox77 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("h11")
TextBox76 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("i11").Value, "yyyy-mm-dd")

TextBox80 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("d12").Value, "hh:mm:ss")
TextBox85 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("e12").Value, "hh:mm:ss")
TextBox84 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("f12")
TextBox81 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("g12")
TextBox83 = Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("h12")
TextBox82 = Format(Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1").Range("i12").Value, "yyyy-mm-dd")




End Sub

Merci

Papirus
 
Oulà, bravo t'as battu le record du plus long message!!!

Avant tout 1ère leçon : l'instruction "WITH"

et ton code est (beaucoup) plus lisible

exemple ->
code:

Private Sub Text_Change()

Dim cible3 As Integer
Dim cible4 As Double
Dim cible5 As Double
Dim cible5a As Integer
Dim cible6 As Double
Dim cible6a As Integer
Dim cible7 As Double
Dim cible7a As Integer
Dim cible8 As Double
Dim cible8a As Integer
Dim cible9 As Double
Dim cible9a As Integer
Dim cible10 As Double
Dim cible10a As Integer

With Workbooks("AnalyseDePerformance.xls").Worksheets("feuil1")
cible3 = .Range("h2")
cible4 = .Range("g2")
cible5 = .Range("o2")
cible5a = cible5 * 100
cible6 = .Range("v2")
cible6a = cible6 * 100
cible7 = .Range("w2")
cible7a = cible7 * 100
cible8 = .Range("x2")
cible8a = cible8 * 100
cible9 = .Range("y2")
cible9a = cible9 * 100
cible10 = .Range("z2")
cible10a = cible10 * 100

TextBox49 = .Range("a6")

MsgBox TextBox49
'If TextBox49 <> "" Then: Exit Sub

TextBox5 = .Range("b6")
TextBox46 = .Range("c6")

TextBox45 = Format(.Range("d6").Value, "hh:mm:ss")
TextBox44 = Format(.Range("e6").Value, "hh:mm:ss")
TextBox43 = .Range("f6")
TextBox30 = .Range("g6")
TextBox42 = .Range("h6")
TextBox41 = Format(.Range("i6").Value, "yyyy-mm-dd")

TextBox50 = Format(.Range("d7").Value, "hh:mm:ss")
TextBox55 = Format(.Range("e7").Value, "hh:mm:ss")
TextBox54 = .Range("f7")
TextBox51 = .Range("g7")
TextBox53 = .Range("h7")
TextBox52 = Format(.Range("i7").Value, "yyyy-mm-dd")

TextBox56 = Format(.Range("d8").Value, "hh:mm:ss")
TextBox61 = Format(.Range("e8").Value, "hh:mm:ss")
TextBox60 = .Range("f8")
TextBox57 = .Range("g8")
TextBox59 = .Range("h8")
TextBox58 = Format(.Range("i8").Value, "yyyy-mm-dd")

TextBox62 = Format(.Range("d9").Value, "hh:mm:ss")
TextBox67 = Format(.Range("e9").Value, "hh:mm:ss")
TextBox66 = .Range("f9")
TextBox63 = .Range("g9")
TextBox65 = .Range("h9")
TextBox64 = Format(.Range("i9").Value, "yyyy-mm-dd")

TextBox68 = Format(.Range("d10").Value, "hh:mm:ss")
TextBox73 = Format(.Range("e10").Value, "hh:mm:ss")
TextBox72 = .Range("f10")
TextBox69 = .Range("g10")
TextBox71 = .Range("h10")
TextBox70 = Format(.Range("i10").Value, "yyyy-mm-dd")

TextBox74 = Format(.Range("d11").Value, "hh:mm:ss")
TextBox79 = Format(.Range("e11").Value, "hh:mm:ss")
TextBox78 = .Range("f11")
TextBox75 = .Range("g11")
TextBox77 = .Range("h11")
TextBox76 = Format(.Range("i11").Value, "yyyy-mm-dd")

TextBox80 = Format(.Range("d12").Value, "hh:mm:ss")
TextBox85 = Format(.Range("e12").Value, "hh:mm:ss")
TextBox84 = .Range("f12")
TextBox81 = .Range("g12")
TextBox83 = .Range("h12")
TextBox82 = Format(.Range("i12").Value, "yyyy-mm-dd")

End With

End Sub
 
ReBonjour fodjio ,

J'ai compris le message du with, j'ai fait mon devoir et nettoyé le code.

Merci de ta collaboration,

c'est un début pour moi.

Mais... je fais de gros efforts.

Le : Sub depassements() est dans un module et non dans la forme dépassement ? ok

Salut

Papirus
 
Bonne nuit fodjio et le forum,

C'est tranquille... ça dort bien

Au Québec c'est l'heure du diner...

J'ai terminé mon devoir.

La solution est dans le zip word attaché.

Si tu as des commentaire ou une façon profossionnel de faire sentez-vous bienvenue de le faire.

Un gros merci fodjio de m'avoir appris le with et de m'avoir orienté dans la bonne direction

Continue à bien dormir.... a+

Papirus
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
547
  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
692
Réponses
5
Affichages
813
Retour