2017-10-13 18 views
0

J'essaie d'écrire du code qui sélectionne certaines feuilles (pas toutes, et les feuilles ne sont pas toutes les unes à côté des autres), efface la la même plage de cellules de chaque, les désélectionne, sélectionne un autre groupe de feuilles, efface la même plage de chacune, etc. Voici le code.VBA pour sélectionner uniquement certaines feuilles dans un classeur pour effacer les contenus d'une plage

ActiveWorkbook.Sheets(Array("J2a", "J7", "J10", "J11", "J13", "J17", "J18", "J19")).Select 
    Range("C12:E14, C22:E24, C32:E34, C42:E44, C52:E54, C62:E64, C72:E74,C82:E84, C92:E94, C102:E104, C112:E114, C122:E124, C132:E134, C142:E144, C152:E154").ClearContents 
     ThisWorkbook.Worksheets("Control").Activate 

Le problème est qu'il autorise uniquement le contenu de la feuille active (qui est le premier dans la liste de sélection). Donc, j'ai changé le code à la suivante que je pensais qu'il doit y avoir un moyen d'effacer le contenu sur plusieurs feuilles sans sélectionner les feuilles:

ActiveWorkbook.Sheets(Array("J2a", "J2b", "J7", "J10", "J11", "J13 DM", "J13 DS", "J17", "J18", "J19")).Range("C12:E14, C22:E24, C32:E34, C42:E44, C52:E54, C62:E64, C72:E74, C82:E84, C92:E94, C102:E104, C112:E114, C122:E124, C132:E134, C142:E144, C152:E154").ClearContents 

Mais maintenant, je reçois une erreur qui dit: « Cet objet ne gère pas cette propriété ou méthode.

Qu'est-ce que je fais mal? les deux lignes semblent fonctionner indépendamment ... Aussi pour ma propre compréhension, quel est l'objet dans l'erreur? ActiveWorkbook?

Répondre

1

Vous pouvez utiliser quelque chose comme le code ci-dessous. Cela va parcourir toutes les feuilles qui ont leur nom dans le tableau sheetNamesArray et effacer toutes les plages que vous avez définies dans rangesArray.

Si vous souhaitez effacer d'autres feuilles avec d'autres plages, je vous suggère de répéter cette opération avec d'autres valeurs.

Remarque: Cela suppose que toutes vos feuilles se trouvent dans le même classeur.

Dim sheetNamesArray 
Dim rangesArray 

'Array with the names of all of your sheets 
sheetNamesArray = Array("Sheet1", "Sheet2", "Sheet3") 
'Array with all of your ranges 
rangesArray = Array("A2:B2", "A4:B4", "A6:B6") 

'Go through each sheet in the array 
For Each sheetName In sheetNamesArray 
    'Go to each range in the sheet 
    For Each rangeName In rangesArray 
     'Clear the value 
     ThisWorkbook.Sheets(sheetName).Range(rangeName).Clear 
    Next rangeName 
Next sheetName 
+0

@RichPrag Cela a-t-il fonctionné? – Teasel

+0

Oui c'est fait! merci beaucoup, m'a vraiment trié. –

+0

@RichPrag De rien! Content d'avoir aidé – Teasel