Mon formulaire bug et ferme Excel
Bonjour le groupe,
Depuis hier j'essaie de résoudre un problème mais en vainc
lorsque je veux ajouter un article à ma base de données, le programme bug et se ferme. je joint le fichier est ce que quelqu'un peux m'aider.
Voici le chemin,
Introduire un mouvement
introduire un mouvement stock
et Ajouter, après avoir complété le formulaire au dessus
Merci d'avance pour votre aide
Amicalement
Bruno
Bonjour Crole18 le forum
voilà tu cliques introduire un mouvement tu rempli les Textboxs en haut tu cliques ajouter
a+
Papou
Salut Crole18,
Salut Paritec,
le problème vient du fait que tu cherches, avec AJOUTER, à modifier la ROWSOURCE de ta ListBox = conflit!
Il te faut donc annuler ROWSOURCE et charger la ListBox "manuellement"...
Private Sub UserForm_Activate()
'
For X = 1 To 9
Me.Controls("txtMvt" & X).Text = ""
Next
With Worksheets("Articles")
iRow = .Range("A" & Rows.Count).End(xlUp).Row
Me.LstArticles.List = .Range("A1:I" & iRow).Value
End With
'
End Sub
[b]Autres choses :
[/b]- pour te faciliter la vie, nomme des TextBox de façon à pouvoir utiliser leurs données dans une boucle.
Ainsi, j'ai renommé les TextBox du haut, txtArt1, txtArt2,..., celles du bas txtMvt1...
- dans la même idée, utilise directement, quand c'est possible, les données connues sans passer par l'affectation d'une variable sauf si cette variable est utilisée de nombreuses fois dans la procédure, évidemment.
Private Sub LstArticles_Click()
'
Me.TxtCbArticles.Text = CStr(Me.LstArticles.ListCount)
'
'Remplit les informations des TextBox
If Me.LstArticles.ListIndex > 0 Then
For X = 1 To 9
Me.Controls("txtMvt" & X).Text = Me.LstArticles.Column(X - 1, Me.LstArticles.ListIndex)
Next
End If
'
End Sub
- tu peux adresser directement une feuille sans l'activer : suffit de la nommer dans le code...
Private Sub Cmd_ajouter_article_Click()
'
With Worksheets("Articles")
iRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
For X = 1 To 9
.Cells(iRow, X) = Me.Controls("txtArt" & X).Text
Next
End With
'
End Sub
- question données connues, sers t'en pour te faciliter la vie!
Ici, quand tu veux créer un nouvel article, le clic dans txtArt1 (Num) crée le n° et la réf sur base des données de 'ARTICLES' et te positionnes direct sur 'Conditionnement'...
Private Sub txtArt1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'
If Me.txtArt1.Text = "" Then
With Worksheets("Articles")
iRow = .Range("A" & Rows.Count).End(xlUp).Row
Me.txtArt1.Text = CStr(Val(.Range("A" & iRow).Value) + 1)
Me.txtArt2.Text = CStr(Val(.Range("B" & iRow).Value) + 1)
End With
Me.txtArt4.SetFocus
End If
'
End Sub
A+
Bonjour le forum,
Je tiens à vous remercier pour votre précieuse aide
et je vous souhaite une excellente journée
Amicalement
Crole18