msgbox

msgbox - VB/VBA/VBS - Programmation

Marsh Posté le 30-08-2007 à 20:59:12    

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

Reply

Marsh Posté le 30-08-2007 à 20:59:12   

Reply

Marsh Posté le 30-08-2007 à 22:02:14    

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

Reply

Marsh Posté le 30-08-2007 à 22:17:27    

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
 

Reply

Marsh Posté le 30-08-2007 à 22:40:58    

effectivement au lieu de b1 mets A2

Reply

Marsh Posté le 30-08-2007 à 22:48:18    

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+

Reply

Marsh Posté le 30-08-2007 à 22:48:32    

dis moi si a marche bien

Reply

Marsh Posté le 30-08-2007 à 22:57:07    

ç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

Reply

Marsh Posté le 30-08-2007 à 23:00:31    

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

Reply

Marsh Posté le 31-08-2007 à 20:45:54    

mets sur cjoint ton fichier si tu ve bien

Reply

Marsh Posté le 31-08-2007 à 20:47:22    

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
Reply

Marsh Posté le 31-08-2007 à 20:47:22   

Reply

Marsh Posté le 31-08-2007 à 20:56:32    

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

Reply

Marsh Posté le 31-08-2007 à 21:52:07    

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 ...

Reply

Marsh Posté le 31-08-2007 à 22:53:20    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed