XL 2010 probleme sur plusieurs conditions VBA

mikepers

XLDnaute Occasionnel
Bonjour !
je ne maitrise pas bien les multiples conditions. Pouvez vous m'aider à formuler ?
Le contexte (dans un USF ) : un combobox et une textbox.
Les conditions :
- si le CBX et vide et le le TBX =0 alors : message box specifique
- si le CBX est vide mais le TBX =1 alors : message spécifique
- si le CBX est renseigné mais le TBX =0 alors : message specifique
j'ai tenté sans résultat :

If ComboBox1.Value = "" And TextBox29.Value = 0 Then
MsgBox "sélectionner une salle et une lampe.", vbCritical + vbOKOnly, "Erreur"
Exit Sub
End If

If ComboBox1.Value = "" And TextBox29.Value = 1 Then
MsgBox "sélectionner une lampe.", vbCritical + vbOKOnly, "Erreur"
Exit Sub
End If

If ComboBox1.Value <> "" And TextBox29.Value = 0 Then
MsgBox "sélectionner une salle.", vbCritical + vbOKOnly, "Erreur"
Exit Sub
End If

comment cumuler les 3 conditions ?
Bien à vous
Michel
 

Caillou

XLDnaute Impliqué
Bonjour,

Essayes avec ElseIf (un truc dans le genre :)

If ComboBox1.Value = "" And TextBox29.Value = 0 Then
MsgBox "sélectionner une salle et une lampe.", vbCritical + vbOKOnly, "Erreur"
ElseIf ComboBox1.Value = "" And TextBox29.Value = 1 Then
MsgBox "sélectionner une lampe.", vbCritical + vbOKOnly, "Erreur"
ElseIf ComboBox1.Value <> "" And TextBox29.Value = 0 Then
MsgBox "sélectionner une salle.", vbCritical + vbOKOnly, "Erreur"
End If

Caillou
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Mike, bonjour le forum,

Ton code est correct mais il te faut supprimer le Exit Sub dans chaque condition qui empêche de vérifier les autres conditions. Ça deviendrait :

VB:
If ComboBox1.Value = "" And TextBox29.Value = 0 Then
MsgBox "sélectionner une salle et une lampe.", vbCritical + vbOKOnly, "Erreur"
End If
If ComboBox1.Value = "" And TextBox29.Value = 1 Then
MsgBox "sélectionner une lampe.", vbCritical + vbOKOnly, "Erreur"
End If
If ComboBox1.Value <> "" And TextBox29.Value = 0 Then
MsgBox "sélectionner une salle.", vbCritical + vbOKOnly, "Erreur"
End If
Exit Sub

[Édition]
Bonjour Caillou, nos posts se sont croisés...
 

Paf

XLDnaute Barbatruc
Bonjour mikepers, Caillou, Robert

un essai :
Code:
msg1 = IIf(ComboBox1.Value = "", " une salle ", "")
msg2 = IIf(TextBox29.Value = 1, "", " une lampe ")
If msg1 <> "" And msg2 <> "" Then msg3 = " et "
If msg1 <> "" Or msg2 <> "" Then 
    MsgBox "sélectionner " & msg1 & msg3 & msg2, vbCritical + vbOKOnly, "Erreur"
    exit sub
End if

A+
 

mikepers

XLDnaute Occasionnel
merci beaucoup pour ses réponses rapides !
cela a l'air de fonctionner mais hélas j'ai du code derrière qui semble bloquer..
La suite logique du code : si une de ses 3 condition est valide, alors on empeche l'execution du code suivant. Si les 3 condition ne sont pas validées, on passe à un autre message box de confirmation et on accepte l'insert dans la base de donnée.
La totalité de mon code ( sur un bouton ) :

Private Sub CommandButton3_Click()

On Error Resume Next
TextBox29.Value = (CDbl(TextBox22.Value) + CDbl(TextBox23.Value) + CDbl(TextBox24.Value) + CDbl(TextBox25.Value) + CDbl(TextBox26.Value) + CDbl(TextBox27.Value) + CDbl(TextBox28.Value))


