variable à définir

  • Initiateur de la discussion Initiateur de la discussion news
  • 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 !

news

XLDnaute Impliqué
Bonjour à tous du forum,

J'ai un Userform avec un listbox

Dès qu'on clique sur le bouton "Fermez" d'un Userform, est d'abord affiché un label avant de fermez le Userform "Unload.Me".
Le label est visible si dans la colonne K de la feuille("data") est un montant négatif.
En cliquant une 2e fois sur le même bouton, le userform se ferme.

J'utilise le vba code suivant :

Private Sub CommandButton2_Click() ' button "Fermez"
Dim c As Range
With Worksheets("data")
For Each c In Sheets("data").Range("K6:K" & Range("K65536").End(xlUp).Row)
If c < 0 Then
Label22.Visible = True ' le texte "à vérifier" est visible
End If
Next c
Else
' ajouter boucle que le Userform se ferme si on clique une 2e fois sur le boutton"Fermez".
'Unload Me
End With

Comment définir la variable ou quel vba code est à ajouter que lorsqu'on clique une 2e fois sur le bouton "Fermez" que le Userform se ferme ?

Autre question est-ce plus rapide de vérifier les données de la listbox s'il y a un montant < 0 (dans la listbox se trouvent les montants de K6:K106) ou de vérifier par les données de la feuille ("data"),

merci d'avance d'avoir pris le temps de lire se sujet posté et d'éventuels astuces.

news
 
Dernière édition:
Re : variable à définir

Bonjour News,

Tu peux écrire je ta procédure comme ceci:

Code:
Private Sub CommandButton2_Click()  
[COLOR=yellowgreen]'Utilisation de la fonction de feuille excel NB.SI pour déterminer si au moins[/COLOR]
[COLOR=yellowgreen]' 1 cellule est inférieur à 0 pour rendre visible le Label22
[/COLOR] With Sheets("dépenses")
 Label22.Visible = Application.CountIf(.Range("K6:K" & .Range("K65536").End(xlUp).Row), "<0") > 0
 End With
[COLOR=yellowgreen]'Si le label n'est pas visible c'est qu'il n'y a aucune valeur <0 dans la colonne k6:kn donc on peut sortir
[/COLOR] If Not Label1.Visible Then Unload Me
End Sub

A+
 
Re : variable à définir

Re,

Je n'y ai pas pensé tout de suite mais voici qui est mieux:

Code:
Private Sub CommandButton2_Click()
'unload Me va appeler la procédure UserForm_QueryClose
Unload Me
End Sub
 
 
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
[COLOR=yellowgreen]'La condition ci-dessous permet de fermer la fenêtre par la croix de fermeture (en haut àdroite du userfom). C'est une sécurité en cas de problème. (facultatif mais attention aux erreur de codage)[/COLOR]
If CloseMode <> vbFormControlMenu Then
With Sheets("dépenses")
Label22.Visible = Application.CountIf(.Range("K6:K" & .Range("K65536").End(xlUp).Row), "<0") > 0
End With
[COLOR=yellowgreen]'Ici la variable Cancel de l'évènement QueryClose est mise à True ou False[/COLOR]
[COLOR=yellowgreen]'Suivant l'état du label. Cancel=True=on empêche la fermeture du userform[/COLOR]
Cancel = Label22.Visible
End If
End Sub
A+
 
Re : variable à définir

Bonjour à tous du forum,

Re:
La fonction "X" pour fermez Userform est déactivé. J'utilise le code suivant :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub

news
 
Dernière édition:
Re : variable à définir

Bonjour à tous du forum,

Re:
merci pour réponse, mais ce n'est pas exactement que la macro doit effectuer,

mais besoin si on clique une 2e fois sur le bouton"Fermez" que Userform se ferme(Unload.Me), même s'il y a des montants <0 dans Range("K6:106").

pour mieux expliquer les procédures si on clique 2 fois sur le bouton "Fermez", p.ex.:

Private Sub CommandButton2_Click()
'bouton "Fermez" 1ier click :
Msgbox("test")
" ' on a cliqué par après une 2e fois sur le boutton "Fermez" :
Msgbox("à vérifier")
Unload.Me
End Sub

news
 
Dernière édition:
Re : variable à définir

Bonjour à tous du forum,

j'ait testé et avec le code suivant et le bug est résolu si deux fois cliqué sur CommandButon8 :

Private Sub CommandButton2_Click()
With Worksheets("dépenses")
If CommandButton8.Visible = True Then
Unload Me
End If

For Each c In Sheets("dépenses").Range("K6:K" & Range("K65536").End(xlUp).Row)
If c < 0 Then
CommandButton8.Visible = True
End If
Next c
End With
End Sub
 
Dernière édition:
- 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

Discussions similaires

Réponses
16
Affichages
1 K
Retour