Description de l'objet Feuille de calcul dans Excel
Date de publication : 14.11.2006 , Date de mise à jour : 15.04.2007
Par
SilkyRoad (silkyroad.developpez.com)
Ce tutoriel décrit l'objet Feuille de calcul dans un classeur Excel.
Le document montre comment manipuler les feuilles par macro
et propose une description des différentes méthodes et propriétés.
Tous les exemples de cette page ont été testés avec Excel2002.
I. Introduction
II. Les méthodes et propriétés dans La feuille de calcul
II-A. Les méthodes
II-A-1. Activate
II-A-2. Add
II-A-3. Calculate
II-A-4. ChartObjects
II-A-5. CheckSpelling
II-A-6. ClearArrows
II-A-7. Copy
II-A-8. CircleInvalid
II-A-9. ClearCircles
II-A-10. Delete
II-A-11. Evaluate
II-A-12. FillAcrossSheets
II-A-13. Move
II-A-14. OLEObjects
II-A-15. Paste
II-A-16. PasteSpecial
II-A-17. PivotTables
II-A-18. PivotTableWizard
II-A-19. PrintOut
II-A-20. PrintPreview
II-A-21. Protect
II-A-22. ResetAllPageBreaks
II-A-23. Scenarios
II-A-24. Select
II-A-25. SetBackgroundPicture
II-A-26. ShowAllData
II-A-27. ShowDataForm
II-A-28. Unprotect
II-B. Les propriétés
II-B-1. Application
II-B-2. AutoFilter
II-B-3. AutoFilterMode
II-B-4. Cells
II-B-5. CircularReference
II-B-6. CodeName
II-B-7. Columns
II-B-8. Comments
II-B-9. ConsolidationFunction
II-B-10. ConsolidationOptions
II-B-11. ConsolidationSources
II-B-12. Count
II-B-13. CustomProperties
II-B-14. DisplayPageBreaks
II-B-15. EnableAutoFilter
II-B-16. EnableCalculation
II-B-17. EnableOutlining
II-B-18. EnablePivotTable
II-B-19. EnableSelection
II-B-20. FilterMode
II-B-21. HPageBreaks
II-B-22. Hyperlinks
II-B-23. Index
II-B-24. MailEnvelope
II-B-25. Name
II-B-26. Outline
II-B-27. PageSetup
II-B-28. Parent
II-B-29. ProtectContents
II-B-30. ProtectDrawingObjects
II-B-31. Protection
II-B-32. ProtectionMode
II-B-33. ProtectScenarios
II-B-34. QueryTables
II-B-35. Range
II-B-36. Rows
II-B-37. ScrollArea
II-B-38. Shapes
II-B-39. StandardHeight
II-B-40. StandardWidth
II-B-41. Tab
II-B-42. Type
II-B-43. UsedRange
II-B-44. Visible
II-B-45. VPageBreaks
II-C. Les évènements
III. Cas particuliers
III-A. L'élément masqué Pictures
IV. Téléchargement
I. Introduction
Un classeur Excel est composé de feuilles de calcul et de feuilles graphiques, présentées
sous formes d'onglets.
Les outils disponibles dans chaque feuille permettent la transformation des données brutes en
informations pour calculer, analyser, mettre en forme et partager les résultats.
Chaque feuille de calcul est constituée de cellules: sur 65536 lignes par
256 colonnes (jusqu'à la version 2003 d'Excel), 1048576 lignes par 16384 colonnes dans Excel 2007.
Les cellules permettent de stocker, puis de manipuler les données et sont
principalement utilisées pour recevoir
les fonctions (Formules)
du tableur.
Une feuille peut aussi contenir d'autres objets:
Des images, contrôles, graphiques incorporés, formes automatiques, fichiers incorporés...
Le nombre d'onglets est uniquement limité par la quantité de mémoire disponible dans un classeur.
Il existe quatre possibilités pour spécifier une feuille par macro:
*
Par le nom d'onglet:
'Cet exemple active la feuille nommée "historique2006"
Worksheets("historique2006").Activate
*
Par l'index (L'index correspond à la position de l'onglet dans le classeur.
La feuille de gauche porte l'index 1):
'Active la 1ere feuille du classeur
Worksheets(1).Activate
*
Par la feuille active (Visible au premier plan):
'Renvoie le nom de la feuille placée au premier plan
ActiveSheet.Name
*
Par le CodeName:
'Active la feuille dont le nom de code objet est "Feuil1"
Feuil1.Activate
Le CodeName représente le nom de l'objet Feuille dans l'éditeur de macros.
Il ne faut pas le confondre avec le nom de l'onglet. Les 2 sont identiques
par défaut, mais le CodeName ne change pas lorsque vous modifiez le nom d'un onglet.
Le CodeName peut être modifié dans la fenêtre propriété du module objet.
La propriété
Sheets renvoie tous les types de feuilles contenues
dans le classeur:
Les feuilles graphiques et feuilles de calcul.
La propriété
Worksheets renvoie uniquement la collection de feuilles
de calcul.
Lorsque vous souhaitez placer la feuille de calcul dans une variable, utilisez
l'objet
Worksheet:
| Vba |
Dim Ws As Worksheet
Set Ws = Worksheets("Feuil2")
MsgBox "Index de la feuille nommée '" & Ws.Name & "': " & Ws.Index
|
Si vous souhaitez créer une boucle sur l'ensemble des feuilles de calcul, utilisez:
| Vba |
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
MsgBox Ws.Name
Next Ws
|
Si le classeur contient un onglet Graphique et que vous souhaitez l'intégrer dans la boucle,
utilisez:
| Vba |
Dim Ws As Object
For Each Ws In ThisWorkbook.Sheets
MsgBox Ws.Name
Next Ws
|
II. Les méthodes et propriétés dans La feuille de calcul
II-A. Les méthodes
II-A-1. Activate
Permet d'activer un onglet.
Cet exemple active la feuille nommée "Feuil1".
| Vba |
Worksheets("Feuil1").Activate
|
II-A-2. Add
Permet d'ajouter une feuille dans le classeur. Add(Before, After, Count, Type).
L'argument Before spécifie la feuille avant laquelle la nouvelle feuille est ajoutée.
L'argument After spécifie la feuille après laquelle la nouvelle feuille est ajoutée.
L'argument Count spécifie le nombre de feuilles à ajouter. La valeur par défaut
est 1 si l'argument n'est pas précisé.
L'argument Type spécifie le type de feuille ajouté (xlWorksheet, xlChart).
| Vba |
ThisWorkbook.Sheets.Add After:=Sheets(ThisWorkbook.Sheets.Count)
ThisWorkbook.Sheets.Add After:=Sheets(ThisWorkbook.Sheets.Count), Count:=3
|
II-A-3. Calculate
Permet de déclencher le calcul des fonctions dans la feuille indiquée.
II-A-4. ChartObjects
Renvoie la collection de graphiques placés dans la feuille de calcul.
Ces graphiques sont aussi dits "incorporés".
La procédure suivante boucle sur les graphiques de la feuille active afin de les
redimensionner et les repositionner verticalement.
| Vba |
Dim Ch As ChartObject
Application.ScreenUpdating = False
For Each Ch In ActiveSheet.ChartObjects
With Ch
.Left = 50
.Top = 20 + (230 * (Ch.Index - 1))
.Height = 200
.Width = 350
End With
Next Ch
Application.ScreenUpdating = True
|
Un graphique spécifique peut être manipulé par son index ou son nom:
| Vba |
ActiveSheet.ChartObjects(1).Name = "Le Graphique"
MsgBox ActiveSheet.ChartObjects(1).Name
ActiveSheet.ChartObjects("Le Graphique").Name = "Nouveau Nom"
MsgBox ActiveSheet.ChartObjects(1).Name
|
II-A-5. CheckSpelling
Permet de lancer la correction orthographique dans la feuille spécifiée.
Cet exemple vérifie l'orthographe des mots saisis dans le Feuil1. La boîte de dialogue
s'affiche si des corrections sont nécéssaires.
| Vba |
Dim IgnoreMajuscule As Boolean
Dim Suggestion As Boolean
Dim MonDico As String
MonDico = ""
Suggestion = True
IgnoreMajuscule = True
Worksheets("Feuil1").CheckSpelling MonDico, IgnoreMajuscule, Suggestion
|
II-A-6. ClearArrows
Permet d'effacer les flèches d'audit dans la feuille de calcul.
Ces flèches ont été ajoutées à l'aide de la fonction d'audit (
Menu Outils / Audit de formules / ...).
| Vba |
Worksheets("Feuil1").ClearArrows
|
II-A-7. Copy
Effectue une copie de la feuille.
Les arguments Before et After
permettent de spécifier l'onglet avant ou après lequel la feuille copiée sera placée
(Il n'est pas possible d'utiliser ensemble les deux arguments).
| Vba |
Worksheets("Feuil1").Copy After:=Sheets(Sheets.Count)
|
Si vous ne spécifiez pas les arguments Before ou After, la procédure crée un nouveau classeur
contenant la feuille copiée.
| Vba |
Worksheets("Feuil1").Copy
ActiveWorkbook.SaveAs "C:\LaFeuilleDupliquee.xls"
ActiveWorkbook.Close True
|
II-A-8. CircleInvalid
Encercle les entrées incorrectes dans la feuille de calcul.
| Vba |
Worksheets("Feuil2").CircleInvalid
|
II-A-9. ClearCircles
Supprime les cercles qui indiquent des entrées incorrectes de la feuille de calcul.
| Vba |
Worksheets("Feuil2").ClearCircles
|
II-A-10. Delete
Permet de supprimer la feuille de calcul.
Nota:
Il n'est pas possible de supprimer une feuille si elle est unique dans le classeur.
| Vba |
Application.DisplayAlerts = False
Worksheets("Feuil2").Delete
Application.DisplayAlerts = True
|
II-A-11. Evaluate
Convertit le nom (conforme aux conventions Microsoft Office Excel)
spécifié en objet ou en valeur.
| Vba |
Dim Cellule As Range
MsgBox Worksheets("Feuil1").Evaluate("A1")
MsgBox Worksheets("Feuil1").[A1]
Set Cellule = Worksheets("Feuil1").[A1]
Cellule.Interior.ColorIndex = 4
|
II-A-12. FillAcrossSheets
Copie la plage de cellules d'un onglet au même emplacement dans toutes les autres feuilles
de calcul spécifiées.
| Vba |
Dim Tableau As Variant
Dim ArgType As Long
ArgType = xlFillWithAll
Tableau = Array("Base", "Feuil1", "Feuil3", "Feuil6")
Sheets(Tableau).FillAcrossSheets Worksheets("Base").Range("A1:A10"), ArgType
|
Pour recopier la plage A1:E5 de la Feuil1 dans toutes autres les feuilles
du classeur, utilisez:
| Vba |
Worksheets.FillAcrossSheets Worksheets("Feuil1").Range("A1:E5"), xlFillWithAll
|
II-A-13. Move
Permet de déplacer une feuille dans le classeur.
Les arguments Before et After
permettent de spécifier l'onglet avant ou après lequel la feuille sera déplacée.
(Il n'est pas possible d'utiliser ensemble les deux arguments).
Cet exemple trie les feuilles par ordre alphabétique.
| Vba |
Sub TrierFeuilles()
Dim WS As Object
Dim I As Byte
Application.ScreenUpdating = False
For Each WS In ActiveWorkbook.Sheets
For I = 2 To ActiveWorkbook.Sheets.Count
If Sheets(I - 1).Name > Sheets(I).Name Then _
Sheets(I - 1).Move After:=Sheets(I)
Next I
Next WS
Application.ScreenUpdating = True
End Sub
|
Si vous n'indiquez pas les arguments Before ou After, la propriété déplace la feuille du classeur d'origine
vers un nouveau classeur.
II-A-14. OLEObjects
Représente les contrôles ActiveX, les objets OLE incorporés ou liés dans une feuille de
calcul.
Cette procédure crée un objet CommandButton dans la feuille et y associe une procédure
évènementielle.
| Vba |
Dim Ws As Worksheet
Dim Obj As OLEObject
Dim laMacro As String
Dim x As Integer
Set Ws = Sheets.Add
Set Obj = Ws.OLEObjects.Add("Forms.CommandButton.1")
With Obj
.Name = "monBouton"
.Left = 50
.Top = 50
.Width = 150
.Height = 30
.Object.Caption = "Supprimer données feuille"
End With
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
.CreateEventProc "Click", "monBouton"
x = .ProcStartLine("monBouton_Click", vbext_pk_Proc)
.InsertLines x + 2, "Cells.Clear"
End With
|
Cette procédure montre comment boucler sur la collection de contrôles dans la feuille.
| Vba |
Dim Obj As OLEObject
For Each Obj In Feuil1.OLEObjects
Debug.Print Obj.Name
Debug.Print TypeName(Obj.Object)
Next Obj
|
Il est possible de boucler sur un type d'objets spécifique.
Cet exemple utilise la fonction TypeName:
| Vba |
Dim Obj As OLEObject
For Each Obj In Feuil1.OLEObjects
If Obj.ShapeRange.Type = msoOLEControlObject Then
If TypeName(Obj.Object) = "TextBox" Then MsgBox Obj.Object.Value
End If
Next Obj
|
Une autre méthode pour identifier les TextBox. Utilisation de l'instruction TypeOf:
| Vba |
Dim Obj As OLEObject
For Each Obj In Feuil1.OLEObjects
If Obj.ShapeRange.Type = msoOLEControlObject Then
If TypeOf Obj.Object Is MSForms.TextBox Then MsgBox Obj.Object.Value
End If
Next Obj
|
Et pour boucler sur des objets à partir de leur nom, utilisez
l'exemple ci dessous qui boucle sur des TextBox nommés "TextBox1" à "TextBox4":
| Vba |
Dim i As Byte
For i = 1 To 4
Feuil1.OLEObjects("TextBox" & i).Object.Text = Feuil2.Cells(i, 1)
Next
|
Cet exemple montre comment insérer un document Word, sous forme d'icône, dans la feuille.
| Vba |
Dim Ws As Worksheet
Dim Fichier As String
Set Ws = ThisWorkbook.Worksheets("Feuil1")
Fichier = "C:\Documents and Settings\michel\le document.doc"
Ws.OLEObjects.Add Filename:=Fichier, _
Link:=False, DisplayAsIcon:=True, IconIndex:=0, _
IconLabel:=Fichier
|
II-A-15. Paste
Colle le contenu du Presse-papiers dans la feuille spécifiée.
| Vba |
Worksheets("Feuil1").Range("A1:A10").Copy
Worksheets("Feuil2").Paste Destination:=Worksheets("Feuil2").Range("B1:B10")
Application.CutCopyMode = False
|
Le collage est effectué à l'emplacement de la sélection si vous ne spécifiez pas
l'argument Destination.
L'argument Link permet de réaliser un collage avec liaison.
| Vba |
Dim Cible As dataObject
Worksheets("Feuil1").Range("A1:A10").Copy
With Worksheets("Feuil3")
.Activate
.Range("E5").Select
.Paste link:=True
End With
Set Cible = New dataObject
Cible.setText ""
Cible.putInClipboard
Set Cible = Nothing
|
Les arguments Destination et Link
ne peuvent pas être utilisés ensemble.
II-A-16. PasteSpecial
Permet d'effectuer un collage en précisant le format à appliquer.
Cet exemple colle un graphique au format image dans une autre feuille du classeur.
| Vba |
Worksheets("Feuil1").ChartObjects(1).Copy
Worksheets("Feuil2").Activate
Worksheets("Feuil2").PasteSpecial Format:="Picture (Enhanced Metafile)", _
Link:=False, DisplayAsIcon:=False
|
II-A-17. PivotTables
Représente les tableaux croisés dynamiques contenus dans la feuille.
| Vba |
Dim Pvt As PivotTable
Set Pvt = Worksheets("Feuil4").PivotTables("Tableau croisé dynamique1")
Pvt.RefreshTable
|
II-A-18. PivotTableWizard
Permet de créer un objet PivotTable dans la feuille.
L'exemple suivant ajoute un TCD dans la feuille nommée "Feuil4", à partir des données de la Feuil1.
Le tableau croisé dynamique est positionné dans la cellule B10.
| Vba |
Worksheets("Feuil4").PivotTableWizard _
SourceType:=xlDatabase, _
SourceData:=Worksheets("Feuil1").Range("A1:E100").Address(, , xlR1C1, True), _
TableDestination:=Worksheets("Feuil4").Range("B10"), _
TableName:="TCD_1"
With Worksheets("Feuil4").PivotTables("TCD_1")
.
|