Bonjour à tous
nouvelle sur ce forum et très débutante en Vba, mais je me lance
j'ai une erreur d'exécution sur la première ligne et je ne comprend pas pourquoi
Sub Archiver()
ligne = Sheets("Historique_facture").Range("A2").End(xlDown).Row + 1
Sheets("Historique_facture").Range("A" & ligne).Value = Sheets("Facture").Range("c13").Value
Sheets("Historique_facture").Range("B" & ligne).Value = Sheets("Facture").Range("c11").Value
j'ai un fichier facture qui devrait par une macro archiver celle ci dans une feuille Historique_facture
ci joint celui-ci
un grand merci pour votre aide mais je souhaiterais comprendre mes erreurs
Tao
La feuille Historique_facture n'existant pas, cela explique le plantage.
Le nom de la feuille sur votre exemple est Historique _facture. (avec un espace)
Le souci de cette approche, c'est que si un utilisateur change le nom de la feuille, tu auras de nouveau cette erreur. Pour éviter cela, je te conseille de remplacer le nom de la feuille dans le code Sheets("Historique _facture") par le Codename de la feuille : feuil3 qui lui ne change pas.
Ton code devient alors :
VB:
Sub Archiver()
ligne = Feuil3.Range("A2").End(xlDown).Row + 1
Feuil3.Range("A" & ligne).Value = Sheets("Facture").Range("c13").Value
Feuil3.Range("B" & ligne).Value = Sheets("Facture").Range("c11").Value
End Sub
La feuille Historique_facture n'existant pas, cela explique le plantage.
Le nom de la feuille sur votre exemple est Historique _facture. (avec un espace)
Le souci de cette approche, c'est que si un utilisateur change le nom de la feuille, tu auras de nouveau cette erreur. Pour éviter cela, je te conseille de remplacer le nom de la feuille dans le code Sheets("Historique _facture") par le Codename de la feuille : feuil3 qui lui ne change pas.
Ton code devient alors :
VB:
Sub Archiver()
ligne = Feuil3.Range("A2").End(xlDown).Row + 1
Feuil3.Range("A" & ligne).Value = Sheets("Facture").Range("c13").Value
Feuil3.Range("B" & ligne).Value = Sheets("Facture").Range("c11").Value
End Sub
Sub Archiver_bis()
Dim f As Worksheet: Set f = Sheets("Facture")
Feuil3.Cells(Rows.Count, 1).End(xlUp)(2).Resize(, 2) = Array(f.[C13], f.[C11])
End Sub
Normalement, le résultat est le même que ta macro originale.