Coller plage cellules au même endroit dans onglet suivant

Bonjour,

Je suis débutant sur VBA et nouveau sur ce forum.

Je cherche à écrire une macro qui me permettrait de copier une plage de cellules sélectionnée et d'en coller le format sur la même plage de l'onglet suivant.

Par exemple, si je sélectionne la plage ("c5:e7") dans l'onglet actif, j'aimerais que la macro me permette, une fois lancée, de copier le format de cette plage dans l'onglet suivant sur les cellules ("c5:e7") également.

Je n'ai pas joint de fichier car j'ai conscience qu'il s'agit d'une opération relativement simple, mais je suis surtout perdu dans le langage VBA à utiliser.

J'avais pensé utiliser une function INDIRECT(ADDRESS) mais n'ai pas réussi à trouver sur le forum l'équivalent de cette fonction sur VBA.

Merci beaucoup d'avance pour votre aide,

Akilis

Bonjour AkilisScPo89,

Qu'entends-tu par "coller le format"?

Un copier/coller des valeurs avec font/couleur/police etc.?

Dans ce genre de situation, je t'invite à utiliser l'enregistreur de macros.

  • tu lances l'enregistrement
  • tu réalise l'action que tu souhaites automatiser
  • tu arrêtes l'enregistrement et tu regardes le code généré

https://youtu.be/WgJSenE3f3Y?t=93

Après il suffit d'éditer la macro générée automatiquement. Reviens vers moi si tu bloques après cela en copiant le code généré par l'enregistrement

Bonjour d3d9x, et merci pour ta réponse et ton temps !

J'aurais dû en effet être plus précis sur mes tentatives jusqu'à présent.

Je viens d'enregistrer la macro en effectuant l'opération. Voilà le code généré :

Sub Macro1()
    Range("G11:I11").Select
    Selection.Copy
    ActiveSheet.Next.Select
    Range("G11").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
End Sub

Ce code ne me satisfait pas pour les raisons suivantes :

1) j'aimerais que la plage ne soit pas (G11:I11) mais une plage dynamique, celle que je sélectionne dans Excel ;

2) j'apprécie que la macro ne "fixe" pas l'onglet, mais utilise bien

ActiveSheet.Next.Select

3) j'aimerais que la plage de "collage" dans l'onglet suivant ne soit pas Range("G11") mais la même plage que celle que j'ai sélectionnée dans mon premier onglet.

Autrement dit, si on était sur du Excel non-VBA :

  • je copie dans l'onglet 1 une plage (disons (H7:L20)) ;
  • je colle dans l'onglet 2 le format de cette plage à partir de la cellule =INDIRECT(ADDRESS(ROW(H7);COLUMN(H7);1;1;"Sheet2")).

Je suis désolé si je ne suis pas clair, n'hésite pas à me le dire et j'essaierai de reformuler.

Sub Macro1()
Dim numLigne As Integer, numColonne As Integer, numFeuille As Integer

numLigne = Selection.Row
numColonne = Selection.Column

numFeuille = ActiveWorkbook.ActiveSheet.Index

If ActiveWorkbook.Sheets.Count < numFeuille + 1 Then
    MsgBox "il n'y a pas de feuille après celle-ci"
Else
    Selection.Copy
    With ActiveWorkbook.Sheets(numFeuille + 1)
        .Select
        .Cells(numLigne, numColonne).Select
        .Paste
    End With

End If
End Sub

J'attends ton avis Si le problème est résolu merci de marquer comme résolu.

Merci beaucoup pour ton aide; ta proposition marche parfaitement.

Je vais pouvoir l'adapter pour ne coller que le format par exemple, donc c'est un bon practise pour moi

Il faut que je comprenne absolument cette utilisation d'"integrer" avant de re-poster sur ce site pour ne pas trop polluer les demandes que j'aurai, à coup sûr, à l'avenir.

Encore merci,

Akilis

Rechercher des sujets similaires à "coller plage meme endroit onglet suivant"