Macro VBA double condition
Résolu/Fermé
linette44
Messages postés
23
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
20 mai 2008
-
15 avril 2007 à 23:23
cocodix - 7 déc. 2007 à 22:21
cocodix - 7 déc. 2007 à 22:21
A voir également:
- Macro VBA double condition
- Double ecran - Guide
- Whatsapp double sim - Guide
- Excel cellule couleur si condition texte - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
3 réponses
Bonjour Linette,
comme je peux comprendre dans ton message, la condition concerne textbox11 (d'ailleurs je ne vois qu'une seule condition) donc ta condition doit tenir compte de sa valeur et pas de la valeur des autres textbox :
Voila ce que je propose dans un premier temps :
if textbox11 = "" then
msgbox "pas de n° d'article..."
textbox11.SetFocus >>> redonne la main
else
reste de ton code
end if
dis moi si j'ai bien compris ce que tu veux ?
A+ masterseb
comme je peux comprendre dans ton message, la condition concerne textbox11 (d'ailleurs je ne vois qu'une seule condition) donc ta condition doit tenir compte de sa valeur et pas de la valeur des autres textbox :
Voila ce que je propose dans un premier temps :
if textbox11 = "" then
msgbox "pas de n° d'article..."
textbox11.SetFocus >>> redonne la main
else
reste de ton code
end if
dis moi si j'ai bien compris ce que tu veux ?
A+ masterseb
linette44
Messages postés
23
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
20 mai 2008
3
16 avril 2007 à 21:31
16 avril 2007 à 21:31
Bonsoir Masterseb,
Voici ma saisie :
if textbox11 = "" then
msgbox "pas de n° d'article..."
textbox11.SetFocus
else
TextBox15.Value = TextBox14.Value * TextBox13.Value
end if
Le problème : lorsque je valide même en ayant saisi une valeur dans textbox11, j'ai la msgbox qui apparaît.
Comme je n'ai pas réussi à mettre la dernière conditon
Else: TextBox15.Value = "" j'ai un beug plus loin dans le programme.
Si j'explique mon problème "en français" :
si la textbox13 est différente de vide alors ma textbox11 doit être différente de vide, sinon j'affiche la msgbox et je peux reprendre ma saisie.
Si la textbox 13 et la 11 sont différentes de vide alors ma textbox15 correspond à la textbox13.value*textbox14.value. (textbox14 alimenté auto par la textbox11)
Si la texbox13 est vide, alors textbox15 reste vide. Cette commande est importante, sinon un beug apparaît plus loin dans le programme.
Lorsque j'ai saisi la valeur de la textbox11 et la textbox13, j'utilise un bouton qui copie les valeurs dans les lignes du tableau de mon userform et remet la ligne à 0.
Il s'agit d'une sorte de bon de commande.
A+ linette 44
Voici ma saisie :
if textbox11 = "" then
msgbox "pas de n° d'article..."
textbox11.SetFocus
else
TextBox15.Value = TextBox14.Value * TextBox13.Value
end if
Le problème : lorsque je valide même en ayant saisi une valeur dans textbox11, j'ai la msgbox qui apparaît.
Comme je n'ai pas réussi à mettre la dernière conditon
Else: TextBox15.Value = "" j'ai un beug plus loin dans le programme.
Si j'explique mon problème "en français" :
si la textbox13 est différente de vide alors ma textbox11 doit être différente de vide, sinon j'affiche la msgbox et je peux reprendre ma saisie.
Si la textbox 13 et la 11 sont différentes de vide alors ma textbox15 correspond à la textbox13.value*textbox14.value. (textbox14 alimenté auto par la textbox11)
Si la texbox13 est vide, alors textbox15 reste vide. Cette commande est importante, sinon un beug apparaît plus loin dans le programme.
Lorsque j'ai saisi la valeur de la textbox11 et la textbox13, j'utilise un bouton qui copie les valeurs dans les lignes du tableau de mon userform et remet la ligne à 0.
Il s'agit d'une sorte de bon de commande.
A+ linette 44
Bonsoir Linette, voici la transcription exacte de ce que tu m'a écris en français. J'espère que c'est ce dont tu as besoin.
If TextBox13.Value <> "" Then
If TextBox11.Value <> "" Then
TextBox15.Value = TextBox13.Value * TextBox14.Value
Else
MsgBox "pas de n° d'article"
End If
else
textbox15.Value = ""
Textbox11.SetFocus
End If
je n'ai bien entendu pas tenu compte de la copie des valeurs dans ton tableau et de la remise à zéro.
a+ seb
If TextBox13.Value <> "" Then
If TextBox11.Value <> "" Then
TextBox15.Value = TextBox13.Value * TextBox14.Value
Else
MsgBox "pas de n° d'article"
End If
else
textbox15.Value = ""
Textbox11.SetFocus
End If
je n'ai bien entendu pas tenu compte de la copie des valeurs dans ton tableau et de la remise à zéro.
a+ seb
linette44
Messages postés
23
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
20 mai 2008
3
>
masterseb
17 avril 2007 à 22:59
17 avril 2007 à 22:59
Bonsoir Masterseb,
J'ai donc inséré les nouvelles instructions :
quand je ne saisis pas de valeur dans textbox11, j'ai le message, c'est donc OK.
par contre, quand je reviens dans ma textbox11, que je fais ma saisie et que je clique sur le bouton OK qui vide la ligne et copie les valeurs dans mon tableau, j'ai un beug et la textbox15 n'est pas alimentée
Voici les instructions appliquées au bouton OK
Private Sub CommandButton3_Click()
Application.ScreenUpdating = False
Dim var1 As Currency
Dim var2 As Currency
' Recherche la ligne vide et recopie les valeurs de la ligne de saisie
For i = 16 To 241
If Commande("textbox" & i).Value = "" Then
Controls("TextBox" & i).Text = TextBox11.Text
Controls("TextBox" & i + 1).Text = TextBox12.Text
Controls("TextBox" & i + 2).Text = TextBox13.Text
Controls("TextBox" & i + 3).Text = TextBox14.Text
Controls("TextBox" & i + 4).Text = TextBox15.Text
' Calcule le total de la commande
var1 = TextBox15.Value>>>>>> LE BEUG EST REPERE ICI
var2 = TextBox246.Value
TextBox246.Value = var1 + var2
J'essaie d'améliorer ce programme qui a été réalisée par une autre personne mais n'ayant que quelle notion de VBA, c'est pas facile...
Merci de ton aide.
A+
Linette 44
J'ai donc inséré les nouvelles instructions :
quand je ne saisis pas de valeur dans textbox11, j'ai le message, c'est donc OK.
par contre, quand je reviens dans ma textbox11, que je fais ma saisie et que je clique sur le bouton OK qui vide la ligne et copie les valeurs dans mon tableau, j'ai un beug et la textbox15 n'est pas alimentée
Voici les instructions appliquées au bouton OK
Private Sub CommandButton3_Click()
Application.ScreenUpdating = False
Dim var1 As Currency
Dim var2 As Currency
' Recherche la ligne vide et recopie les valeurs de la ligne de saisie
For i = 16 To 241
If Commande("textbox" & i).Value = "" Then
Controls("TextBox" & i).Text = TextBox11.Text
Controls("TextBox" & i + 1).Text = TextBox12.Text
Controls("TextBox" & i + 2).Text = TextBox13.Text
Controls("TextBox" & i + 3).Text = TextBox14.Text
Controls("TextBox" & i + 4).Text = TextBox15.Text
' Calcule le total de la commande
var1 = TextBox15.Value>>>>>> LE BEUG EST REPERE ICI
var2 = TextBox246.Value
TextBox246.Value = var1 + var2
J'essaie d'améliorer ce programme qui a été réalisée par une autre personne mais n'ayant que quelle notion de VBA, c'est pas facile...
Merci de ton aide.
A+
Linette 44
masterseb
>
linette44
Messages postés
23
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
20 mai 2008
18 avril 2007 à 01:30
18 avril 2007 à 01:30
Bonsoir Linette, le bug qui se passe à la ligne var1 est tout à fait logique si textbox15 n'a pas été alimenté. Ce qui est beaucoup plus bizarre, c'est que la double condition fonctionne chez moi et alimente le textbox15 sans problème et dans tous les cas de figure. Donc je vais te poser la question suivante : cette double condition est-elle dans ton événement commandbutton3_click ou plutot dans l'événement textbox13_exit. J'ai besoin de savoir l'événement dns lequel il se trouve.
Cordialement. Seb
Cordialement. Seb
linette44
Messages postés
23
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
20 mai 2008
3
>
masterseb
18 avril 2007 à 02:06
18 avril 2007 à 02:06
Bonsoir Seb,
Cette double condition n'existait pas et c'est ce que j'essaie de mettre en place.
Je l'ai placée dans l'évènement textbox13
Cordialement
Linette44
Cette double condition n'existait pas et c'est ce que j'essaie de mettre en place.
Je l'ai placée dans l'évènement textbox13
Cordialement
Linette44
masterseb
>
linette44
Messages postés
23
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
20 mai 2008
18 avril 2007 à 12:31
18 avril 2007 à 12:31
C'est bien ce qu'il me semblait. la double condition se trouve dans un événement du textbox13 et c'est bien pour ça que textbox15 ne s'alimente pas automatiquement. En fait, il s'agit d'une incohérence dans ta programmation.
Preuve : fait les opérations suivantes et tu verras :
1) oublie de mettre qque chose dans le textbox11
2) tu reçois le message en sortant du textbox13
3) tu ajoute une référence dans le textbox11
4) tu retourne dans le textbox13 et tu remet la même valeur qu'il y avait
5) tu quitte la textbox13 et tu verras que la textbox15 s'alimentera.
c'est du au fait que la double condition ne fonctionne qu'à la mise à jour ou à la sortie de ta textbox13.
lorsque tu remet à jour textbox11, tu dois, selon ta programmation, recommencer l'événement textbox13 pour vérifier si toutes les conditions sont remplies et alimenter textbox15.
Je cherche et je te recontacte pour savoir la meilleure solution à cette incohérence.
a+
Preuve : fait les opérations suivantes et tu verras :
1) oublie de mettre qque chose dans le textbox11
2) tu reçois le message en sortant du textbox13
3) tu ajoute une référence dans le textbox11
4) tu retourne dans le textbox13 et tu remet la même valeur qu'il y avait
5) tu quitte la textbox13 et tu verras que la textbox15 s'alimentera.
c'est du au fait que la double condition ne fonctionne qu'à la mise à jour ou à la sortie de ta textbox13.
lorsque tu remet à jour textbox11, tu dois, selon ta programmation, recommencer l'événement textbox13 pour vérifier si toutes les conditions sont remplies et alimenter textbox15.
Je cherche et je te recontacte pour savoir la meilleure solution à cette incohérence.
a+
Bonjour a tous,
Je n'arrive pas a avoir le code adequat pour mettre une barre de defilement verticale dans mon tableau, j'ai beau essaye depuis des jours, rien n'y fait et quand je mets un code ( trouve au hasard de mes recherches sur le net ), j'ai un fond blanc avec des ecritures dessus, et je ne peux meme pas y mettre mon texte, c'est si frustrant et je commence a en sortir avec des maux de tete serieux, j'ai essaye tant de fois sans succes, si l'un de vous peut m'aider et me donner le parfait code et aussi me dire ou il faudrait que je le fasse, j'en serai sincerement reconnaisssante .
Merci infiniment et a tres bientot j'espere.
Cocodix
Je n'arrive pas a avoir le code adequat pour mettre une barre de defilement verticale dans mon tableau, j'ai beau essaye depuis des jours, rien n'y fait et quand je mets un code ( trouve au hasard de mes recherches sur le net ), j'ai un fond blanc avec des ecritures dessus, et je ne peux meme pas y mettre mon texte, c'est si frustrant et je commence a en sortir avec des maux de tete serieux, j'ai essaye tant de fois sans succes, si l'un de vous peut m'aider et me donner le parfait code et aussi me dire ou il faudrait que je le fasse, j'en serai sincerement reconnaisssante .
Merci infiniment et a tres bientot j'espere.
Cocodix