Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro pour copier/coller données en fonction de la date

  • Initiateur de la discussion Initiateur de la discussion Florian95
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

Florian95

Guest
Bonjour,

je souhaite créer une macro pour copier les données de mon tableau de la feuille FP vers la feuile Data time.
La macro doit copier les données et les recoller en fonction de la date.

Merci de votre aide !

PS : fichier simplifié joint
 

Pièces jointes

Re : Macro pour copier/coller données en fonction de la date

Bonsoir Florian, bonsoir le forum,

Peut-être comme ça :

Code:
Sub Macro1()
Dim F As Object 'déclare la variable F (onglet)
Dim D As Object 'déclare la variable D (onglet)
Dim R As Range 'déclare la variable R (Recherche)
Dim DEST As Range 'déclare la variable DEST (CEllule de DEstination)
Dim PL As Range 'déclare la variable PL (PLage)

Set F = Sheets("Fiche Paie") 'définit  l'onglet F
Set D = Sheets("Data Time") 'définit  l'onglet D
'définit la recherche R (recherche la date en B4  de l'onglet F dans la colonne 1 (=A) de l'onglet D
Set R = D.Columns(1).Find(F.Range("B4").Value, , xlFormulas, xlWhole)
'si il existe au moins une occurrence trouvée, définit la cellule de destination DEST
If Not R Is Nothing Then Set DEST = R.Offset(0, 3)
Set PL = F.Range("B2").CurrentRegion 'définit la plage PL
Set PL = PL.Offset(2, 3).Resize(PL.Rows.Count - 2, 3) 'redéfinit la palge PL
PL.Copy 'copie la plage PL
DEST.PasteSpecial (xlPasteValues) 'colles les valeurs de la plage PL dans la cellule de destination DEST
End Sub
 
Re : Macro pour copier/coller données en fonction de la date

Bonjour Florian95, hello Robert,

Une solution utilisant un tableau VBA :

Code:
Sub Copie()
Dim mois As Range, t, i As Variant
With Sheets("Fiche Paie")
  Set mois = .[B2] 'peut varier
  t = .Range(mois(3, 4), mois(65000, 4).End(xlUp)) 'matrice
End With
With Sheets("Data Time")
  i = Application.Match(mois(3), .[A:A], 0)
  If IsNumeric(i) Then .Cells(i, 4).Resize(UBound(t)) = t
End With
End Sub
L'exécution est plus rapide s'il y a beaucoup de mois à copier.

Bien sûr il faudra ajouter une boucle pour les analyser.

A+
 
Re : Macro pour copier/coller données en fonction de la date

Re,

Avec CurrentRegion comme Robert c'est mieux en effet :

Code:
Sub Copie()
Dim mois As Range, t, i As Variant
Set mois = Sheets("Fiche Paie").[B2].CurrentRegion 'peut varier
t = mois(3, 4).Resize(mois.Rows.Count - 2) 'matrice, plus rapide
With Sheets("Data Time")
  i = Application.Match(mois(3, 1), .[A:A], 0)
  If IsNumeric(i) Then .Cells(i, 4).Resize(UBound(t)) = t
End With
End Sub
A+
 
Re : Macro pour copier/coller données en fonction de la date

Re,

Une dernière solution :

Code:
Sub Copie()
Dim mois As Range, t, i As Variant
Set mois = Sheets("Fiche Paie").[B2] 'peut varier
t = mois(3, 4).Resize(Application.Count(mois.EntireColumn) - 1) 'matrice
With Sheets("Data Time")
  i = Application.Match(mois(3), .[A:A], 0)
  If IsNumeric(i) Then .Cells(i, 4).Resize(UBound(t)) = t
End With
End Sub
C'est celle que je préfère car elle permet, si nécessaire, d'avoir des tableaux de mois jointifs.

A+
 
Re : Macro pour copier/coller données en fonction de la date

Bonjour Robert,

Un grand merci pour cette réponse complète et qui fonctionne parfaitement.

Bravo et merci !

Florian
 
Re : Macro pour copier/coller données en fonction de la date

Bonjour le fil, bonjour le forum,

@Job... Il faut que tu arrêtes de picoler ces alcools forts ! Tu vois le résultat, Malin ? Tu deviens transparent...
@Florian... pas très gentil pour Job qui en plus propose des solutions plus efficaces et élaborées que la mienne...
 
Re : Macro pour copier/coller données en fonction de la date

Mea culpa !!

@Robert : j'avais opté pour cette solution quelques secondes après avoir vu le poste. Merci encore

@Job : j'ai vu vos solutions à l'instant et merci beaucoup pour vos solutions que je vais regarder également ! merci aussi !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…