XL 2010 erreur d'exécution '9'

TAOK

XLDnaute Nouveau
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
 

Pièces jointes

  • facture solution.xlsm
    22.7 KB · Affichages: 17

Softmama

XLDnaute Accro
Bonjour,

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
 

TAOK

XLDnaute Nouveau
Bonjour,

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
Merci bcq
Je n'avais pas vu l'espace
Bonne soirée
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Pour le fun (et pour m'aider à m'endormir)
VB:
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.
 

Discussions similaires

Réponses
49
Affichages
1 K

Statistiques des forums

Discussions
315 127
Messages
2 116 538
Membres
112 774
dernier inscrit
Foudil59