Incrémentation automatique d'un numéro
Bonjour,
Je voudrais créer un numéro de facture en automatique avec ma macro archiver facture
sauf que dans mon historique de facture mais il me mets toujours 1
Je vous joint le fichier
merci de votre aide
Bonjour,
Tu nous parles d'une macro, mais il n'y en a aucune dans le fichier que tu nous as transmis, difficile de la modifier/corriger...
oui je viens de voir ça et mon fichier est trop volumineux rrr
Sheets("historique_facture").Range("C" & Ligne).Value = Sheets("historique_facture").Range("C" & Ligne).End(xlDown).Value + 1
voila ce que j'ai mis dans ma macro
' archiver_facture Macro
'
'ecrire sur la ligne suivante
Ligne = Sheets("historique_facture").Range("A2").End(xlDown).Row + 1
'numero reservation
Sheets("historique_facture").Range("A" & Ligne).Value = ActiveSheet.Range("L1").Value
Sheets("historique_facture").Range("B" & Ligne).Value = ActiveSheet.Range("M1").Value
'date de resa
Sheets("historique_facture").Range("D" & Ligne).Value = ActiveSheet.Range("L2").Value
'n° client
Sheets("historique_facture").Range("E" & Ligne).Value = ActiveSheet.Range("I1").Value
'client
Sheets("historique_facture").Range("F" & Ligne).Value = ActiveSheet.Range("H3").Value
'date d'arrivée
Sheets("historique_facture").Range("G" & Ligne).Value = ActiveSheet.Range("D18:F18").Value
'date départ
Sheets("historique_facture").Range("H" & Ligne).Value = ActiveSheet.Range("D19:F19").Value
'majeur
Sheets("historique_facture").Range("I" & Ligne).Value = ActiveSheet.Range("G21").Value
'mineur
Sheets("historique_facture").Range("J" & Ligne).Value = ActiveSheet.Range("G22").Value
'total taxe séjour
Sheets("historique_facture").Range("K" & Ligne).Value = ActiveSheet.Range("M33").Value
'Acompte 1
Sheets("historique_facture").Range("L" & Ligne).Value = ActiveSheet.Range("M38").Value
'Acompte 2
Sheets("historique_facture").Range("M" & Ligne).Value = ActiveSheet.Range("M40").Value
'Acompte 3
Sheets("historique_facture").Range("N" & Ligne).Value = ActiveSheet.Range("M42").Value
'Acompte 4
Sheets("historique_facture").Range("O" & Ligne).Value = ActiveSheet.Range("M44").Value
'Acompte 5
Sheets("historique_facture").Range("P" & Ligne).Value = ActiveSheet.Range("M46").Value
'Acompte 6
Sheets("historique_facture").Range("Q" & Ligne).Value = ActiveSheet.Range("M48").Value
'Acompte 7
Sheets("historique_facture").Range("R" & Ligne).Value = ActiveSheet.Range("M50").Value
'Total séjour
Sheets("historique_facture").Range("S" & Ligne).Value = ActiveSheet.Range("M35").Value
'n° facture automatique
Sheets("historique_facture").Range("C" & Ligne).Value = Sheets("historique_facture").Range("C" & Ligne).End(xlDown).Value + 1
voila la macro entiere
Re
Je te retourne le fichier avec une macro qui incrémente le numéro de facture:
à mon avis, ton soucis vient de :
Sheets("historique_facture").Range("C" & Ligne).End(xlDown).Value + 1
Si ligne est la dernière ligne de ton tableau, tu vas à la dernière ligne du classeur, qui est vide, ou égale à 0 si convertie en nombre, du coup quand tu fais +1, ça donne toujours 0+1 = 1 en numéro de facture.
Je vous remercie beaucoup mais lorsque je l'ajoute a ma macro bin ça marche pas lol
alors je suis vraiment pas une pro du vba mais je veux vraiment automatiser mon fichier
pourriez vous me corriger ma macro :
' archiver_facture Macro
'
'ecrire sur la ligne suivante
Ligne = Sheets("historique_facture").Range("A2").End(xlDown).Row + 1
'numero reservation
Sheets("historique_facture").Range("A" & Ligne).Value = ActiveSheet.Range("L1").Value
Sheets("historique_facture").Range("B" & Ligne).Value = ActiveSheet.Range("M1").Value
'date de resa
Sheets("historique_facture").Range("D" & Ligne).Value = ActiveSheet.Range("L2").Value
'n° client
Sheets("historique_facture").Range("E" & Ligne).Value = ActiveSheet.Range("I1").Value
'client
Sheets("historique_facture").Range("F" & Ligne).Value = ActiveSheet.Range("H3").Value
'date d'arrivée
Sheets("historique_facture").Range("G" & Ligne).Value = ActiveSheet.Range("D18:F18").Value
'date départ
Sheets("historique_facture").Range("H" & Ligne).Value = ActiveSheet.Range("D19:F19").Value
'majeur
Sheets("historique_facture").Range("I" & Ligne).Value = ActiveSheet.Range("G21").Value
'mineur
Sheets("historique_facture").Range("J" & Ligne).Value = ActiveSheet.Range("G22").Value
'total taxe séjour
Sheets("historique_facture").Range("K" & Ligne).Value = ActiveSheet.Range("M33").Value
'Acompte 1
Sheets("historique_facture").Range("L" & Ligne).Value = ActiveSheet.Range("M38").Value
'Acompte 2
Sheets("historique_facture").Range("M" & Ligne).Value = ActiveSheet.Range("M40").Value
'Acompte 3
Sheets("historique_facture").Range("N" & Ligne).Value = ActiveSheet.Range("M42").Value
'Acompte 4
Sheets("historique_facture").Range("O" & Ligne).Value = ActiveSheet.Range("M44").Value
'Acompte 5
Sheets("historique_facture").Range("P" & Ligne).Value = ActiveSheet.Range("M46").Value
'Acompte 6
Sheets("historique_facture").Range("Q" & Ligne).Value = ActiveSheet.Range("M48").Value
'Acompte 7
Sheets("historique_facture").Range("R" & Ligne).Value = ActiveSheet.Range("M50").Value
'Total séjour
Sheets("historique_facture").Range("S" & Ligne).Value = ActiveSheet.Range("M35").Value
'n° facture automatique
Ligne = Range("c" & Rows.Count).End(xlUp).Row + 1
With Sheets("historique_facture")
.Range("C" & Ligne) = WorksheetFunction.Max(.Range("C2", "c" & Ligne - 1)) + 1
End With
Re, je fais un essai:
Sub test()
With Sheets("historique_facture")
Ligne = .Range("A2").End(xlDown).Row + 1
.Range("A" & Ligne) = Range("L1")
.Range("B" & Ligne) = Range("M1")
.Range("C" & Ligne) = WorksheetFunction.Max(.Range("C2", "c" & Ligne - 1)) + 1
.Range("D" & Ligne) = Range("L2")
.Range("E" & Ligne) = Range("I1")
.Range("F" & Ligne) = Range("H3")
.Range("G" & Ligne) = Range("D18:F18")
.Range("H" & Ligne) = Range("D19:F19")
.Range("I" & Ligne) = Range("G21")
.Range("J" & Ligne) = Range("G22")
.Range("K" & Ligne) = Range("M33")
.Range("L" & Ligne) = Range("M38")
.Range("M" & Ligne) = Range("M40")
.Range("N" & Ligne) = Range("M42")
.Range("O" & Ligne) = Range("M44")
.Range("P" & Ligne) = Range("M46")
.Range("Q" & Ligne) = Range("M48")
.Range("R" & Ligne) = Range("M50")
.Range("S" & Ligne) = Range("M35")
End With
End SubPs: j'ai enlevé tout ce qui ne servait à rien dans ton programme.
MAGNIFIQUE !! ça marche je suis trop contente vraiment un grand grand merci
Super alors
Par contre, tu es sûre que les lignes :
.Range("G" & Ligne) = Range("D18:F18")
.Range("H" & Ligne) = Range("D19:F19")fonctionnent?
Parce que je ne suis pas sûr que ça te mettes ce que tu souhaites vraiment peux tu vérifier?
Sinon si tout fonctionne :
effectivement je n'ai pas les dates qui s'affichent je viens de le voir
Re,
Je viens de voir pourquoi tu as mis ça, en fait les cellules sont fusionnées, donc tu as dû penser qu'il fallait prendre toutes les cellules pour avoir la valeur, mais ça ne fonctionne pas comme ça, quand plusieurs cellules sont fusionnées, c'est celle tout en haut à gauche qui garde la valeur, il faut donc écrire:
.Range("G" & Ligne) = Range("D18")
.Range("H" & Ligne) = Range("D19")Je te joins un exemple pour illustrer ce que j'ai dis sur la fusion de cellules:
ok j'ai corrigé et ça fonctionne merci beaucoup de votre aide !