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 = Falsequelqu'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:=xlFormatFromLeftOrAboveOn 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:=xlPasteValuesOn 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:=xlToLeftOn 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 Suba vous relire
merci pour les explications
à+