Comme indiqué dans les commentaires, ne peut pas sélectionner Sheets
dans VBA qui ne sont pas actifs (ou Range
sur eux).
Par exemple le code suivant
Sheets(1).Activate
Sheets(2).Range("A1").Select
provoque l'erreur que vous recevez.
Dans votre cas, il semble que vous essayez de Select
une feuille qui n'est pas actif - votre objet mainWS
est sans doute pas le ActiveSheet
au point que vous appelez ce code. Un moyen facile de tester si cela se produit est si vous ajoutez ce qui suit à la fin de votre code:
if (ActiveSheet.Name <> mainWS.Name) then
msgbox ("Going to crash after clicking ok!")
end if
mainWS.Select
Notez que vous pouvez vous référer à la feuille de calcul activée avec la commande ActiveSheet
soit obtenir des propriétés ou quelles que soient les autres opérations vous êtes intéressé à faire.
Cette erreur peut également se produire si vous travaillez en boucle sur toutes les feuilles de calcul du classeur et que des feuilles masquées sont présentes. Lookout pour ça.
dernier, et sans rapport avec votre message d'erreur spécifique, je suppose que vous déclarez ces variables quelque part et n'a tout simplement pas les copier ici - sinon j'envisager d'utiliser Option Explicit
comme vous pouvez souvent courir dans toutes sortes de problèmes sans avoir Option Explicit
en haut de votre code VBA.
Vos feuilles effectivement nommés sheet1/Feuil3? Le classeur est-il nommé de la même manière? – enderland
Est-ce que 'mainWB' est actif? –
Et donc '.Select' devrait être évité :) Voir ce lien http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select –