UserForm transfert donnée vers feuille Excel
Bonjour
je vous expose mon problème , j'ai réaliser une macro qui lance un UserForm jusque la tout va bien (dans l'onglet factureAchat)
lorsque j'enregistre mes données pour la 1ère ligne que j'ai défini c'est ok , parcontre si j'enregistre à nouveau une facture ,ca écrase les données de ma première ligne , j'ai essayé un code mais il ne fonctionne pas.
je souhaiter savoir aussi si il est possible de bloquer l'enregistrement si dans mes Textbox si les valeurs par exemple numérique type
mois ou année était en texte par exemple.
encore une ultime question je souhaiter également faire une formule juste à droite de mon tableau afin de renseigner un fournisseur
dans la cellule Q8 et que dans la cellule du dessous ca réalise le total des Montant engagé par fournisseur dans la colonne G ,car je ne sais pas quel formule utilisé recherche ,index equiv ou encore somme si
la macro avec l'UserForm se trouve dans l'onglet FactureAchat
Merci de votre Attention
Bien Cordialement
Emile
Bonjour
hum voir la gestion des ligne
Private Sub CMD_enregistrer_Click()
Dim L As Long
If MsgBox("Voulez vous saisir la facture ?", vbYesNo + vbQuestion) = vbYes Then
With Sheets(Feuil2.Name)
L = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("B" & L).Value = Val(Me.txtfacture)
.Range("C" & L).Value = Val(Me.txtcommande)
.Range("D" & L).Value = Val(Me.txtfournisseur)
.Range("E" & L).Value = Val(Me.txtmois)
.Range("F" & L).Value = Val(Me.txtannee)
.Range("G" & L).Value = Val(Me.txtengage)
End With
Unload Me
End If
End Sub
regarde bien
A+
Maurice
Re
Merci Maurice pour ta contribution
j'ai essayé ton code en ajoutant le bon nom de la feuille et les cellules et lorsque j'exécute , un message d'erreur apparaît Else sans IF
Private Sub CMD_enregistrer_Click()
Dim L As Long
If MsgBox("Voulez vous saisir la facture ?", vbYesNo + vbQuestion) = vbYes Then
With Sheets(FactureAchat)
L = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("B5" & L).Value = Val(Me.txtfacture)
.Range("C5" & L).Value = Val(Me.txtcommande)
.Range("D5" & L).Value = Val(Me.txtfournisseur)
.Range("E5" & L).Value = Val(Me.txtmois)
.Range("F5" & L).Value = Val(Me.txtannee)
.Range("G5" & L).Value = Val(Me.txtengage)
End With
Unload Me
End If
Else
End If
End Sub
bonjour
tu a fait une erreur de syntaxe
Sheets(Feuil2.Name) évite les faute surtout si tu change le nom de l'onglet
ou
Sheets("non de l'onglet")
et regarde sur le web codename
A+
Maurice
Bonjour
Tu as fait une erreur en reprenant le code d'Archer...un else et un endif se promènent à la fin.
Quant aux champs mois et année tu peux mettre une valeur Maxlength, de 2 pour le mois, de 4 pour l'année
Pour le mois tu peux contrôler la validité :
Private Sub txtmois_Change()
If txtmois.Value < 1 Or txtmois.Value > 12 Then
MsgBox "Mois non valide"
End If
End Sub
De même que pour l'année tu peux cerner une période de validité.
Bon courage
Merci Patty 5046 et Maurice
je suis désolé j'arrive toujours pas remettre le code dans le bouton enregistrer sans qu il y est un problème , ce que coup il accepte
les données du UserForm mais il me les transfert nul part ces données et donc pas moyen de les acumuler à chaque facture
j'ai réussi à imbriquer ton code patty mais je le ferai pas pour l'année car le document va reservir à chaque chantier sur une durée aujourdhui que je ne connaît pas.
bonsoir
déjà tu efface toutes les lignes de la ligne 5 a la fin
et mettre le formulaire a jour
Private Sub UserForm_Initialize()
txtannee.Value = Format(Now, "yyyy")
txtmois.Value = Format(Now, "mm")
End Sub
Private Sub txtannee_KeyPress(ByVal keyAscii As MSForms.ReturnInteger)
If InStr("0123456789", Chr(keyAscii)) = 0 Then
keyAscii = 0
End If
End Sub
Private Sub txtengagee_KeyPress(ByVal keyAscii As MSForms.ReturnInteger)
If InStr("0123456789", Chr(keyAscii)) = 0 Then
keyAscii = 0
End If
End Sub
Private Sub txtmois_KeyPress(ByVal keyAscii As MSForms.ReturnInteger)
If InStr("0123456789", Chr(keyAscii)) = 0 Then
keyAscii = 0
End If
End Sub
Private Sub CMD_enregistrer_Click()
Dim L As Long
If MsgBox("Voulez vous saisir la facture ?", vbYesNo + vbQuestion) = vbYes Then
With Sheets(Feuil2.Name)
L = .Range("B" & Rows.Count).End(xlUp).Row + 1
.Range("B" & L).Value = Val(Me.txtfacture)
.Range("C" & L).Value = Val(Me.txtcommande)
.Range("D" & L).Value = Val(Me.txtfournisseur)
.Range("E" & L).Value = Val(Me.txtmois)
.Range("F" & L).Value = Val(Me.txtannee)
.Range("G" & L).Value = Val(Me.txtengage)
End With
End If
Unload Me
End Sub
Private Sub BTN_Annuler_Click()
Dim reponse As Long
reponse = MsgBox("Êtes vous sûr de vouloir fermer le formulaire?", vbYesNo + vbInformation + vbDefaultButton2)
If reponse = vbYes Then
Unload Me
End If
End Sub
A+
Maurice
Merci beaucoup c'est exactement ca que je souhaiter faire , et j avais juste une petite question pourquoi quand on rentre le fournisseur dans la textbox ca renvoie un chiffre et non un nom ou un nom avec des chiffres ?
a+
du coup pour le fournisseur qui apparaît toujours en chiffre lors de lors de l'enregistrement de la UserForm au lieu d être en lettre ou
en lettre avec des chiffres dans l'onglet FactureAchat , j'ai essayé de modifier le format et plusieurs paramètres mais j'avoue être un peu dépasser car il apparait toujours en chiffre
Cordialement
Emile
bonjour
tu a mis des Val donc la textbox ne prend que le numérique
et voir aussi les KeyPress
tu a encore beaucoup de boulot
Private Sub CMD_enregistrer_Click()
Dim L As Long
' Val Renvoie le nombre contenu dans une chaîne de caractère sous la forme d'une valeur numérique d'un type approprié.
If MsgBox("Voulez vous saisir la facture ?", vbYesNo + vbQuestion) = vbYes Then
With Sheets(Feuil2.Name)
L = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & L).Value = "Facture n°"
.Range("B" & L).Value = Val(txtfacture.Value)
.Range("C" & L).Value = Val(txtcommande.Value)
.Range("D" & L).Value = txtfournisseur.Value
.Range("E" & L).Value = Val(txtmois.Value)
.Range("F" & L).Value = Val(txtannee.Value)
.Range("G" & L).Value = Val(txtengage.Value)
End With
End If
Unload Me
End Sub
A+
Maurice