Macro VBA copier/coller données selon date

Bonjour à tous !

Je travaille sur un fichier Excel assez conséquent et j'ai un problème que je n'arrive pas à résoudre malgré de nombreuses recherches.

Dans le fichier en pièce jointe, je vous ai laissé deux onglets bien modifié pour des raisons professionnelles.

Le principe :

Je souhaite que les données sur l'onglet "Données" se copient/collent après avoir cliqué sur le bouton inséré sur le même onglet. Elles doivent se coller dans l'autre onglet, "Calendrier", tout en prenant en compte la date indiquée sur le premier onglet.

Très concrètement :

La plage A9:B43 de l'onglet "Données" doit être collée sur l'onglet "Calendrier" en prenant en compte la date indiquée dans la cellule B1.

Pourquoi pas une simple rechercheV ? Parce que le fichier sur lequel je travaille sera amené à être modifié quotidiennement et que je veux que les données se reportent une fois que les données sont documentées.

J'ai déjà essayé quelques macros, mais rien de concluant. Si quelqu'un pouvait m'aider, ça serait vraiment top.

Merci d'avance

527reportdonnees.xlsm (180.19 Ko)

Bonsoir,

une proposition, à tester.

Sub testcpd()
Set wsd = Worksheets("données")
dld = wsd.Range("A" & Rows.Count).End(xlUp).Row
Set wsc = Worksheets("Calendrier")
Set re = wsc.Rows("5:5").Find(wsd.Range("B1"), lookat:=xlWhole)
If Not re Is Nothing Then
wsd.Range("A9:B" & dld).Copy
wsc.Cells(7, re.Column).PasteSpecial Paste:=xlValues
End If

End Sub

Ca marche super bien !!! Un énorme MERCI

Je vais un peu abuser, mais pourrais-tu m'expliquer comment tu es arrivé à ce résultat ? (pour que je comprenne et puisse le refaire, l'adapter pour de futurs fichiers...)

Merci d'avance

Bonsoir,

voici quelques commentaires.

Sub testcpd()
' wsd = référence de la feuille données

Set wsd = Worksheets("données")
'dld dernière ligne de la feuille données sur base de la colonne A
dld = wsd.Range("A" & Rows.Count).End(xlUp).Row

' wsc référence de la feuille Calendrier
Set wsc = Worksheets("Calendrier")
' on recherche en ligne 5, la date qui se trouve en B1 sur wsd, on met le résultat dans un range nommé re
Set re = wsc.Rows("5:5").Find(wsd.Range("B1"), lookat:=xlWhole)
' si re n'est pas vide = on trouvé
If Not re Is Nothing Then
' on copie la plage A9:B dernière ligne de données
wsd.Range("A9:B" & dld).Copy
' à partir de la cellule en ligne 7 dans la colonne dans laquelle on a trouvé la date
wsc.Cells(7, re.Column).PasteSpecial Paste:=xlValues
End If

End Sub

C'est parfait, merci beaucoup

Bonjour,

J'ai quasiment besoin du même code mais lorsque je l'éxécute, pour la ligne :

Set re = wsc.Column("C").Find(what:=wsc.Range("P2"), lookat:=xlWhole)

J'ai une erreur 438 qui s'affiche : propriété ou méthode non gérée par cet objet.

Que faut-il faire svp?

Rechercher des sujets similaires à "macro vba copier coller donnees date"