Copier plage de valeur sur une autre feuille selon 1 critère
Bonjour,
J'ai besoin d'aide svp pour recopier des plages de cellules d'une feuille à une autre
Je m'explique
Voici ci joint un classeur avec 2 feuilles de calculs
- "2020" : planning des salariés annuel => dans la colonne A on trouve le numéro de semaine (le planning tourne sur 4 semaines, donc de 1 à 4) - en colonne B on retrouve le numéro de semaine de l'année
- Trame de base sur 4 semaines (n° de semaine de 1 à 4 dans la colonne D)
Je voudrais recopier dans la feuille "2020" les valeurs de la feuille "trame de base" selon le numéro de semaine (de 1 à 4 )
Par exemple :
Dans A3 de la feuille "2020" est noté 2
Donc recopier dans les cellules I3:CA9 de "2020"
les valeurs des cellules I10:CA16 de la feuille "Trame de base" car la valeur de D10 est 2 comme la valeur recherchée
Puis
Dans A10 de la feuille "2020" est noté 3
Donc recopier dans les cellules I10:CA16 les valeurs des cellules I17:CA23 car la valeur de D17 est 3 comme la valeur recherchée
Puis pour toute l'année
Pourriez vous m'aider svp ?
J'ai essayé avec des formules mais je me perds
J'essaie en vba mais je ne trouve pas la bonne méthode
Je vous serais très reconnaissant
Cordialement
Slt sylvainpyc, slt le Forum
un essai
Sub CopierPlage()
Dim s As Long
Dim wrsSource As Worksheet
Dim wrsTarget As Worksheet
Set wrsSource = Worksheets("Trame de base")
Set wrsTarget = Worksheets("2020")
Application.ScreenUpdating = False
With wrsSource
For s = 10 To .Cells(Rows.Count, "D").End(xlUp).Row Step 7
.Range("I" & s & ":CA" & s + 6).Copy wrsTarget.Range("I" & s - 7)
Next s
End With
Application.ScreenUpdating = True
End Sub
Bonne nuit
bonjour,
j'étais en vacances, je n'ai pas pu regarder avant, l'ordi est au travail
Je vous remercie de votre aide
Votre code fonctionne mais ne remplit que les 3 premières semaines de la feuille 2020 (semaine 2,3 et 4 mais pas la semaine 1)
comme sur le fichier ci joint
Je ne comprends pas votre code => pourries vous svp m'expliquer votre code?
Pour avoir la semaine 1 j'ai essayé de corriger s=10 par s=3
For s = 10 To .Cells(Rows.Count, "D").End(xlUp).Row Step 7
mais j'ai un message d'erreur
Comment faire svp pour reproduire ce code sur toute la feuille 2020 en prenant en compte les 4 semaines ?
PS : j'ai sur ce classeur une nouvelle feuille qui se nomme "conges"
J'essaie de récupérer sur chaque ligne le nom du salarié, la date de début et de fin et d’insérer les congés dans la feuille 2020 en insérant le type (ca ou cs ou ...) à la place des horaires.
J'ai commencé mon code mais ca ne fonctionne pas encore
Sub conges()
Derlig = 0
Sheets("Conges").Activate
Derlig = Range("A" & Rows.Count).End(xlUp).Row
MsgBox Derlig
For i = 4 To Derlig
nom = Cells(i, 1)
typ = Cells(i, 2)
Ddeb = Cells(i, 3)
Dfin = Cells(i, 4)
Call EnregConges(nom, typ, Ddeb, Dfin)
Next i
End Sub
Sub EnregConges(nom, typ, Ddeb, Dfin)
MsgBox nom & " - " & typ & " - " & Ddeb & " - " & Dfin
Sheets("2020").Activate
Set Plage2 = ThisWorkbook.Worksheets("2020").Range("d3:d53")
For Each cell In Plage2
If cell.Value >= CDate(Ddeb) And cell.Value <= CDate(Dfin) Then
col1 = cell.Column
col = Mid(cell.Address, 2, InStr(2, cell.Address, "$") - 2)
lig = cell.Row
MsgBox cell.Value & " - " & cell.Row & " - " & col1 & " - " & lig
cell(lig, col1 + 5).Select
cell(lig, col1 + 5) = 2
End If
Next
End Sub
Si vous pourriez me guider svp, je vous serais très reconnaissant
Je vous remercie beaucoup de votre aide précieuse
Cordialement
Re
J'ai ajouté dans la feuille trame de base la semaine 1 après la semaine 4
Ce qui permet de rajouter la semaine 1 dans la feuille 2020
Je voudrais maintenant reproduire ce code pour toute l l'année de la feuille 2020.
PS : je voudrais si possible que soit vérifié que le numéro de semaine de la colonne A de la feuille 2020 corresponde au numéro de semaine de la colonne D de la feuille trame de base => en cas de changement des numeros de semaine de la colonne D de 2020 alors que les valeurs soient modifiés selon le numéro de semaine de la trame de base
Par exemple si je modifie en A3 de la feuille 2020 le numéro de semaine (par ex 3 au lieu de 2, que les horaires soient mis à jour et correspondent à la semaine 3 de la trame de base)
Je vous remercie beaucoup
Cordialement
Bonjour,
J'ai réglé mon pb pour insérer les congés dans ma feuille 2020
Mais je n'arrive pas à régler le premier pb :
J'ai ajouté dans la feuille trame de base la semaine 1 après la semaine 4
Ce qui permet de rajouter la semaine 1 dans la feuille 2020
Je voudrais maintenant reproduire ce code pour toute l l'année de la feuille 2020.
c'est à dire recopier dans la feuille "2020" les semaines de la feuille "trame de base" en respectant la règle suivante :
que le numéro de semaine de la colonne A de la feuille "2020" corresponde au numéro de semaine de la colonne D de la feuille "trame de base"
Pourriez vous m'aide svp ?
Je vous remercie beaucoup
Cordialement