Macro VBA : Coller des données dans la première ligne vide

Résolu
Flodel35 Messages postés 28 Statut Membre -  
Flodel35 Messages postés 28 Statut Membre -
Bonjour,

Je travaille sur un projet et je bloque sur une macro. Je m'explique : je souhaite créer un "historique" (dans une feuille "Archives") de simulations faites dans une feuille appelé "Tableau". Pour résumer, je veux à chaque fois récupérer les données de synthèse de cette simulation (qui sont toujours au même endroit) et y ajouter la date.

J'ai réussi à faire ma macro jusqu'icic



Sub ARCHIVAGE() ' l'objectif de cette macro est de créer un historique des calculs effectués, dans la feuille "Archives", on doit donc renseigner la date et reprendre les données de synthèse

' pour éviter que les différents enregistrements se chevauchent, il faut que le code permette auxdonnées de se placer dans la première ligne vide après les en-tetes
' on définit donc une variable correspondante à cette ligne

Dim LigneVide As Long
LigneVide = Worksheets("Archives").Range("A4").End(xlDown).Row + 1


Range("B5:B10").Copy
Worksheets("Archives").Range("B10").PasteSpecial Paste:=xlPasteAll, Transpose:=True

Worksheets("Archives").Range("A10").Value = Format(Now, "dd/mm/yyyy")

End Sub



Comme expliqué dans mes commentaires, le problème est que les données archivées ne doivent pas se chevaucher et donc doivent se placer dans la première ligne vide après les en têtes.

Mais en l'état, les données vont à chaque fois dans la ligne 10 puisque j'ai désigné ces cellules dans mon code. J'ai essayé de remplacer "A10" et "B10". en utilisant la variable créée :

 Range(Cells(LigneVide,2)) 


Mais cela n'a pas fonctionné... Quelqu'un aurait-il une idée pour exploiter la variable LigneVide et faire fonctionner la macro?

Merci d'avance
A voir également:

1 réponse

cs_Le Pivert Messages postés 8437 Statut Contributeur 729
 
bonjour,

comme ceci:

Worksheets("Archives").Range("B" & LigneVide ).PasteSpecial Paste:=xlPasteAll, Transpose:=True

Worksheets("Archives").Range("A" & LigneVide).Value = Format(Now, "dd/mm/yyyy")


ce n'est pas ceci:

Range(Cells(LigneVide,2))


mais cela:


Cells(LigneVide,2)



0
Flodel35 Messages postés 28 Statut Membre
 
Merci beaucoup, c'est exactement ce que je cherchais! Je n'avais pas pensé à l'&!
0
Flodel35 Messages postés 28 Statut Membre
 
Ah juste un petit problème dont je viens de m'apercevoir : tout fonctionne parfaitement, les enregistrements se mettent les uns après les autres et au bon endroit mais la macro ne fonctionne pas pour le tout premier enregistrement : "Erreur d'exécution 1004 : erreur définie par l'application ou par l'objet"... Une idée pour corriger cela hormis une "ligne témoin"?
0
cs_Le Pivert Messages postés 8437 Statut Contributeur 729 > Flodel35 Messages postés 28 Statut Membre
 
essaie ceci:

 LigneVide = Worksheets("Archives").Range("A" & Rows.Count).End(xlUp).Row + 1 
0
Flodel35 Messages postés 28 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
 
Une nouvelle fois parfait! Merci pour votre aide!
0