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

Résolu/Fermé
Flodel35 Messages postés 26 Date d'inscription jeudi 25 juin 2020 Statut Membre Dernière intervention 26 novembre 2020 - Modifié le 25 nov. 2020 à 15:43
Flodel35 Messages postés 26 Date d'inscription jeudi 25 juin 2020 Statut Membre Dernière intervention 26 novembre 2020 - 25 nov. 2020 à 18:46
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 25 nov. 2020 à 16:58
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 26 Date d'inscription jeudi 25 juin 2020 Statut Membre Dernière intervention 26 novembre 2020
25 nov. 2020 à 17:10
Merci beaucoup, c'est exactement ce que je cherchais! Je n'avais pas pensé à l'&!
0
Flodel35 Messages postés 26 Date d'inscription jeudi 25 juin 2020 Statut Membre Dernière intervention 26 novembre 2020
25 nov. 2020 à 18:02
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > Flodel35 Messages postés 26 Date d'inscription jeudi 25 juin 2020 Statut Membre Dernière intervention 26 novembre 2020
Modifié le 25 nov. 2020 à 18:30
essaie ceci:

 LigneVide = Worksheets("Archives").Range("A" & Rows.Count).End(xlUp).Row + 1 
0
Flodel35 Messages postés 26 Date d'inscription jeudi 25 juin 2020 Statut Membre Dernière intervention 26 novembre 2020 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
25 nov. 2020 à 18:46
Une nouvelle fois parfait! Merci pour votre aide!
0