Problème pour un code d'enregistrement d'une feuille vers une autre

bonsoir le forum,

je reviens vers vous concernant une solution pour un code et avant tout je voulais vous souhaitez une bonne année 2019 à tous le forum et tous mes vœux et avant tout une très bonne santé.

je ne suis que débutant en vba pour que vous puissiez savoir avant tous.

j'ai un code qui me fait un devis, puis le n° du devis et enregistrer dans une feuille "histodevis" avec un Hyperlinks, jusqu’à là tout fonctionne.

puis j'ai un userform qui me fait une facture et le n° de facture et enregistrer dans une autre feuille "histofacture" avec Hyperlinks là aussi sa fonctionne.

certaine donnée de la facture son aussi enregistrer dans une autre feuille "BD_DF" d'une autre feuille via le userform la aussi sa fonctionne.

Quand je clique sur le Hyperlinks du n° du devis, il ouvre le devis puis je fait ma facture avec code BVA là aussi c'est OK.

donc jusqu'à là je peux soit faire une facture directement via le userform , soit je fait un devis puis avec mon devis je crée une facture via un code vba là tout est ok.

mon souci est j'en ai un, c'est que les donnée quand je passe par le devis pour faire ma facture puis je dois enregistrer certaine donnée de la facture dans une autre feuille autre que histofacture, la feuille BD_DF aussi. je bloc pour le code bva

je poste mon code userform qui fonction sans aucun problème et que vous puisiez voir se que je veux faire sans userform

je voulais aussi vous dire que tous sa passe par plusieurs code qui se font appel entre eux.

code userform

Private Sub Cbt_Facture_Click()
Dim nombre_ligne As Integer
Dim ligne As Integer
Dim DL As Integer

' Pour une nouvelle facture
If Me.List_DevFac.ListCount > 0 And Me.Cbx_TypeC > "" And Me.Cbx_TypeSa > "" Then

   If MsgBox("Voulez-vous enregistrer le devis ?", vbYesNo) = vbYes Then

      nombre_ligne = Me.List_DevFac.ListCount - 1

      For ligne = 0 To nombre_ligne
            Sheets(36).ListObjects(1).ListRows.Add
            DL = Sheets(36).Range("B9999").End(xlUp).Row

            Sheets(36).Range("B" & DL) = CInt(Me.Label_NrDF.Caption)
            Sheets(36).Range("C" & DL) = Me.Label_Titre_Facture.Caption
            Sheets(36).Range("D" & DL) = Me.List_DevFac.List(ligne, 0)
            Sheets(36).Range("E" & DL) = Me.List_DevFac.List(ligne, 1)
            Sheets(36).Range("F" & DL) = Me.Cbx_TypeC

     Next ligne

        Sheets(2).Range("I5") = Me.Label_Titre_Facture
        Sheets(2).Range("J5") = CInt(Me.Label_NrDF.Caption)
        Sheets(2).Range("J51") = CInt(Me.Txt_Remis)
        Sheets(2).Range("I4") = Me.Label_Titre
        Sheets(2).Range("C22") = Me.Cbx_TypeSa

        Call Archiver_Fac

        Unload Add_DevFac
    End If
Else

    MsgBox "Il manque le Client"

End If

End Sub

merci par avance de vous réponse

Bonjour,

Plutôt que de chercher la dernière ligne, il serait préférable à mon sens de travailler avec un objet ListRow (Dim Lig As ListRow).

Et ceci n'est pas très orthodoxe : And Me.Cbx_TypeC > "" And Me.Cbx_TypeSa > "" pour les tests, plutôt utiliser <> :

Private Sub Cbt_Facture_Click()

    Dim Lig As ListRow
    Dim Ligne As Integer
    Dim DL As Integer

    ' Pour une nouvelle facture
    If Me.List_DevFac.ListCount > 0 And Me.Cbx_TypeC <> "" And Me.Cbx_TypeSa <> "" Then

        If MsgBox("Voulez-vous enregistrer le devis ?", vbYesNo) = vbYes Then

            For Ligne = 0 To Me.List_DevFac.ListCount - 1

                Set Lig = Sheets(36).ListObjects(1).ListRows.Add

                Lig.Range(, 2).Value = CInt(Me.Label_NrDF.Caption)
                Lig.Range(, 3).Value = Me.Label_Titre_Facture.Caption
                Lig.Range(, 4).Value = Me.List_DevFac.List(Ligne, 0)
                Lig.Range(, 5).Value = Me.List_DevFac.List(Ligne, 1)
                Lig.Range(, 6).Value = Me.Cbx_TypeC

            Next Ligne

            Sheets(2).Range("I5") = Me.Label_Titre_Facture
            Sheets(2).Range("J5") = CInt(Me.Label_NrDF.Caption)
            Sheets(2).Range("J51") = CInt(Me.Txt_Remis)
            Sheets(2).Range("I4") = Me.Label_Titre
            Sheets(2).Range("C22") = Me.Cbx_TypeSa

            Call Archiver_Fac

            Unload Add_DevFac

        End If

    Else

        MsgBox "Il manque le Client"

    End If

End Sub

mon souci est j'en ai un, c'est que les donnée quand je passe par le devis pour faire ma facture puis je dois enregistrer certaine donnée de la facture dans une autre feuille autre que histofacture, la feuille BD_DF aussi. je bloc pour le code bva

Là, je dois reconnaître que j'ai un peu de peine à comprendre la demande !

Tu veux quoi au juste ?

bonjour Theze

oui tu as raison concernant : " And Me.Cbx_TypeC > "" And Me.Cbx_TypeSa > "" pour les tests, plutôt utiliser <> :", j'avais oublier

maintenant pour mon soucie je voudrais que ce code qui fonctionne pour un userform, fasse la même chose mais sans passer par un userform mais un bouton macro

mais je pense que j'ai trouvé une solution

Utilises des arguments dans la sub !

mais je pense que j'ai trouvé une solution

bon et bien c'est parfait !

Penses à cocher que le sujet est Résolu

Rechercher des sujets similaires à "probleme code enregistrement feuille"