Numérotation automatique de factures

Résolu
Bonjour,
je coince sur une facture que je tente d'automatiser.
d'une part, j'ai une facture et d'autre part, j'ai un historique.
Lorsque je sauvegarde ma facture à l'aide du bouton ad hoc, je voudrais que les renseignements de la dite facture s'inscrivent dans la feuille "Historique_facture", mais quelque chose ne va pas dans mon code.
je vous joins une copie de la facture, ainsi qu'une copie de mon code.
Merci de votre aide.

Sub Archiver()
ligne = Sheets("Historique_facture").Range("A2").End(xlDown).Row + 1
Sheets("Historique_facture").Range("A" & ligne).Value = Sheets("Facture").Range("B10").Value
Sheets("Historique_facture").Range("B" & ligne).Value = Sheets("Facture").Range("B12").Value

Sheets("Historique_facture").Range("C" & ligne).Value = Sheets("Facture").Range("E10&" - "&G10").Value
Sheets("Historique_facture").Range("D" & ligne).Value = Sheets("Facture").Range("E11").Value
Sheets("Historique_facture").Range("E" & ligne).Value = Sheets("Facture").Range("E12").Value

Sheets("Historique_facture").Range("F" & ligne).Value = Sheets("Facture").Range("B11").Value
Sheets("Historique_facture").Range("G" & ligne).Value = Sheets("Facture").Range("G38").Value
Sheets("Historique_facture").Range("H" & ligne).Value = Sheets("Facture").Range("G40").Value

Sheets("Facture").Range("D12:E27").ClearContents
Sheets("Facture").Range("E5:G5").ClearContents

Sheets("Facture").Range("C6").Value = Sheets("facture").Range("C6").Value + 1

End Sub

ce sera plus aisé avec l'exemple de ma facture dans ci joint :

https://www.cjoint.com/c/JEljUZFLIER

5 réponses

  1. Merci (un peu tard !) mais je n'étais plus revenu ici depuis . Grand lmerci pour votre aide.
    0
    1. C'est vrai que dans la mesure où les cellules cibles forment une plage, la proposition de michel allège nettement le code. Ce qui donne
      Sub Archivage()
      Dim liste(), ligvide As Long
      With Sheets("Facture")
        liste = Array(.[B10], .[B12], .[E10], .[G10], .[E11], .[E12], .[F12], .[E13], .[G38], .[G40])
      End With
      With Sheets("Historique_facture")
        ligvide = .Columns("A").Find("", .Range("A1")).Row
        .Cells(ligvide, "A").Resize(1, UBound(liste) + 1) = liste
        .Activate
      End With
      End Sub

      https://mon-partage.fr/f/08C75kEO/

      Bonne soirée
      0
      1. Contributeur
        Merci, CCM ;o)
        cordialement
        0
      2. je viens d'essayer, en effet très bien avec un code bcp plus court. Une seule chose : la numérotation ne s'incrémente pas, mais je pense qu'il suffit que j'ajoute la ligne:
        Sheets("Facture").Range("B10").Value= Sheets("Facture").Range("B10").Value+1
        et cela incrémentera mes factures.

        Un tout grand merci.
        0
      3. @SimKmilBonjour,
        Eh bien non car votre numérotation et en texte..
        Je vous propose cette ligne de code:
        Sheets("Facture").Range("B10").Value = Left(Range("b10"), 5) + Format(CInt(Right(Range("b10"), Len(Range("b10")) - 5)) + 1, "000")

        Salutations
        Le Pingou
        0
    2. Contributeur
      Bonjour
      un exemple- principe différent EN peu de lignes pour résoudre le transfert (attention aux points devant les "[")


      Sub yy()
      With Sheets(1)
      liste = Array(.[B10], .[B12], .[E11]) 'etc....
      End With

      With Sheets(2)
      ligvide = .Columns("A").Find("", .Range("A1")).Row
      .Cells(ligvide, "A").Resize(1, UBound(liste) + 1) = liste
      .Activate
      End With

      End Sub


      0
      1. Magnifique, je vais essayer cela parallèlement à ce que j'ai déjà réussi. Un code plus court, c'est encore mieux.
        Merci beaucoup
        0
    3. Bonjour
      Ci joint ma solution...
      Mais visiblement, tu pars dans tous les sens.
      Stock: as tu une référence à toi ou utilise tu celle des fournisseurs?
      Je te propose: saisi de la référence et le reste se rempli automatiquement
      Saisi nom client si déjà dans ton fichier le reste se rempli automatiquement
      Donc une page entrée, une page sortie, une page stock, une page client
      une page facture et une page historique
      Si ça t'intéresse tu me fais signe...
      https://www.cjoint.com/c/JElnU4wsNbb
      A+ François
      0
      1. Bonjour

        Pas mal d'erreur dans ton code
        Sub Archiver()
        ligne = Sheets("Historique_facture").Range("A" & Rows.Count).End(xlUp).Row + 1
        Sheets("Historique_facture").Range("A" & ligne).Value = Sheets("Facture").Range("B10").Value
        Sheets("Historique_facture").Range("B" & ligne).Value = Sheets("Facture").Range("B12").Value
        
        Sheets("Historique_facture").Range("C" & ligne).Value = Sheets("Facture").Range("E10").Value
        Sheets("Historique_facture").Range("D" & ligne).Value = Sheets("Facture").Range("G10").Value
        Sheets("Historique_facture").Range("E" & ligne).Value = Sheets("Facture").Range("E11").Value
        Sheets("Historique_facture").Range("F" & ligne).Value = Sheets("Facture").Range("E12").Value
        Sheets("Historique_facture").Range("G" & ligne).Value = Sheets("Facture").Range("F12").Value
        
        Sheets("Historique_facture").Range("H" & ligne).Value = Sheets("Facture").Range("E13").Value
        Sheets("Historique_facture").Range("I" & ligne).Value = Sheets("Facture").Range("G38").Value
        Sheets("Historique_facture").Range("J" & ligne).Value = Sheets("Facture").Range("G40").Value
        
        Sheets("Facture").Range("D12:E27").ClearContents
        Sheets("Facture").Range("E5:G5").ClearContents
        Sheets("Facture").Range("C6").Value = Sheets("facture").Range("C6").Value + 1
        End Sub

        Cdlmnt
        1
        1. Merci beaucoup, je vais étudier mes erreurs de plus près.
          0
        2. @simkmilOuf !! j'ai tout corrigé et super , ça fonctionne.
          je vais maintenant remplir une feuille avec les coordonnées des clients et faire cela sous forme de liste déroulante. Pour un marchand de pneus e village, il ne doit pas avoir des centaines de clients.
          ensuite, je verrai si je peux lui faire une petite gestion de stock en indiquant ses entrées et ses sorties.
          Merci infiniment.
          0