Numérotation automatique de factures

Résolu/Fermé
simkmil Messages postés 439 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 26 mai 2024 - Modifié le 11 mai 2020 à 11:48
simkmil Messages postés 439 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 26 mai 2024 - 9 juil. 2020 à 10:28
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 10862 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 30 mai 2024 2 408
11 mai 2020 à 15:24
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 439 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 26 mai 2024 34
11 mai 2020 à 16:10
Merci beaucoup, je vais étudier mes erreurs de plus près.
0
simkmil Messages postés 439 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 26 mai 2024 34 > simkmil Messages postés 439 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 26 mai 2024
11 mai 2020 à 16:50
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 mercredi 23 avril 2008 Statut Membre Dernière intervention 27 février 2023 38
11 mai 2020 à 15:47
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
Modifié le 11 mai 2020 à 16:47
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
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 10862 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 30 mai 2024 2 408
Modifié le 11 mai 2020 à 20:45
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
12 mai 2020 à 08:09
Merci, CCM ;o)
cordialement
0
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 12094 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 mai 2024 1 435 > SimKmil
12 mai 2020 à 11:43
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 439 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 26 mai 2024 34
9 juil. 2020 à 10:28
Merci (un peu tard !) mais je n'étais plus revenu ici depuis . Grand lmerci pour votre aide.
0