Incrémentation d'un stock [Résolu]

Signaler
Messages postés
15
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
24 novembre 2011
-
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
-
Bonjour a tous

Je débute sur VBA donc soyez indulgent
Voila je vous expose mon problème
Je suis en cours de développement d une base de donnée reprenant et l'incrémentation et la décrémentation d'un stock.
J'ai trouver un code sur un précédant post mais je n 'arrive pas à l adapter a ma situation je vous mais le code pour mieux comprendre :


Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ERROR
Dim Message As String, Valeur As Long

With Target
Select Case .Address(False, False)
Case Is = "A1", "C1"
GoTo SUITE
Case Else
Exit Sub
End Select

SUITE:
Application.EnableEvents = False

If .Address(False, False) = "A1" Then
Valeur = .Value
Message = "Valider la saisie de " & Valeur & " en " & .Address(False, False)
If MsgBox(Message, vbYesNo + vbDefaultButton2) = vbNo Then GoTo FIN
Range("B1").Value = Range("B1").Value + Valeur

ElseIf .Address(False, False) = "C1" Then
Valeur = .Value
Message = "Valider la saisie de " & Valeur & " en " & .Address(False, False)
If MsgBox(Message, vbYesNo + vbDefaultButton2) = vbNo Then GoTo FIN
With Range("B1")
If .Value < Valeur Then
Message = "Attention : stock négatif"
If MsgBox(Message, vbYesNo + vbDefaultButton2) = vbNo Then GoTo FIN
End If
.Value = .Value - Valeur
End With
End If

FIN: .Value = Empty
End With

Application.EnableEvents = True

Exit Sub
ERROR: MsgBox Err.Description: Resume FIN
End Sub


Ce code marche très bien mais uniquement pour les cellule A1,B1, C1 et j aimerai le faire fonctionner de C2 a H70 (A1 : la ou son saisie les nouvelles entrées) et additionné de (J2 a O70) (case B2 du code) et donc de Q2 a V70 (case B3 du code)

Gspr avoir été assez claire
Cordialement Rémi

25 réponses

Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Non vraiment je n'y comprend plus riens.
Tu passes du coq à l’âne en oubliant que nous ne somme pas à coté de toi (On voudrais aussi être en Australie mais non) !!!

J'ai repris le code que je t'ai poster et j'ai mis dans des fonction

Public Sub ChekCase()
  Dim num As Single
  num = 1
  For Each valeur In Range("A1:A90")
    If valeur <> "" Then SUITE CInt(valeur), num
    num = num + 1
  Next
End Sub
Public Sub SUITE(valeur As Integer, num As Single)
 Range("A" & num).Activate
 If vbOK = MsgBox("Valider la saisie de " & valeur & " en " & ActiveCell.Address(False, False), vbOKCancel) Then
  ActiveCell.Offset(0, 9) = ActiveCell.Offset(0, 9) + valeur
 End If
End Sub


Comme cela ta use from n'a plus qu'a appeller la fonction ChekCase.

Si tu veux plus d'aide il va faloire:

1) prendre une chose après l'autre.
2) expliquer la situation
3) être claire sur le code que tu postes

Le tout avec de la cohérence dans les propos.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Bé !
1) Te voilà maintenant avec un double "post" et en plus, toujours pas dans la section VBA ! et toujours sans code indenté et- entre balises code !
2) je t'ai de toute manière répondu (utilise la méthode intersect) !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
15
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
24 novembre 2011

OK donc l'objet de ta reponse??
Je suis sur ce problème depuis ce matin (je suis en australie actuellement) et je dois dire que ta réponse ne m'est pas d'une très grande aide.
Je n'arrive pas a solutionné mon problème quelqu'un a t'il une solution
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
As-tu oui ou non ouvert, comme demandé, ton aide VBA sur le mot Intersect ?
As-tu lu ?
As-tu regardé l'exemple donné ?
Montre-nous le code que tu as au moins tenté sur ces bases !
C'est à ce prix, que tu auras mon aide, qui ne sera pas simplement un bout de code à copier/coller (cette manière de procéder n'étant ni ma tasse de thé, ni d'une utilité réelle).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Tu est en Australie!!!! Comme tu as de la chance !!!!!!

