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.

13classeur1.xlsm (202.06 Ko)

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 Sub

Bonjour,

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 Sub

Je 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
Rechercher des sujets similaires à "probeme gestion stocks desole"