Numérotation automatique de factures

Résolu
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   -  
simkmil Messages postés 481 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

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35
 
Merci beaucoup, je vais étudier mes erreurs de plus près.
0
simkmil Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   35 > simkmil Messages postés 481 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
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Merci, CCM ;o)
cordialement
0
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
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458 > 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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
simkmil Messages postés 481 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