Bref, pour savoir si je peut t'aider je voudrais savoir si j'ai bien compris.

Tu voudrais mettre une valeur sur la case A1 par exemple 5. Augmenter les valeurs de J2 a O70 de 5. Aussi tu voudrais que cela soit fait de Q2 a V70.

Les autres cellules je ne comprends pas leurs utilité. Mais suis juste ou non?
Messages postés
15
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
24 novembre 2011

En gros c pour la gestion d un stock ds A2 je saisi 5 je le place dans J2 et la valeur ds A2 disparait si je rep oui a mon message. Après ds A2 je ressaisi la valeur 5 ou 6, J2 prend la valeur 10 ou 11.
Et je voudrai faire ca pour A3 A4 A5 jusque F70. et mettre ces valeurs ds J2 J3 J4 J5 jusqu'a O70.

Le but de cette manœuvre étant de remplir manuellement le stock et de pas toujours devoir additionner le stock précédant. j ai essayé le calcul itératif mais si la valeur n'est pas remise a zéro alors le stock continu toujours de s additionner bref.
Messages postés
15
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
24 novembre 2011

dsl ucfoutu de pas avoir rep je suis entrain d'essayé Intersect mais ya un truc k je pig pas argument 1 as rang c bien argument 1 par ex A2 as rang J2?? je le place comment et ou dans mon code je le remplace parcase if??
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Encore une question.
Tu veux que l’utilisateur clique sur A2 mette une valeur puis clique sur A1 ou C2 pour que lancer les fonctions ?
Messages postés
14733
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
145
Bonjour,

J'ai déplacé le sujet dans la bonne catégorie, merci à l'avenir d'y faire attention.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
15
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
24 novembre 2011

non non juste il rentre la valeur sur A2 et un message dit "valider la saisie" et juste si tu dit oui le stock est incrémenter. Ds le code ci dessus la fonction marche tres bien. la valeur saisie dans A1 incrémente B1 j aimerai etendre ca de A2 a F70 c tout
Messages postés
14733
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
145
Bonjour,

Quel est donc le code utilisé actuellement ?
Voir le point 2 de ma signature.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
15
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
24 novembre 2011

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ERROR
Dim Message As String, Valeur As Long

With Target
Select Case .Address(False, False)
Case Is = "A1", "C1"
GoTo SUITE
Case Else
Exit Sub
End Select

SUITE:
Application.EnableEvents = False

If .Address(False, False) = "A1" Then
Valeur = .Value
Message = "Valider la saisie de " & Valeur & " en " & .Address(False, False)
If MsgBox(Message, vbYesNo + vbDefaultButton2) = vbNo Then GoTo FIN
Range("B1").Value = Range("B1").Value + Valeur

ElseIf .Address(False, False) = "C1" Then
Valeur = .Value
Message = "Valider la saisie de " & Valeur & " en " & .Address(False, False)
If MsgBox(Message, vbYesNo + vbDefaultButton2) = vbNo Then GoTo FIN
With Range("B1")
If .Value < Valeur Then
Message = "Attention : stock négatif"
If MsgBox(Message, vbYesNo + vbDefaultButton2) = vbNo Then GoTo FIN
End If
.Value = .Value - Valeur
End With
End If

FIN: .Value = Empty
End With

Application.EnableEvents = True

Exit Sub
ERROR: MsgBox Err.Description: Resume FIN
End Sub 
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Je me suis permis de reprendre ton code et de faire ce qui suit. Si tu as des question ou des bugs dis le moi

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Application.Intersect(Target, Range("A1:A70")) Is Nothing Then
     SUITE Target.Address(False, False), InputBox("Entrer la valeur", "saisie")
  End If
