Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2715 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  msgbox

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

msgbox

n°1606537
myelmehdi
Posté le 30-08-2007 à 20:59:12  profilanswer
 

bonsoir,
j'ai un petit problème de programmation sur VBA. Je suis entrain d'améliorer un fichier au boulot en mettant des macros. Mon problème est le suivant:
dans un ce dit fichier, dans la cellule A1 j'ai un menu déroulant qui me permet de choisir un nombre de bouteille 0 à 1000 (avec des pas de 100). En A2 j'ai un menu déroulant ki me permet de choisir le volume de la bouteille 1l; 1,5l; ou 2l. ce que je cherche c'est de pouvoir faire mon choix , mais que ça m'affiche un message d'erreur si "le nombre de bouteille"*"le volume de la bouteille" dépasse 1500l et que ça ne valide pas mon choix.
Merci pour vos réponse. et j'espère que j'étais claire.
cordialement

mood
Publicité
Posté le 30-08-2007 à 20:59:12  profilanswer
 

n°1606548
86vomito33
Posté le 30-08-2007 à 22:02:14  profilanswer
 

Sub test()
nbre = Range("A1" ).Value
vol = Mid(Range("A2" ), 1, Len(Range("B1" )) - 1)
If vol * nbre >= 1500 Then
MsgBox "volume trop important, recommencer"
End If
End Sub

n°1606555
myelmehdi
Posté le 30-08-2007 à 22:17:27  profilanswer
 

merci pour ton aide.
cependant la formule ne marche pas, elle bloque au niveau de la 3ème phrase: vol = Mid(Range("A2" ), 1, Len(Range("B1" )) - 1) . ç m'affiche "argument ou appel de procédure incorrect"
je ne comprends pas pourquoi dans la formule y a B1.
je voulais savoir aussi si ce test s'effectura automatiquement à chaque fois que je modifie le nombre de bouteille [A1]??
merci
 

n°1606562
86vomito33
Posté le 30-08-2007 à 22:40:58  profilanswer
 

effectivement au lieu de b1 mets A2

n°1606565
86vomito33
Posté le 30-08-2007 à 22:48:18  profilanswer
 

tu mets ca ds ta feuille 1
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
nbre = Range("A1" ).Value
vol = Mid(Range("A2" ), 1, Len(Range("A2" )) - 1)
    If vol * nbre >= 1500 Then
    MsgBox "volume trop important, recommencer"
    End If
End If
End Sub
 
a+

n°1606566
86vomito33
Posté le 30-08-2007 à 22:48:32  profilanswer
 

dis moi si a marche bien

n°1606571
myelmehdi
Posté le 30-08-2007 à 22:57:07  profilanswer
 

ça ne marche toujours pas. cette fois-çi  elle bloque au niveau de la 4ème phrase: "incompatibilté de type".
sinon moi j'ai trouvé une petite astuce; en A3 je calcule A2*A1.et j'ai créé cette macro :

Code :
  1. Sub test()
  2. If [A3] > 1500 Then
  3. MsgBox "volume supérieur à la production"
  4. Else: End If
  5. End Sub


 
par contre ce test ne s'effectue pas automatiquement. je voudrai que ça se fasse à chaque fois que je touche A1 ouA2

n°1606574
myelmehdi
Posté le 30-08-2007 à 23:00:31  profilanswer
 

c la 5 ème ligne qui bloque :If vol * nbre >= 1500 Then  
 
et ce test se lance pour n'importe quel changement dans la feuille, alorsque moi je le ve jsute si on change A1 ou A2. ça se complique?? dsl

n°1606983
86vomito33
Posté le 31-08-2007 à 20:45:54  profilanswer
 

mets sur cjoint ton fichier si tu ve bien

n°1606984
86vomito33
Posté le 31-08-2007 à 20:47:22  profilanswer
 

86vomito33 a écrit :

tu mets ca ds ta feuille 1

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" or target.address="$A$2" Then
nbre = Range("A1" ).Value
vol = Mid(Range("A2" ), 1, Len(Range("A2" )) - 1)
    If vol * nbre >= 1500 Then
    MsgBox "volume trop important, recommencer"
    End If
End If
End Sub
 
a+


Message édité par 86vomito33 le 31-08-2007 à 20:49:02
mood
Publicité
Posté le 31-08-2007 à 20:47:22  profilanswer
 

n°1606990
86vomito33
Posté le 31-08-2007 à 20:56:32  profilanswer
 

le code est bon si tu as bien mis 1L, 1.5L, 2L comme tu la expliquer ds ton premier message
si j'enleve les L j'obtiens la meme erreur
 
si tu veux pa mettre les L remplace par vol=range("A2" ).value

n°1607011
ju65
Posté le 31-08-2007 à 21:52:07  profilanswer
 

86vomito33 a écrit :

le code est bon si tu as bien mis 1L, 1.5L, 2L comme tu la expliquer ds ton premier message
si j'enleve les L j'obtiens la meme erreur
 
si tu veux pa mettre les L remplace par vol=range("A2" ).value


 
Il a peut-être mis un format de cellule de type "*L"
Dans ce cas il me semble que la cellule affiche "*L" et contient en fait seulement la valeur "*"
A voir ...

n°1607027
myelmehdi
Posté le 31-08-2007 à 22:53:20  profilanswer
 

Bonsoir,
merci à tous pour votre aide. Enfin ça marche, ci-dessous le code que j'ai mis:

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Address = "$A$1" Then
  3.     If [A1] * [A2] > 1500 Then
  4. [K4] = 0
  5. MsgBox "Le volume total est supérieur à la capacité de production. Veuillez choisir une quantité de bouteilles inférieure ou égale à  " & 1500 / [A2]
  6.     Else: End If
  7.     End If
  8. End Sub


 
bonne soirée


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  msgbox

 

Sujets relatifs
[VBS] Msgbox non bloquantemsgbox [VBA]
[Access] Pb avec fonction Date et MsgBox Error$MsgBox (réponse automatique)
Problème avec Vlookup et question sur MsgBoxMsgBox[resolu]
Problème avec MsgBox[pigé] faire revenir la saisie de l'inputbox dans msgbox suivantes
[vbs] mettre la msgbox au premier plan tout le temps[pigé][réglé]comment faire un retour à une msgbox
Plus de sujets relatifs à : msgbox


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)