If ComboBox1.Value = "" And TextBox29.Value = 0 Then
MsgBox "sélectionner une salle et une lampe.", vbCritical + vbOKOnly, "Erreur"
End If
If ComboBox1.Value = "" And TextBox29.Value = 1 Then
MsgBox "sélectionner une lampe.", vbCritical + vbOKOnly, "Erreur"
End If
If ComboBox1.Value <> "" And TextBox29.Value = 0 Then
MsgBox "sélectionner une salle.", vbCritical + vbOKOnly, "Erreur"
End If

' la suite du code

If MsgBox(" Valider la nouvelle lampe xénon ? ", vbQuestion + vbYesNo, " Confirmation ") <> vbYes Then
Exit Sub

End If

Application.ScreenUpdating = False
'rentree des donnees
If CheckBox1.Value = True Then
Sheets("salle1").Activate
End If
If CheckBox2.Value = True Then
Sheets("salle2").Activate
End If
If CheckBox3.Value = True Then
Sheets("salle3").Activate
End If
If CheckBox4.Value = True Then
Sheets("salle4").Activate
End If
If CheckBox5.Value = True Then
Sheets("salle5").Activate
End If
If CheckBox6.Value = True Then
Sheets("salle6").Activate
End If
If CheckBox7.Value = True Then
Sheets("salle7").Activate
End If

Dim x As Integer
x = Range("A32767").End(xlUp).Row + 1
Range("A" & x) = ComboBox1.Value
Range("B" & x) = TextBox9.Value
Range("C" & x) = TextBox20.Value
Range("K" & x) = CheckBox10.Value
Range("L" & x) = CheckBox9.Value
Range("M" & x) = CheckBox8.Value
Range("N" & x) = CheckBox13.Value

ComboBox1.Value = ""
TextBox20.Value = ""
TextBox9.Value = ""
CheckBox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = False
CheckBox4.Value = False
CheckBox5.Value = False
CheckBox6.Value = False
CheckBox7.Value = False
TextBox2.Value = ""
TextBox19.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""


Sheets("TABLE").Activate
Application.ScreenUpdating = True
End Sub
 

mikepers

XLDnaute Occasionnel
oui, le code passe mais le deuxième messagebox de validation apparait tout de suite après...
Il faudrait que si une des 3 conditions soit valide, on a un "exit sub". Si les 3 conditions ne sont pas validées, alors on passe au message de validation et le code suit son cours..
 

Paf

XLDnaute Barbatruc
re,

si j'ai bien compris , si la CBX="" ou la TBX =0 ou bien CBX="" et la TBX =0 alors on a un message d'alerte et on sort de la sub, sinon on continu le code.

Si c'est bien ça, c'est ce que fait ma proposition ????
J'ai peut être inversé lampe et salle ?

A+
 

Paf

XLDnaute Barbatruc
re,

avec le classeur, je ne comprend pas comment ça peut marcher:

la textbox29 est la somme des textbox22 à 28, qui devrait donner 0 ou 1 ( valeurs testées)

Or dans Private Sub ComboBox1_Change() on trouve
UserForm1.TextBox22.Value = Range("H" & i).Value
textbox29 n'est donc plus = 0 ou 1 !!!

A+
 

mikepers

XLDnaute Occasionnel
oui c'est une bidouille, au début je ne savais pas comment résoudre le problème :
si tous les checkbox sont false... Alors j'avais testé un retour de calcul sur la feuille excel même( d'ou le range ) pour renvoyer ensuite les données sur un textbox.. Puis j'ai finalement opté pour les textbox cachées...qui renvoient le calcul dans un autre textbox caché qui sert de référence ensuite. C'est de la bidouille à deux balles mais je m"en suis sorti comme ca
Désolé, code encore non nettoyé, c'est un fichier de travail en cours...

Il s'agit d'un gestionnaire de lampes xénon destinés à des projecteurs cinéma professionnels.
ENCORE MERCI et BRAVO.
Michel
 

Discussions similaires

Réponses
6
Affichages
227

Statistiques des forums

Discussions
312 088
Messages
2 085 201
Membres
102 816
dernier inscrit
bolivier