Macro VBA : Coller des données dans la première ligne vide [Résolu]

Signaler
Messages postés
26
Date d'inscription
jeudi 25 juin 2020
Statut
Membre
Dernière intervention
26 novembre 2020
-
Messages postés
26
Date d'inscription
jeudi 25 juin 2020
Statut
Membre
Dernière intervention
26 novembre 2020
-
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

1 réponse

Messages postés
7202
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 janvier 2021
597
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)



Messages postés
26
Date d'inscription
jeudi 25 juin 2020
Statut
Membre
Dernière intervention
26 novembre 2020

Merci beaucoup, c'est exactement ce que je cherchais! Je n'avais pas pensé à l'&!
Messages postés
26
Date d'inscription
jeudi 25 juin 2020
Statut
Membre
Dernière intervention
26 novembre 2020

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"?
Messages postés
7202
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 janvier 2021
597 >
Messages postés
26
Date d'inscription
jeudi 25 juin 2020
Statut
Membre
Dernière intervention
26 novembre 2020

essaie ceci:

 LigneVide = Worksheets("Archives").Range("A" & Rows.Count).End(xlUp).Row + 1 
Messages postés
26
Date d'inscription
jeudi 25 juin 2020
Statut
Membre
Dernière intervention
26 novembre 2020
>
Messages postés
7202
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 janvier 2021

Une nouvelle fois parfait! Merci pour votre aide!