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

bonsoir

retour de ton fichier

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

Rechercher des sujets similaires à "userform transfert donnee feuille"