Probème de gestion de stocks (un de plus désolé)
Bonjour à tous,
Voilà plusieurs jours que je m’acharne à faire sous VBA un simple système de gestion de stock pour mon asso,.
Et là je suis perdu, mon niveau en programmation étant proche de 0..... -10 a peu près^^.
Bref voilà mon problème.
Je dois faire une gestion sur trois feuilles simultanées, j'ai réussi à faire un petit userform qui me permet de choisir entre ces feuilles, mais là je suis bloqué pour la saisie.
Après j'ai aussi le problème de la gestion des stocks à proprement parler.
Il faudrait que je puisse sur un seul formulaire prospecter dans les trois feuilles, et modifier les quantités en conséquences.
Voilà une semaine que je patauge.
Merci pour toutes les bonnes volontés.........
Bonjour,
Les bonnes volontés ont besoin de ton fichier pour t'aider !
Bonjour,
Sans fichier, à mon humble avis, tu ne risques pas d'avoir beaucoup de réponses...
Désolé pour l'oublie, je pensais avoir réussi à correctement joindre mon fichier, mais il c'est avéré qu'il était trop gros, je viens d'ajouter une version plus léger, mais tout aussi brouillon.
Soyez prévenu en programmation je ne vaux rien.
Et encore merci de m'avoir fait remarquer le manque de fichier.
Alors merci a ceux qui ont télécharger mon fichier.
Je sais qu'il est pourri, j'ai tenté d'en faire un autre plus simple mais me basant sur une seule feuille de base de donnée, avec un tableau pour pouvoir me servir le la fonction tri des tableaux excel, ce qui me permet de ne pas à avoir à multiplier les feuilles.
Mais je me heurte à deux problèmes, le premier, faire fonctionner mon userform, j'ai réussi en tâtonnant à la faire fonctionner de manière sporadique,
L = Sheets("Base de donnée").Range("a65536").End(xlUp).Row + 1
Cette ligne me résiste, parfois elle envoie le résultat dans la feuille menu.
Et aussi j'aimerai pouvoir envoyer les résultats dans le tableau de la feuille base de donnée, et la c'est plus dur pour moi.
Je verrai après pour la partie gestion de stocks une fois que j'aurai réglé ce problème de la base de donée.
Encore merci
Bon j'ai réussi à avoir un formulaire stable, mais le problème c'est que les données rentrées dans le formulaire ne vont dans la bonne feuille enfin sauf si je suis déjà positionné sur la feuille quand je test avec "exécuter userform". Et comme mon bouton qui appel mon formulaire se trouve sur une autre feuille toutes mes données vont sur la feuille d'ou j'appel l'userform et non dans ma base de données, j'ai bien sur pensé avoir mal indiqué le chemin.........
Là je bloque
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
Set Ws = Worksheets("base de donnee")
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 8
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub
Private Sub CommandButton2_Click()
If MsgBox("Etes-vous certain de vouloir modifier cette référence ?", vbYesNo, "Demande de confirmation") = vbYes Then
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 8
If Me.Controls("TextBox" & I).Visible = True Then
Ws.Cells(Ligne, I + 1) = Me.Controls("TextBox" & I)
End If
Next I
End If
With Ws.Range("D2:d10")
.NumberFormat = "0"
.Value = .Value
End With
End Sub
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 8
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
Next I
End Sub
Private Sub CommandButton3_Click()
Dim L As Integer
If MsgBox("Etes-vous certain de vouloir INSERER cette nouvelle référence ?", vbYesNo, "Demande de confirmation") = vbYes Then
L = Worksheets("base de donnee").Range("a65536").End(xlUp).Row + 1 '
Range("A" & L).Value = ComboBox1
Range("B" & L).Value = TextBox1
Range("C" & L).Value = TextBox2
Range("D" & L).Value = TextBox3
Range("E" & L).Value = TextBox4
Range("F" & L).Value = TextBox5
Range("G" & L).Value = TextBox6
Range("H" & L).Value = TextBox7
Range("I" & L).Value = TextBox8
End If
With Ws.Range("D2:d10")
.NumberFormat = "0"
.Value = .Value
End With
MsgBox ("Référence insérée dans la base de donnée")
Unload Me
UserForm1.Show
End SubBonjour,
il faut préciser la feuille de destination :
(..)
with Worksheets("base de donnee")
L = .Range("a65536").End(xlUp).Row + 1 '
.Range("A" & L).Value = ComboBox1
.Range("B" & L).Value = TextBox1
.Range("C" & L).Value = TextBox2
.Range("D" & L).Value = TextBox3
.Range("E" & L).Value = TextBox4
.Range("F" & L).Value = TextBox5
.Range("G" & L).Value = TextBox6
.Range("H" & L).Value = TextBox7
.Range("I" & L).Value = TextBox8
end with
(...)Bonjour et merci de votre réponse.
Il me semble que j'ai préciser ma feuille de destination
(....)
L = Worksheets("base de donnee").Range("a65536").End(xlUp).Row + 1 '
Range("A" & L).Value = ComboBox1
Range("B" & L).Value = TextBox1
Range("C" & L).Value = TextBox2
(.....)
J'ai essayé de la renommer, de remplacer les espaces par des traits d'écrire sheets ou worksheets("base de donnee")
re,
j'ai oublié un peu de code pour mon With :
with Worksheets("base de donnee")ensuite le point devant les objets Range fait toute la différence
Malheureusement non ça ne change rien à mon problème, cela va toujours sur ma première feuille et non dans ma base de donnée
Mais merci quand même
Oup's j'avais oublié de mettre les points devant les autres Range et CA MARCHE.......MERCIIIIIIIIII
sick a écrit :Malheureusement non ça ne change rien à mon problème, cela va toujours sur ma première feuille et non dans ma base de donnée
Mais merci quand même
montre ton code modifié .. S.V.P ...
Bonjour et bon dimanche à toutes et à tous.
pour répondre au post de jean.jy
sick a écrit :Malheureusement non ça ne change rien à mon problème, cela va toujours sur ma première feuille et non dans ma base de donnée
Mais merci quand même
Oup's j'avais oublié de mettre les points devant les autres Range et CA MARCHE.......MERCIIIIIIIIII
Option Explicit
Dim Ws As Worksheet
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub CommandButton5_Click()
Unload Me
UserForm.Show
End Sub
Private Sub Label1_Click()
End Sub
Private Sub Label10_Click()
End Sub
Private Sub Label2_Click()
End Sub
Private Sub UserForm_Initialize() 'à l'initialisation de l'userform
Dim J As Long 'déclare la variable J
Dim I As Integer
Set Ws = Sheets("base de donnee")
With Me.ComboBox1
For J = 2 To Ws.Range("E" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("E" & J)
Next J
End With
For I = 1 To 8
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub
Private Sub CommandButton2_Click()
If MsgBox("Etes-vous certain de vouloir modifier ce produit ?", vbYesNo, "Demande de confirmation") = vbYes Then
Dim ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 8
If Me.Controls("TextBox" & I).Visible = True Then
Ws.Cells(ligne, I + 1) = Me.Controls("TextBox" & I)
End If
Next I
End If
With Ws.Range("D2:d10")
.NumberFormat = "0"
.Value = .Value
End With
End Sub
Private Sub ComboBox1_Change()
Dim ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 9
Me.Controls("TextBox" & I) = Ws.Cells(ligne, I + 1)
Next I
End Sub
Sub FORMULAIRE()
UserForm1.Show vbModeless '(*)
End Sub
Private Sub CommandButton3_Click()
Dim L As Integer
If MsgBox("Etes-vous certain de vouloir INSERER cette nouvelle référence ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
With Worksheets("base de donnee")
L = .Range("a65536").End(xlUp).Row + 1 '
.Range("A" & L).Value = TextBox1
.Range("B" & L).Value = TextBox2
.Range("D" & L).Value = TextBox3
.Range("E" & L).Value = ComboBox1
.Range("F" & L).Value = TextBox4
.Range("G" & L).Value = TextBox5
.Range("H" & L).Value = TextBox6
.Range("I" & L).Value = TextBox7
.Range("J" & L).Value = TextBox8
.Range("K" & L).Value = TextBox9
End With
End If
With Ws.Range("D2:d10")
.NumberFormat = "0"
.Value = .Value
' Affiche une boîte de message
MsgBox ("Référence insérée dans la base de donnée")
Unload Me
UserForm1.Show
End With
End Sub
Private Sub CommandButton4_Click()
Dim L As Long
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
L = Me.ComboBox1.ListIndex + 2
Ws.Rows(L).Delete
End SubJe suis maintenant à la recherche d'un petit code simple à installer pour gérer ma base de donnée à l'aide d'un userform, Il s'agit d'ajouter ou d'enlever des quantités. Si c'est possible il faudrait que cette userform est deux champs de recherches, un pour les références, un pour la description. Et l'idéal serait qu'a chaque mouvement, cela compléte une autre feuille (dans mon code: historique) avec date, reférence, description et les plus ou moins.......
J'ai bien vu des codes (trop compliqués pour moi) sur le net, et quand je les applique ça bug.
j'ai mis à jour mon fichier en y incorporant le bout de code qui devrait marcher, mais je trouve face à plusiseurs problèmes (cause de ma méconnaissance du VBA)
Option Explicit
Dim Ws As Worksheet
Sub FORMULAIRE()
UserForm2.Show vbModeless
End Sub
Private Sub CommandButton1_Click() [u](Dans cette partie, je ne vois pas où il va prendre les descriptions ou références dans la base de donnée)[/u]
lig = ComboBox1.ListIndex + 3
If lig < 3 Then Exit Sub
If Len(ComboBox1.Value) = 0 Then Exit Sub
lig = ComboBox2.ListIndex + 3
If lig < 3 Then Exit Sub
If Len(ComboBox2.Value) = 0 Then Exit Sub
Cells(lig, 4).Value = Cells(lig, 4).Value + CByte(TextBox1.Value) - CByte(TextBox2.Value)
Sheets("historiques").Select
derlig = Range("a65000").End(xlUp).Row + 1
Cells(derlig, 1) = Now
Cells(derlig, 2) = ComboBox1.Value
Cells(derlig, 3) = TextBox1.Value
Cells(derlig, 4) = TextBox2.Value
Sheets("base de donnee").Select
ComboBox1.ListIndex = -1
ComboBox2.ListIndex = -1
TextBox1.Value = 0
TextBox2.Value = 0
End Sub
Private Sub CommandButton2_Click()
UserForm1.Hide
End Sub
Private Sub Label3_Click()
End Sub
Private Sub Label4_Click()
End Sub
Private Sub Label5_Click()
End Sub
Private Sub UserForm_Initialize()
Me.TexBox3 = Sheets("base de donnee").Range("H1:H60000")
End Sub
Private Sub UserForm_Activate()
derlig = Range("b3").End(xlDown).Row
ComboBox1.Clear
For I = 3 To derlig
ComboBox1.AddItem Cells(I, 2).Value
Next
TextBox1.Value = 0
TextBox2.Value = 0
End Sub