Microsoft 365 copier valeur cellule dans autre classeur en fonction de date

rubis54

XLDnaute Occasionnel
Bonjour tout le monde

je voudrai pouvoir copier la valeur de la cellule I28 de la feuille FICHE du classeur PERSONNEL vers le classeur RECAP sur la feuille RESULTATS en fonction de la date.

Dans le tableau de la feuille RESULTATS il y a un tableau avec les mois de l'année. Donc tous les mois je voudrai copier la valeur de la cellule I28 citée ci-dessus dans la colonne du tableau avec les mois.

Pourriez vous SVP m'aider avec la macro qui se trouve dans le classeur PERSONNEL, elle me marque toujours une erreur à la ligne, voici une copie de la macro, mais elle est aussi placée dans le classeur PERSONNEL.

Sub ActualiserRECAP()

Sheets("Fiche1").Select
i = Range("D5").Value
Range("I28").Select
Range("I28").Activate
Selection.Copy
Workbooks("RECAP").Sheets("RESULTATS").Select
Range("B7").Select

ActiveCell.Offset(1, i).Range("B1").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False
Sheets("TDB").Select

End Sub

Je vous Remercie d'avance
Cdt Rubis
 

Pièces jointes

  • PERSONNEL.xlsm
    61.6 KB · Affichages: 10
  • RECAP.xlsm
    64.2 KB · Affichages: 9
Solution
Re Wayki,
Non je sais ; je plaisantais mais certains !!!
par contre j'ai une question Wayki.
Admettons que je rajoute deux cellules à reopier, quel changement dois-je faire dans ton texte vba les deux cellules à rajouter se situent juste après la I28, donc I29 et I30.
Si tu pourrais m'expliquer cela STP.

Merci d'avance.
A+
Même si vous avez trouvé ça peut aider des personnes.
C'est cette ligne :
Fiche1.Range("I28").Copy
Remplacer par :
Fiche1.Range("I28:I30").Copy
Veillez à ce que les destinations correspondent par contre
A +

Wayki

XLDnaute Occasionnel
Bonjour,
C'est un peu du n'importe quoi ce code.
Sur la feuille personnel, remplacez les mois par 01 pour janvier, 02 pour février etc (mettre les nombres en texte pour que le 0 apparaisse devant le chiffre), afin d'obtenir une date au format jj/mm/aaaa.
J'ai supposé que la somme copiée était un salaire et qu'il fallait la mettre dans la case correspondante au mois indiqué.
Essayez donc ceci plutôt :
VB:
Public Sub ActualiserRECAP1()
Dim date1 As Date, R_Date, Salaire, Resultats As Worksheet, Fiche1 As Worksheet
Set Resultats = Workbooks("Recap").Worksheets("Resultats")
Set Fiche1 = Workbooks("personnel").Worksheets("Fiche1")
Fiche1.Range("I28").Copy
date1 = "01/" & Fiche1.Range("D5") & "/" & Fiche1.Range("D3")
Salaire = Resultats.Cells.Find("Salaires").Row
R_Date = Resultats.Cells.Find(date1).Column
Resultats.Cells(Salaire, R_Date).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False
Sheets("TDB").Select
End Sub

Sheets("TDB").Select
Nous n'avons pas de feuille correspondante à la partie en gras, à vérifier par vos propres soins.
A +
 

rubis54

XLDnaute Occasionnel
Bonjour,
C'est un peu du n'importe quoi ce code.
Sur la feuille personnel, remplacez les mois par 01 pour janvier, 02 pour février etc (mettre les nombres en texte pour que le 0 apparaisse devant le chiffre), afin d'obtenir une date au format jj/mm/aaaa.
J'ai supposé que la somme copiée était un salaire et qu'il fallait la mettre dans la case correspondante au mois indiqué.
Essayez donc ceci plutôt :
VB:
Public Sub ActualiserRECAP1()
Dim date1 As Date, R_Date, Salaire, Resultats As Worksheet, Fiche1 As Worksheet
Set Resultats = Workbooks("Recap").Worksheets("Resultats")
Set Fiche1 = Workbooks("personnel").Worksheets("Fiche1")
Fiche1.Range("I28").Copy
date1 = "01/" & Fiche1.Range("D5") & "/" & Fiche1.Range("D3")
Salaire = Resultats.Cells.Find("Salaires").Row
R_Date = Resultats.Cells.Find(date1).Column
Resultats.Cells(Salaire, R_Date).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False
Sheets("TDB").Select
End Sub

Sheets("TDB").Select
Nous n'avons pas de feuille correspondante à la partie en gras, à vérifier par vos propres soins.
A +
Re Wayki,
je reviens vers vous car nous avons opté pour votre solution. Impeccable ! Merci pour votre aide. C'est très sympa .
Cdt Rubis
 

Wayki

XLDnaute Occasionnel
Re Wayki,
Non je sais ; je plaisantais mais certains !!!
par contre j'ai une question Wayki.
Admettons que je rajoute deux cellules à reopier, quel changement dois-je faire dans ton texte vba les deux cellules à rajouter se situent juste après la I28, donc I29 et I30.
Si tu pourrais m'expliquer cela STP.

Merci d'avance.
A+
Même si vous avez trouvé ça peut aider des personnes.
C'est cette ligne :
Fiche1.Range("I28").Copy
Remplacer par :
Fiche1.Range("I28:I30").Copy
Veillez à ce que les destinations correspondent par contre
A +
 

rubis54

XLDnaute Occasionnel
Même si vous avez trouvé ça peut aider des personnes.
C'est cette ligne :
Fiche1.Range("I28").Copy
Remplacer par :
Fiche1.Range("I28:I30").Copy
Veillez à ce que les destinations correspondent par contre
A +
Bonjour Wayki,

Moi j'avais trouvé cela et ça fonctionne bien.
Sub ActualiserRECAP()
Workbooks("recap.xlsm").Sheets("RESULTATS").Cells(22, WorksheetFunction.Match(Range("D5"), Range("AA1:AA12"), 0) + 2) = Range("I28")
Workbooks("recap.xlsm").Sheets("RESULTATS").Cells(23, WorksheetFunction.Match(Range("D5"), Range("AA1:AA12"), 0) + 2) = Range("I29")
End Sub

Si cela peut aider quelqu'un.

Merci pour ton aide.
A+
 

Statistiques des forums

Discussions
297 994
Messages
1 964 952
Membres
200 778
dernier inscrit
ons123