Un formulaire pour deux feuilles
Bonsoir à tous, bonjour le forum
Une nouvelle fois je dois faire appel à un expert pour avoir un avis pratique à savoir :
J'ai créé un formulaire userform "Frm_art" , une fois les informations rentrées, je souhaiterais que;
- Les text box "txt_art", "txt_prixachat", "txt_prixvente" et "txt_stockmin" , aille dans un tableau sur "feuil1.
- Les text box "txt_art" et "txt_quantité" aille sur un tableau d'un second onglet "feuil2".
*Sachant que que "txt_art" sa se répète sur les deux feuils.
j'ai essaie comme suite mais il me semble que ce n'est pas évidant.
Merci de votre aide.
Terrier.
Private Sub btn_valide_Click()
Dim L As Integer
'Procédure permettant de sauvegarder l'ajout d'un nouveau client dans la base Source
'On teste que les contrôles ont bien été saisie
If Len(Me.txt_art) = 0 Then
lblmessage = "Veuillez saisir le nom de l'article SVP!"
Me.txt_art.SetFocus
ElseIf Len(Me.txt_prixachat) = 0 Then
lblmessage = "Veuillez saisir le prix d'achat SVP!"
Me.txt_prixachat.SetFocus
ElseIf Len(Me.txt_prixvente) = 0 Then
lblmessage = "Veuillez saisir le prix de vente SVP!"
Me.txt_prixvente.SetFocus
ElseIf Len(Me.txt_stockmin) = 0 Then
lblmessage = "Veuillez saisir le stock min SVP!"
Me.txt_stockmin.SetFocus
ElseIf Len(Me.txt_quantité) = 0 Then
lblmessage = "Veuillez saisir la quantité SVP!"
Me.txt_quantité.SetFocus
Else
'Si tous les champs sont complet Alors on peut sauvegarder la source
'On cherche la prochaine ligne vide de la source
With Worksheets("check")
L = Range("b1048576").End(xlUp).Row + 1
.Activate
Range("K" & L).Value = Me.txt_art.Value
Range("L" & L).Value = Me.txt_quantité.Value
Range("N" & L).Value = "Entrée"
End With
With Worksheets("stock")
M = .Range("b1048576").End(xlUp).Row + 1
.Activate
.Range("b" & M).Value = Me.txt_art.Value
.Range("c" & M).Value = Me.lab_Réf
.Range("e" & M).Value = CCur(Me.txt_prixachat.Value)
.Range("f" & M).Value = CCur(Me.txt_prixvente.Value)
.Range("h" & M).Value = CInt(Me.txt_stockmin.Value)
End With
Unload Me
Feuil5.Range("d19") = Feuil5.Range("d19") + 1
Feuil1.Activate
End If
End SubBonjour,
Tu n'as pas déclaré la variable M (mets Option Explicit en tête de module)
Dans le With Worksheets("check"), il manque les points devant tous les Range pour rattacher ces Range à la feuille (comme dans le second With).
De plus, tu cherches la dernière ligne de la colonne B mais tu n'écris pas dans cette colonne, donc les prochaines valeurs des colonnes K, L et N écraseront les valeurs actuelles.
Les 2 .Activate ne sont pas indispensables.
Bonsoir,
Merci Patrice33740 pour votre participation,
Je pense que j'ai corrigé ce que désignez, mais le problème reste le même;
les valeur sur la feuil1 ne ce sont enregistré, dommage que je peux pas partager le fichier excel.
Option Explicit
Public M As Integer
Private Sub txt_prixachat_Change()
If Not IsNumeric(Me.txt_prixachat) Then
Me.txt_prixachat = ""
End If
End Sub
Private Sub txt_prixvente_Change()
If Not IsNumeric(Me.txt_prixvente) Then
Me.txt_prixvente = ""
End If
End Sub
Private Sub txt_quantité_Change()
If Not IsNumeric(Me.txt_quantité) Then
Me.txt_quantité = ""
End If
End Sub
Private Sub txt_stockmin_Change()
If Not IsNumeric(Me.txt_stockmin) Then
Me.txt_stockmin = ""
End If
End Sub
'rénitialiser le formulaire
Private Sub UserForm_Initialize()
Me.lab_Réf = Feuil5.Range("e19")
Me.txt_art = ""
Me.txt_prixachat = ""
Me.txt_prixvente = ""
Me.txt_stockmin = ""
Me.txt_quantité = ""
Me.lblmessage = ""
End Sub
Private Sub btn_valide_Click()
Dim L As Integer
'Procédure permettant de sauvegarder l'ajout d'un nouveau client dans la base Source
'On teste que les contrôles ont bien été saisie
If Len(Me.txt_art) = 0 Then
lblmessage = "Veuillez saisir le nom de l'article SVP!"
Me.txt_art.SetFocus
ElseIf Len(Me.txt_prixachat) = 0 Then
lblmessage = "Veuillez saisir le prix d'achat SVP!"
Me.txt_prixachat.SetFocus
ElseIf Len(Me.txt_prixvente) = 0 Then
lblmessage = "Veuillez saisir le prix de vente SVP!"
Me.txt_prixvente.SetFocus
ElseIf Len(Me.txt_stockmin) = 0 Then
lblmessage = "Veuillez saisir le stock min SVP!"
Me.txt_stockmin.SetFocus
ElseIf Len(Me.txt_quantité) = 0 Then
lblmessage = "Veuillez saisir la quantité SVP!"
Me.txt_quantité.SetFocus
Else
'Si tous les champs sont complet Alors on peut sauvegarder la source
'On cherche la prochaine ligne vide de la source
With Worksheets("check")
L = .Range("b1048576").End(xlUp).Row + 1
.Range("b" & L).Value = Date
.Range("K" & L).Value = Me.txt_art.Value
.Range("L" & L).Value = Me.txt_quantité.Value
.Range("N" & L).Value = "Entrée"
End With
With Worksheets("stock")
M = .Range("b1048576").End(xlUp).Row + 1
.Range("b" & M).Value = Me.txt_art.Value
.Range("c" & M).Value = Me.lab_Réf
.Range("e" & M).Value = CCur(Me.txt_prixachat.Value)
.Range("f" & M).Value = CCur(Me.txt_prixvente.Value)
.Range("h" & M).Value = CInt(Me.txt_stockmin.Value)
End With
'''''''''''''''''''''''''''''''''''''''
Unload Me
Feuil5.Range("d19") = Feuil5.Range("d19") + 1
Feuil1.Activate
End If
End Subj'ai oublié de préciser que feuil1 c'est Worksheets("Stock") et feuil2 c'est Worksheets("check").
Bonjour,
Etes-vous sûr que L va chercher la ligne désirée ? Il n'y a rien entre le fin de la colonne et la nouvelle ligne de saisie ?
Cdlt,
Bonjour 3GB,
Merci de votre aide, je viens de vérifier et ça étais vraiment sa (quelque lignes en bas des tableaux que je voyais pas), merci infiniment.