Explications sur ce code

bonjour,

j'ai récupéré ce code qui fait une copie, mais je n'arrive pas à le déchiffrer :

Cells(8, [ap7]).Offset(, 46).Resize(47).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("as8:as55").Copy
        Cells(8, [ap7]).Offset(, 46).PasteSpecial Paste:=xlPasteValues
        Range("cy8:cy55").Delete Shift:=xlToLeft
        Application.CutCopyMode = False

quelqu'un saurait il / elle, m'expliquer ?

merci

Bonjour,

Cells(8, [ap7]).Offset(, 46).Resize(47)

Cette expression définit une plage unicolonne de 47 lignes à partir de la ligne 8, la colonne étant des décalée de 46 col. par rapport à la colonne dont le numéro se trouve dans la cellule AP7 : Ouf !

Cells(8, [ap7]).Offset(, 46).Resize(47).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

On insère des cellules à gauche de celles définies ci-dessus (une partie de colonne, donc), ce fragment prend le format de la colonne à sa gauche (argument CopyOrigin, qui est inutile pour le même résultat car c'est sa valeur par défaut).

Range("as8:as55").Copy
Cells(8, [ap7]).Offset(, 46).PasteSpecial Paste:=xlPasteValues

On copie la plage AS8:AS55 et on la colle (en collage spécial Valeurs) sur la plage que l'on vient d'insérer.

Range("cy8:cy55").Delete Shift:=xlToLeft

On supprime la plage CY8:CY55 (unicolonne) avec comblement par les cellules se trouvant à droite qui se décalent donc vers la gauche.

Application.CutCopyMode = False

Ça ! C'est un des prototypes de code inutile issu de l'enregistreur. Cette commande vide le presse-papier.

Pourquoi inutile ? En effectuant une copie, on a mis Excel en mode Copy (ce qui se manifeste par un scintillement du pourtour de la zone copiée). Le collage maintient Excel en mode Copy (on pourrait coller à nouveau ce qui est toujours dans le presse-papier).

Mais la manoeuvre suivante de suppression a pour effet d'amener Excel à vider automatiquement le presse-papier.

Et on revide donc le presse-papier déjà vide .

La présence de ce code dans le code enregistré s'explique par le fait que l'intéressé procédant à l'enregistrement a fait une action aboutissant à ce résultat (facile, elles ont quasiment toutes cet effet à part coller !), et l'enregistreur enregistre donc avec tous les mouvements de l'intéressé, qui a bien vidé le presse-papier sans avoir conscience de le faire...

Cordialement.

Bonjour DAN

le code ne serai t il pas ainsi???

Sub Macro1()
'
' Macro1 Macro
'

'
      Cells(8, 7).Offset(, 46).Resize(47).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
            Range("as8:as55").Copy
            Cells(8, 7).Offset(, 46).PasteSpecial Paste:=xlPasteValues
            Range("cy8:cy55").Delete Shift:=xlToLeft
            Application.CutCopyMode = False
End Sub

a vous relire

merci pour les explications

à+

Rechercher des sujets similaires à "explications code"