End Sub
Public Sub SUITE(adresselecte As String, Valeur As String)
 If vbOK = MsgBox("Valider la saisie de " & Valeur & " en " & ActiveCell.Address(False, False), vbOKCancel) Then
  ActiveCell.Offset(0, 9) = ActiveCell.Offset(0, 9) + Valeur
 End If
 
End Sub


P.S. je me suis basé sur ta réponse

En gros c pour la gestion d un stock ds A2 je saisi 5 je le place dans J2 et la valeur ds A2 disparait si je rep oui a mon message. Après ds A2 je ressaisi la valeur 5 ou 6, J2 prend la valeur 10 ou 11.
Et je voudrai faire ca pour A3 A4 A5 jusque F70. et mettre ces valeurs ds J2 J3 J4 J5 jusqu'a O70.
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Zut! je voulais mettre

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Application.Intersect(Target, Range("A2:A70")) Is Nothing Then
     SUITE InputBox("Entrer la valeur", "saisie")
  End If
End Sub
Public Sub SUITE(Valeur As String)
 If vbOK = MsgBox("Valider la saisie de " & Valeur & " en " & ActiveCell.Address(False, False), vbOKCancel) Then
  ActiveCell.Offset(0, 9) = ActiveCell.Offset(0, 9) + Valeur
 End If
 
End Sub

Messages postés
15
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
24 novembre 2011

Merci du coup de main!!
Derniere petite question est til possible de faire disparaitre tout les dialogue genre tu rentre la valeur est c'est fait automatiquement? j'ai essayé

Code Visual Basic :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Application.Intersect(Target, Range("A2:A70")) Is Nothing Then
     SUITE InputBox("Entrer la valeur", "saisie")
  End If
End Sub
Public Sub SUITE(Valeur As String)

  ActiveCell.Offset(0, 9) = ActiveCell.Offset(0, 9) + Valeur

 
End Sub



Mais l'imputbox de départ (entrer la valeur saise reste active et je ne sais pas la faire disparaitre.
Messages postés
15
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
24 novembre 2011

Après avoir fait quelque essai sur mon fichier,il semble y avoir quelque problème. Je m'explique les cellule A2 a A70 peuvent sont rempli automatiquement par un userform. dans le cas d'un assemblage de plusieurs pièces, mon userform incrémente le stock a plusieurs endroit simultanément.
Ex : Une voiture est composé de roue de porte d'un moteur....
En A1 les roues en A2 le moteur en A3 les portes. Si je vend un moteur alors aucun probleme mais si je vend une voiture alors les cellules A1 A2 A3 seront rempli simultanément et avec ce code ca pose problème.

J"aimerai si il est possible pouvoir saisir plusieurs cellule en meme temps sans avoir d'imputbox qui me demande de confirmer car mon userform le fait deja précédemment. Je sais pas si je suis assez claire??
Je suis vraiment désolé je débute et la je dois dire que je sais pas comment m'en sortir!! Merci d'avance
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Tu y a passé la nuit!!!! Mince !!!!!

Bon. Le problème et que tu n'explique pas clairement le "scénario" de ton application.

Donc dis moi clairement (comme à un gosse). Comment tu souhaites que le fichier soit utilisé.
Messages postés
15
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
24 novembre 2011

ok le fichier est utilisé par un userform. Donc tu peux saisir A1 et A21 en meme temps, le but et de juste copier "a1 et A21" et de le mettre ds j1 et j 21 et de resit a1 et a21
dsl g debute ds vba et j ai besoin de votre aide
Messages postés
15
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
24 novembre 2011

Personne n'a une idée?? Le scénario est peut ètre mal expmiqué dite moi??
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Tu crois que tu t'es mal expliqué ?
Tout est pourtant très clair ! Par exemple ceci :
Donc tu peux saisir A1 et A21 en meme temps, le but et de juste copier "a1 et A21" et de le mettre ds j1 et j 21 et de resit a1 et a21

Mais si tu crois que ça ne l'est peut-être pas, nul ne te donnera tort ===>> et dans ce cas ===>> réexplique clairement


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient