Dans VBA pour Excel, quelle est la différence entreSheets.Select
etSheets.Activate
?
La différence réside dans leur flexibilité.
Activate
transforme la feuille spécifiée en feuille active et ne peut l'appliquer qu'à une seule feuille
Select
permet éventuellement d’étendre les feuilles actuellement sélectionnées pour inclure la feuille spécifiée, par exemple
Worksheets("Sheet2").Select Replace:=False
et permettent également de sélectionner un tableau de feuilles
Sheets(Array("Sheet3", "Sheet2")).Select
Dans leur forme minimale, Select
et Activate
font la même chose.
Par exemple, si une seule feuille est actuellement sélectionnée (par exemple, Sheet3
) ou si plusieurs feuilles sont sélectionnées mais que en excluant, par exemple, Sheet2
, Worksheets("Sheet2").Select
et Worksheets("Sheet2").Activate
font tous deux de Sheet2
la seule feuille sélectionnée et active.
Par contre, si on dit que Sheet2
et Sheet3
sont sélectionnés et que Sheet2
est la feuille active, alors Worksheets("Sheet3").Activate
laisse les deux feuilles sélectionnées et fait de Sheet3
la feuille active, alors que Worksheets("Sheet2").Select
fait de Sheet3
la feuille sélectionnée et active.
.activate
est-ce que vous cliquez sur l'onglet de la feuille de travail.
.select
vous simule de faire un contrôle et cliquez sur l'onglet. En VBA, vous n'êtes pas encore dans la feuille.
Vous pouvez .select
plus d'une feuille, mais .activate
un seul.
Pour développer ce qui précède: Lorsque le code ci-dessous est exécuté avec Replace: = False, aucun événement de désactivation de feuille de calcul ne se produit sur sheet4. Si Remplacer: = Vrai est utilisé à la place, l'événement de désactivation sera déclenché.
Prévenir l'événement est souhaitable dans la plupart des cas, car il peut provoquer un comportement inattendu.
Cela signifie que select correspond uniquement à CTRL + Un clic sur un onglet de la feuille de calcul SI replace: = false est utilisé.
sous a
Dim rng As Range
Sheet4.Select Replace:=False
Set rng = Selection
Sheet5.Select Replace:=True
Selection = rng.Value
fin sous
Merci pour vos messages car cela m'a aidé à comprendre la différence.
Harvey