Numérotation automatique de factures

Résolu
simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   -  
simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   -
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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   35
       
      Merci beaucoup, je vais étudier mes erreurs de plus près.
      0
      1. simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   35 > simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention  
         
        Ouf !! 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
  2. franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38
     
    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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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. SimKmil
       
      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
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Merci, CCM ;o)
      cordialement
      0
    2. SimKmil
       
      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
      1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476 > SimKmil
         
        Bonjour,
        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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. simkmil Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   35
     
    Merci (un peu tard !) mais je n'étais plus revenu ici depuis . Grand lmerci pour votre aide.
    0