Numérotation automatique de factures [Résolu]

Signaler
Messages postés
209
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
29 août 2020
-
Messages postés
209
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
29 août 2020
-
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

Messages postés
9572
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
28 septembre 2020
1 904
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
Messages postés
209
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
29 août 2020
20
Merci beaucoup, je vais étudier mes erreurs de plus près.
Messages postés
209
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
29 août 2020
20 >
Messages postés
209
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
29 août 2020

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.
Messages postés
100
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
17 septembre 2020
18
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
Messages postés
16214
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 septembre 2020
3 036
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




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
Messages postés
9572
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
28 septembre 2020
1 904
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
Messages postés
16214
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 septembre 2020
3 036
Merci, CCM ;o)
cordialement
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.
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 073 > 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
Messages postés
209
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
29 août 2020
20
Merci (un peu tard !) mais je n'étais plus revenu ici depuis . Grand lmerci pour votre aide.