Copier/coller complexe de plusieurs plages de cellules

Bonjour au forum,

Je rencontre quelques difficultés pour modifier un code qui permet de copier/coller plusieurs plages de cellules d'un endroit d'une feuille à un autre endroit de la feuille selon deux critères.

Le problème est assez complexe, alors je vais essayer d'être le plus clair possible...

Cette feuille est composée de deux parties :

- la base des horaires de travail de mon équipe, dont le tournus s'effectue sur 48 semaines (horaires chablon, partie gauche de la feuille). Cette partie ne changera jamais et c'est cette partie qui devra être copiée.

- les horaires qui seront affichés pour mes collaborateurs, de la semaine n°1 à la 52 ou 53 selon l'année. Partie droite de la feuille, c'est ici que le collage sera fait.

Amir du forum m'avait aidé à écrire ce code qui fonctionne très bien pour ce que je voulais à l'époque :

Private Sub CommandButton1_Click()
CommandButton1.Enabled = False
Dim i As Integer, counter As Integer, Strt As Integer
Dim x As Integer
If ComboBox1.ListIndex = -1 Or ComboBox2.ListIndex = -1 Then
MsgBox "Veuillez compléter les choix "
CommandButton1.Enabled = True
Exit Sub
End If

Dim Mdp As String
 Mdp = Application.InputBox("Veuillez introduire votre mot de passe :")
If Mdp <> "mdp1" Then MsgBox "Accès refusé !": Exit Sub

Sheets("Chablon").Unprotect Password:="mdp"
Label4.Width = 0
Label5.Caption = 0 & "%"
counter = 0
i = 0
x = ComboBox1.ListIndex
With Sheets("Chablon")
Do Until counter = nb
counter = counter + 1
.Range(.Cells(11 + (x * 26), 14), .Cells(11 + (x * 26) + 21, 23)).Value = _
.Range(.Cells(11 + (i * 26), 2), .Cells(11 + (i * 26) + 21, 11)).Value
Label4.Width = (counter) * (222 / nb)
Label5.Caption = Round(((counter * 100) / nb)) & "%"
DoEvents
x = x + 1
i = i + 1
If i = 48 Then i = 0
If x = nb Then x = 0
Loop
Label4.Width = 222
Label5.Caption = 100 & "%"
MsgBox "Opération terminée"
End With
Range("J5").Value = ComboBox1.Value
CommandButton1.Enabled = True
Sheets("Chablon").Protect Password:="mdp"
End Sub

Celui-ci colle les semaines de la partie chablon (en partant toujours de la semaine n°1 du chablon) dans la partie horaire à l'endroit indiqué via l'userform, en tenant compte du nombre de semaines de l'année. Une fois que le copiage atteint la 48ième semaine, celui-ci reprend à la 1ère semaine du chablon pour coller à la suite des horaires, jusqu'à boucler la boucle (donc jusqu'à la semaine précèdent celle où le collage a été effectué).

Mon besoin aujourd'hui est légèrement différent :

A partir de l'endroit où le collage a été choisi, on copie et colle les semaines du chablon de la n°1 à 48, puis si la semaine n°52 ou 53 des horaires n'a pas été atteinte, on reprends la copie à partir de la semaine n°1 du chablon jusqu'à cette semaine finale (52 ou 53 selon le choix fait dans l'userform).

Pour les semaines qui précèdent l'endroit où le collage a été choisi, on copie et colle les semaines du chablon de la n°48 à 1, jusqu'à la semaine n°1 des horaires, puis si la semaine n°1 des horaires n'a pas été atteinte, on reprends la copie à partir de la semaine n°48 du chablon jusqu'à atteindre la semaine n°1 des horaires.

Je conçois que c'est un problème assez complexe, et c'est très difficile a expliquer par écrit...

Ci-joint un fichier exemple.

Un très grand merci à ceux qui prendront le temps de m'aider

18horaire-test.xlsm (214.12 Ko)

Bonjour

Si tjrs on commence le copiage à partir de S no 1 et on colle tjrs dans S no 38

Essayer ca

Bonjour Amir,

Merci beaucoup pour ta réponse !

Oui c'est exactement ça, ça fonctionne très bien.

Il y a juste un problème si on choisi le collage dans les semaines 1,2,3,4 et 5 : celui-ci s’arrête respectivement aux semaines 48,49,50,51 et 52...

Il faudrait qu'il recommence le collage à partir de la semaine n°1 du chablon quand il arrive à cette dernière.

Vois-tu ce que je veux dire ?

Merci pour ton aide en tout cas !

Bonjour Nico

votre explication n ai pas clair pour moi ,que voulez vous faire quand les chablons arrivent a 48 et les horaires arrivent a 53(par exemple) en meme temps ?

en tt cas Essayer ça :

Bonjour Amir,

Après plusieurs tests sur votre nouveaux fichiers, il semble que vous ayez parfaitement compris car c'est exactement ce qu'il me fallait !

Vraiment un grand merci pour votre aide très précieuse !

Excellente journée à vous

Rechercher des sujets similaires à "copier coller complexe plages"