Re : Définir des plages en VBA pour copier/coller dasn autre classeur
Bonjour.
Pour copier/coller des plages vous n'avez jamais besoin d'activer ni de sélectionner quoi que ce soit:
ExpressionRangeSource.Copy Destination:=ExpressionRangeCible
ExpressionRangeSource et ExpressionRangeCible doivent être des expressions Range définies d'une des façons suivantes par ordre décroissant de préférences dans ce qui est possible selon le contexte:
- Une variable déclarée As Range convenablement initialisée préalablement par un Set,
- ExpressionWorksheet.[AddresseOuNom]
- ExpressionWorksheet.[AdrCelDép].Resize(NbrLgn, NbrCol))
- ExpressionWorksheet.Range(ExpressionStringAddresseOuNom)
- ExpressionWorksheet.Cells(LgnDépart, ColDépart).Resize(NbrLgn, NbrCol))
- ExpressionWorksheet… Il y a quelques autres façons d'isoler une expression Range d'une feuille, je ne vais pas essayer de les énumérer toutes, j'en oublierais certainement.
Avec ExpressionWorksheet, par ordre décroissant de préférences dans ce qui est possible selon le contexte :
- Le mot clé Me si le code est écrit dans le module associé à la feuille concernée,
- Le CodeName de la feuille du classeur portant le projet VBA contenant ce code,
- Une variable déclarée As Worksheet convenablement initialisée préalablement par un Set,
- ActiveSheet pour la feuille active du classeur actif,
- ExpressionWorkbook.Worksheets(NomOuIndex)
Avec ExpressionWorkbook, par ordre décroissant de préférences dans ce qui est possible selon le contexte :
- ActiveWorkbook pour le classeur actif,
- Une variable déclarée As Workbook convenablement initialisée préalablement par un Set,
- Workbooks(NomOuIndex)
- ThisWorkbook pour le classeur portant le projet VBA contenant ce code, mais dans ce cas, puisqu'il s'agit d'en prendre une feuille, autant en prendre le CodeName (c'est le nom de constante Worksheet figurant dans la rubrique "Microsoft Excel Objets" à gauche du nom Excel de la feuille rappelé entre parenthèses)
À +