|
LES FEUILLES D'EXCEL
Dans Excel, vous avez 2 types de feuilles, les feuilles de calcul et
les feuilles de graphique. Les 1ères représente
la collection Worksheets et les 2es la collection Charts.
Cette page est consacrée aux feuilles de calcul.
Pour travailler avec une feuille, vous pouvez utiliser les syntaxes
suivantes :
- Worksheets(n), où n est le
numéro d'index de la feuille (de gauche à droite).
- Worksheets("NomOnglet.xls"),
où NomOnglet est le texte situé sur l'onglet de la feuille.
- Le nom attribué à la feuille par l'intermédiaire
de la propriété Name :
- Dans la fenêtre VBA, affichez la fenêtre Propriétés (Affichage/Fenêtre
propriétés)
- Sélectionnez une feuille de calcul
- Dans cette fenêtre Propriétés vous
visualisez la propriété Name (à gauche)
et le nom attribué à la feuille (à droite).
Vous pouvez modifier ce nom, si possible en respectant cette
règle : commencez le nom par flle, ce qui donne par
exemple : flleIntro.
- Vous pouvez dorénavent utiliser la feuille ainsi,
flleIntro.Range("A1")="Essai
d'utilisation d'une feuille"
- Vous pouvez connaître ou attribuez un nom à la
feuille avec la propriété CodeName.
- ActiveSheet représente la
feuille active (celle dont l'onglet est blanc et le nom est en gras.
Pour ajouter une ou plusieurs feuilles à un classeur, utilisez
la méthode Add :
Worksheets.Add(Before, After, Count) où Before représente
la feuille qui doit suivre la nouvelle, After représente
la feuille qui doit précéder la nouvelle et Count le
nombre de feuilles à insérer. Si vous renseignez Before ne
renseignez pas After et inversement.
Si vous n'en renseignez aucun la nouvelle est ajoutée avant la
feuille active.
ActiveSheet.Name permet de lire ou
modifier le texte de l'onglet. Exemple :
ActiveSheet.Range("A1") = ActiveSheet.Name
ActiveSheet.Names permet de lire uniquement
les noms propres à la feuille de calcul. Exemple : nommez Feuil1!Premiere,
la cellule A1 et Feuil1!Seconde, la cellule B1, Feuil1 étant
le nom de l'onglet. Puis tapez et exécutez cette procédure
:
Sub essai()
Dim Nom As Name
Dim N As Byte
N = 1
For Each Nom In ActiveSheet.Names
Cells(1, N) = Nom
N = N + 1
Next
End Sub
Cette procédure renverra les différents noms.
Renvoie un objet PageSetup qui représente une
description de la mise en page. Il contient tous les attributs de mise
en page (zone d'impression, marge gauche, marge inférieure, taille
du papier, etc.) en tant que propriétés. Grâce aux
propriétés de cet objet, vous pouvez entièrement
paramétrer la mise en page dans le code. Exemple :
Sub Mise_En_Page()
With Worksheets(1).PageSetup
.LeftMargin = Application.CentimetersToPoints(0.5)
.RightMargin = Application.CentimetersToPoints(0.75)
.TopMargin = Application.CentimetersToPoints(1.5)
.BottomMargin = Application.CentimetersToPoints(1.5)
.HeaderMargin = Application.CentimetersToPoints(0.5)
.FooterMargin = Application.CentimetersToPoints(0.5)
End With
End Sub
Renvoie une collection Shapes qui représente tous
les formes de la feuille. Chaque objet Shape représente
un objet de la couche de dessin, tel qu'une forme automatique, une forme
libre, un objet OLE, une image, un contrôle ajouté grâce à la
barre d'outils Boîte à outils Contrôle.
L'exemple suivant ajoute une ligne bleu à la feuille
active :
Sub UneLigne()
With ActiveSheet.Shapes.AddLine(0, 0, 250, 250).Line
.DashStyle = msoLineSingle
.ForeColor.RGB = RGB(0, 51, 102)
End With
End Sub
Si la feuille est visible, la propriété a la valeur True et False dans
le cas contraire.
Mais si vous lui attribuez la valeur xlVeryHidden, la feuille
sera masquée de telle sorte que la seule façon de la rendre à nouveau
visible est de lui affecter la valeur True (l'utilisateur lui-même
ne peut rendre la feuille visible).
| Méthode |
Action |
| Activate |
Active la feuille (revient à cliquer
sur l'onglet de la feuille). |
| Calculate |
Calcule la feuille |
| Copy(Before, After) |
Copie la feuille en un autre endroit
du classeur. Before représente la feuille avant
laquelle la feuille copiée sera placée, After représente
la feuille après laquelle la feuille copiée sera placée.
Vous ne devez renseigner que Before ou After.
Exemple : Worksheets(1).Copy ,Worksheets(3) qui
copie la 1ère feuille avant la 3ème et Worksheets(1).Copy
Worksheets(3) qui copie la 1ère feuille après la 3ème. |
| Delete |
Supprime la feuille |
| Move(Before, After) |
Déplace la feuille en un autre
endroit du classeur. Before et After se
comporte comme pour la méthode Copy. |
| PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName) |
Imprime la feuille.
From : Numéro de la 1ère page,
To : Numéro de la dernière page,
Copies : Nombre de copie,
Preview : = True pour afficher un
aperçu avant l'impression.
ActivePrinter : Le nom de l'imprimante à utiliser,
PrintToFile : = True pour imprimer
dans un fichier,
Collate : = True pour assembler plusieurs
copies
PrToFileName : spécifie le nom du fichier
vers lequel vous souhaitez effectuer l'impression si PrintToFile
: = True. |
| PrintPreview |
Affiche un aperçu de la feuille. |
| Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly) |
Protège une feuille.
Password : Chaîne de caractères spécifiant
le mot de passe, respectez la casse (majuscule et/ou minuscule).
DrawingObjects = True pour protéger les formes, False
par défaut.
Contents = True pour protéger le contenu, True par défaut.
Scenarios = True pour protéger les scénarios,
True par défaut.
UserInterfaceOnly =True pour protéger l'interface utilisateur,
mais pas les macros. Par défaut, la protection s'applique à la
fois aux macros et à l'interface utilisateur. |
| Select |
Sélectionne la feuille. |
| Unprotect(Password) |
Supprime la protection d'une feuille,
sans effet si la feuille n'est pas protégée. |
Depuis la version 97, VBA gère les évènements
suivants d'un classeur, vous pouvez ainsi effectuer une action lors
de ces évènements :
| Procédure |
Se produit |
| Sub WorkSheet_Activate() |
lorsque la feuille est activée |
| Sub WorkSheet_Deactivate() |
lorsque la feuille est désactivée |
| Sub WorkSheet_BeforeDoubleClick(ByVal Target As
Range, Cancel As Boolean) |
lorsque l'utilisateur double-clique
sur une feuille de calcul.
Où Target est la cellule la plus proche du pointeur
de la souris lorsque le double-clic se produit.
Si vous attribuez la valeur True à Cancel,
l'évènement est annulé. |
| Sub WorkSheet_BeforeRightClick(ByVal Target As
Range, Cancel As Boolean) |
lorsque l'utilisateur clique avec
le bouton droit de la souris. Se comporte comme le précédent évènement. |
| Sub WorkSheet_Calculate() |
après le recalcul de la feuille
de calcul |
| Sub WorkSheet_Change(ByVal Target As
Range) |
lorsque les cellules de la feuille
de calcul sont modifiées par l'utilisateur ou par un lien
externe.
Target représente la plage modifiée,
elle peut contenir plusieurs cellules. |
| Sub Worksheet_FollowHyperlink(ByVal Target As
Hyperlink) |
lorsque vous cliquez sur un lien hypertexte.
Target représente l'objet Hyperlink qui
représente la destination du lien hypertexte. |
| Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range) |
lorsque la sélection change
dans une feuille de calcul.
Target représente la nouvelle plage sélectionnée. |
Quelques exemples :
- Cochez une cellule :
Private Sub Worksheet_BeforeDoubleClick(ByVal
Target As Range, Cancel As Boolean)
If Target = "" Then
Target = "X"
Else
Target = ""
End If
Cancel = True
End Sub
- Une farce, celle-ci déplace la sélection d'une ligne
vers le bas et d'une colonne vers la droite :
Private Sub Worksheet_SelectionChange(ByVal
Target As Range)
Static Farce As Boolean
If Not Farce Then
Farce = True
Target.Offset(1, 1).Select
Else
Farce = False
End If
End Sub
Pourquoi utiliser Farce, tout simplement parce
que lorsque vous sélectionnez la nouvelle cellule avec Target.Offset(1,
1).Select, vous appelez de nouveau la procédure (Farce étant
maintenant à True, vous n'exécutez
pas de nouveau cette ligne), si cette variable n'existait pas la procédure
travaillerait en boucle jusqu'à la provocation d'une erreur (vous
vous retrouvez dans la cellule inférieure droite de la feuille).
- Limiter l'évènement à une plage de cellule
:
Vous voulez, par exemple, exécutez une procédure lorsqu'une
cellule de la plage A2:C10 est modifiée. Dans notre exemple, la procédure
va simplement afficher le contenu et l'adresse de la cellule active.
Private Sub Worksheet_Change(ByVal Target
As Range)
If Union(Target, Range("A2:C10")).Address <> Range("A2:C10").Address
Then Exit Sub
MsgBox "La cellule " & ActiveCell.Address & " est égale à " & ActiveCell
End Sub
La méthode Union renvoie l'union d'une série de plages, ici
si la cellule fait partie de la plage A2:C10 alors Union renverra la plage
A2:C10 alors que si elle est en dehors, elle renvoie une combinaison de plage.
|