J'ai créer une macro "Archiver" et je ne trouve pas ce qui ne fonctionne pas le problème. Quelqu'un peut m'aider? Voici un imprime écran.
Pièce jointe 383674
Version imprimable
J'ai créer une macro "Archiver" et je ne trouve pas ce qui ne fonctionne pas le problème. Quelqu'un peut m'aider? Voici un imprime écran.
Pièce jointe 383674
Bonjour
Quel est le message d'erreur ?
Le mode debug à ce moment donne quoi comme valeur pour ligne ?
Salut.
Si tu n'as encore rien en A2, End(XlDown) te fait plonger en A1048576 (dernière ligne de la feuille). Si tu essaies de descendre plus bas (ton +1), Boum, tu sors des limites.
Tu aurais intérêt à travailler dans l'autre sens ( range("a1048576").End(xlUp).row +1).
Mieux, travailler avec des tableaux structurés. Tu pourrais alors très facilement ajouter une ligne au tableau et travailler avec cette ligne.
Par exemple, avec un tableau structuré placé en A1 de la feuille "Historique_Facture":
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 Sub ArchiveFacture() Dim lr As ListRow Dim Source As Worksheet Set Source = Worksheets("Facture") Set lr = Sheets("historique_Facture").Range("a1").ListObject.ListRows.Add() With lr .Range(1) = Source.Range("j4").Value .Range(2) = Source.Range("i7").Value ... ... End With End Sub
Vérifie la valeur de la variable Ligne comme demandé par Chris (par exemple en passant la souris dessus ou en affichant les variables locales)...
... et teste éventuellement ma solution. Elle te simplifiera la vie :lun:
J'ai essayé ce que tu m'as proposé mais ça fonctionne toujours pas. Voici donc mon fichier excel. Pièce jointe 383753
Ton historique n'est pas un tableau structuré.
Pour transformer ta plage en tableau structuré:
tu te places dans la ligne d'entête;
tu vas sur Insertion>Tableau;
tu valides la plage;
via le ruban spécifique (visible lorsque tu actives une cellule du tableau), tu le renommes.
Tu as alors un tableau structuré avec lequel tu peux travailler.
Pièce jointe 383767
Pièce jointe 383771