Macro copier plage depuis feuille précédente

Bonjour,

Je vous explique, je souhaite réaliser une macro pour copier une plage de cellule depuis la feuille précédente, voici le code que j'ai réalisé : (vous avez vu je commence à macroter un peu ça rigole plus !!)

Je vous ai mis aussi en pièce jointe le fichier si vous voulez voir à quoi ça ressemble.

Sub Copier()
Dim sh As Integer
sh = ActiveSheet.Index - 1
    If sh = 0 Then
        MsgBox "Cette feuille est en première position et ne peut donc pas" & vbCrLf _
        & "renvoyer la cellule dans la feuille précédente"
    Else
        Sheets(sh).Range("Q11:Y350").Copy
        Sheets(sh + 1).Range("N11:V350").PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End If
End Sub

La macro fonctionne bien, cependant je souhaiterais que la plage soit en fonction de la dernière affaire créée donc que lorsque j'ajoute une affaire la plage augmente et donc ne pas avoir une plage fixe.

Deuxième point, la je copie pour la première personne (cellule jaune) mais en fait je souhaiterai copier aussi les autres plages (cellule rouge, bleu...), c'est à dire copier la plage Q11:Y350, AC11:Ak350, A011:AW350 et pareil que les plages soient collées respectivement dans les cellules N11, Z11, AL11... Est-ce envisageable, ou faut-il que je créé une macro pour chaque personne?

En fait le but, c'est que les employés remplissent leur planning prévisionnel et que la semaine suivante on puisse copier ce qu'ils avaient envisagés la semaine précédente mais que derrière ils puissent modifier leur prévision selon les infos reçus ou non. (un peu compliqué)

En attente de vos avis !!

https://www.cjoint.com/c/DLrlFMGMUUh

Bonjour,

Pour commencer ... tu pourrais tester le code suivant :

Sub Copier()
Dim sh As Integer
Dim i As Long
sh = ActiveSheet.Index - 1
    If sh = 0 Then
        MsgBox "Cette feuille est en première position et ne peut donc pas" & vbCrLf _
        & "renvoyer la cellule dans la feuille précédente"
    Else
        i = Sheets(sh).Range("B65536").End(xlUp).Row
        Sheets(sh).Range("Q11:Y" & i).Copy
        Sheets(sh + 1).Range("N11").PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End If
End Sub

Bonjour à tous et meilleurs voeux pour cette année 2015.

Je me permets de réagir sur le sujet, j'ai utilisé ton code James007 en essayant d'ajouter le fait de copier plusieurs plages à coller dans différentes cellules, voici l'exemple :

Sub Copier()
Dim sh As Integer
Dim i As Long
sh = ActiveSheet.Index - 1
    If sh = 0 Then
        MsgBox "Cette feuille est en première position et ne peut donc pas" & vbCrLf _
        & "renvoyer la cellule dans la feuille précédente"
    Else
        i = Sheets(sh).Range("B65536").End(xlUp).Row
        Sheets(sh).Range("Q11:Y" & i, "AC11:AK" & i).Copy
        Sheets(sh + 1).Range("N11", "Z11").PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End If
End Sub

En gros je souhaite copier la plage Q11:Y et AC11:AK et les coller respectivement dans la cellule N11 et Z11, mais cela ne fonctionne pas vous auriez une petite idée??

Merci d'avance pour votre aide !

Bonjour et Meilleurs Voeux ...

Ci-dessous le code modifié ...

Sub Copier()
Dim sh As Integer
Dim i As Long
sh = ActiveSheet.Index - 1
    If sh = 0 Then
        MsgBox "Cette feuille est en première position et ne peut donc pas" & vbCrLf _
        & "renvoyer la cellule dans la feuille précédente"
    Else
        i = Sheets(sh).Range("B65536").End(xlUp).Row
        Sheets(sh).Range("Q11:Y" & i).Copy
        Sheets(sh + 1).Range("N11").PasteSpecial xlPasteValues
        Sheets(sh).Range("AC11:AK" & i).Copy
        Sheets(sh + 1).Range("Z11").PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End If
End Sub

Hum ok je suis un boulet, je cherchais trop compliqué, il suffisait de répéter la manip...

Merci beaucoup pour cette réponse rapide James!

Re,

Content que tu aies la solution à ton problème ...

Merci pour tes remerciements ...

Rechercher des sujets similaires à "macro copier plage feuille precedente"