how to show pdf file in asp.net c# : How to select all text in pdf file Library software class asp.net winforms html ajax vba-excel0-part1809

VBA-Programmer efficacement Excel
Maj 2008
VBA : Programmer efficacement Microsoft Excel
Notions importantes
Les collections
On entend par collection, la réunion d'éléments connexes permettant d'accéder à ces éléments par leurs
numéros d'index (ou parfois par leur nom), mais aussi d'ajouter ou de supprimer des membres.
Le modèle objet d'Excel contient ainsi de nombreuses collections hiérarchisées (on peut dire que
l'application contient une collection de classeurs dont chaque élément contient une collection de feuilles etc…)
Une collection contient généralement au moins trois méthodes et une propriété de base.
Les méthodes Add et Remove (ou Delete) permettent l'ajout / suppression d'éléments, la méthode Item
permet d'accéder à un élément par son index ou son nom, la propriété Count donne le nombre d'éléments de la
collection. Attention toutefois, certaines collections sont de base 0, d'autres de base 1. Dans Excel, les collections
sont de Base 1. Cela signifie que le numéro d'index 1 est le premier numéro d'index utilisable pour pointer sur un
élément à travers la collection.
En général, la collection a le même nom que les objets qu'elle contient en y ajoutant un "s" à la fin. Par
exemple la collection des objets classeurs WorkBook s'appelle WorkBooks
Quelques remarques encore, les collections coûtent relativement cher en mémoire, donc avant d'utiliser un
des membres fréquemment, il convient de l'affecter à une variable fortement typée.
Exemple:
Dim MaPlage as Range
Set MaPlage = ActiveSheet.Cells(1,1)
L'utilisation de "MaPlage" permet un meilleur accès à la cellule que l'utilisation d'ActiveSheet.Cells(1) tout
au long du code.
L'appel à la méthode Item est implicite,
WorkBooks("NomClasseur").Activate et WorkBooks.Item("NomClasseur").Activate sont équivalents.
L'énumération
Cette technique permet de parcourir une collection. Sa syntaxe est For Each….Next
Là encore, typez fortement votre variable d'énumération.
Dim MaCellule As Range
For Each MaCellule in ActiveSheet.Range("A1:E5")
....
Next
Dans l'exemple ci-dessus, "Dim MaCellule As Range" est mieux que "Dim MaCellule As Object" qui est
mieux que "Dim MaCellule As Variant".
L'Adressage
Excel fonctionne principalement par un système d'adresse (appelé aussi référence) pour localiser une cellule
particulière. Le nom complet d'une adresse Excel valide est dans le cas d'une cellule :
'[NomClasseur.xls]NomFeuille'!$PositionCellule. Excel utilise indifféremment deux types de références
appelées A1 où les colonnes sont des lettres et les lignes des nombres, et L1C1 où lignes et colonnes sont des
nombres. 
L'exemple ci-dessous donne deux adresses Excel complètes dans les deux styles de références :
'[NomClasseur.xls]NomFeuille'!$A$35 ou '[NomClasseur.xls]NomFeuille'!L1C35
Ces références peuvent être relatives ou absolues. Une référence absolue donne la position d'une cellule
dans la feuille par l'intersection de la ligne et de la colonne, une référence relative donne l'adresse de la cellule
par décalage de l'adresse par rapport à une autre cellule. Une référence peut être relative dans une direction (par
Page 1/44
How to select all text in pdf file - search text inside PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Learn how to search text in PDF document and obtain text content and location information
pdf searchable text converter; pdf find highlighted text
How to select all text in pdf file - VB.NET PDF Text Search Library: search text inside PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Learn How to Search Text in PDF Document and Obtain Text Content and Location Information in VB.NET application
pdf find text; select text in pdf reader
VBA-Programmer efficacement Excel
Maj 2008
exemple les colonnes) et absolue dans l'autre. Dans le tableau suivant, nous voyons l'écriture de l'adresse "B2"
dans la cellule "A1" dans tous les modes
Références
A1
L1C1
Ligne
Colonne
Absolue
Absolue
« =$B$2 »
L2C2
Absolue
Relative
« =B$2 »
L2C(1)
Relative
Absolue
« =$B2 »
L(1)C2
Relative
Relative
« =B2 »
L(1)C(2)
A l'identique en VBA on peut donner l'adresse d'un objet appartenant au modèle objet Excel par :
Application.Workbooks("NomClasseur").Sheets("NomFeuille").Objet …
Dans la pratique on ne met jamais Application dans l'adresse puisqu'il est clairement implicite (sauf dans le
cas d'un classeur partagé dans un programme utilisant plusieurs instances d'Excel).
ThisWorkBook
L'objet ThisWorkBook représente le classeur qui contient la macro qui est en train de s'exécuter Ceci sousentend,
qu'il n'est jamais nécessaire de mettre dans une variable le classeur contenant la macro pour y faire
référence.
Objet actif
La notion de l'objet actif permet d'accéder à des raccourcis dans l'adressage VBA. Cette notion, très
employée par l'enregistreur de macro est certes performante, mais non dénuée de risque. A chaque instant, de
l'application, on peut nommer le classeur actif (visible) ActiveWorkbook, la feuille visible de ce classeur
ActiveSheet et la cellule sélectionnée ActiveCell. (il y en a d'autres mais voilà les principaux)
Ceci permet bien des raccourcis d'écriture de code mais demande deux choses :
Bien savoir quel est l'objet actif
Manipuler l'activation
Or comme nous allons le voir au cours de cet article, manipuler l'activation est une méthode lourde et assez
lente.
Sélection
Cet objet représente ce qui est sélectionné. Cette simple définition devrait suffire pour se méfier de son
utilisation. En effet, on l'utilise en général quand on ne sait pas quel est le type de l'objet que l'on cherche à
atteindre. A mon avis son utilisation est à proscrire. Là encore, on le trouve très souvent dans les macros
enregistrées, je vais donc vous donner une petite astuce pour connaître le type d'un objet. En général, tout objet
inséré par le code, l'est par une méthode Add. On ajoute donc une variable de type variant où l'on affecte l'objet
crée. La fonction TypeName permet alors de connaître le type de l'objet. Ceci peut se faire aussi avec l'espion
express du débogueur.
Paramètres nommés
Excel accepte une syntaxe particulière pour ses méthodes, celle des paramètres (ou arguments) nommés. En
Visual Basic l'appel d'une procédure paramétrée se fait en plaçant les paramètres dans le même ordre que celui
qui se trouve dans la déclaration de la procédure. Cette méthode reste vraie en VBA mais il y a aussi la
possibilité de ne passer que quelques-uns de ces paramètres en les nommant. Regardons par exemple la méthode
Page 2/44
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Extract various types of image from PDF file, like XObject Image, XObject Form, Inline Image, etc. C#: Select All Images from One PDF Page.
converting pdf to searchable text format; text select tool pdf
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
Dim allImages = PDFImageHandler.ExtractImages(doc) ' Extract all images in page 2. Dim page As PDFPage = doc VB.NET : Select An Image from PDF Page by
find and replace text in pdf; convert a scanned pdf to searchable text
VBA-Programmer efficacement Excel
Maj 2008
Find d'Excel.
Sa déclaration est :
expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection,
MatchCase, MatchByte)
Son utilisation normale serait
Set CelluleCible=ActiveSheet.Cells.Find(2,ActiveCell, xlValues, xlWhole,
xlByColumns, xlNext, False)
Mais je pourrais très bien simplifier en écrivant
Set CelluleCible=ActiveSheet.Cells.Find(What:=2, LookIn:= xlValues)
Ceci permet une plus grande clarté du code ainsi qu'une simplification à la condition expresse de bien
connaître la valeur par défaut des paramètres.
Les évènements
La gestion des événements dans Excel se fait via du code soit dans un module d'objet WorkSheet, soit dans
le module de l'objet WorkBook. Pour atteindre le module de code du classeur, on ouvre la fenêtre VBA et dans
l'explorateur de projet on double click sur "ThisWorkBook". Pour atteindre le module d'une feuille on peut soit
passer par l'explorateur de projet, soit faire un click droit sur l'onglet de la feuille et choisir "Visualiser le code".
Intercepter les évènements Excel en Visual Basic
Dans la feuille VB où l'on souhaite récupérer l'événement on déclare une variable globale
Private WithEvents MaFeuille As Excel.Worksheet
Après il suffit d'écrire une procédure d'évènements identique à la procédure Excel correspondante.
Par exemple, l'événement de feuille SelectionChange s'écrit dans Excel
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Et dans Visual Basic :
Private Sub MaFeuille _SelectionChange(ByVal Target As Excel.Range)
L'exemple suivant montre l'interception de l'événement BeforeClose d'un classeur dans Visual Basic afin
d'empêcher la fermeture de celui-ci (et donc de l'application Excel) par l'utilisateur. Pour qu'Excel puisse se
fermer dans cet exemple, il faut remplir la case "A1", ce qui est géré par l'événement
MonClasseur_SheetChange.
Private WithEvents MonClasseur As Excel.Workbook
Private MonExcel As Excel.Application, MaFeuille As Excel.Worksheet
Private Sub OuvreExcel()
Set MonExcel = New Excel.Application
MonExcel.ReferenceStyle = xlR1C1
Set MonClasseur =
MonExcel.Workbooks.Open("D:\User\jmarc\tutorial\excel\tutor1.xls")
Set MaFeuille = MonClasseur.Worksheets("pilotage")
MonExcel.Visible = True
End Sub
Private Sub MonClasseur_BeforeClose(Cancel As Boolean)
Cancel = True
End Sub
Private Sub MonClasseur_SheetChange(ByVal Sh As Object, ByVal Target As
Excel.Range)
If Not MonExcel.Intersect(Target, MaFeuille.Cells(1, 1)) Is Nothing
Then
Page 3/44
VB.NET PDF Text Redact Library: select, redact text content from
coding example shows you how to redact PDF text content Dim outputFilePath As String = Program.RootPath + "\\" output.pdf" ' open document All Rights Reserved
search pdf for text in multiple files; how to search a pdf document for text
C# PDF Text Redact Library: select, redact text content from PDF
C# coding example describes how to redact PDF text content. String outputFilePath = Program.RootPath + "\\" output.pdf"; // open document All Rights Reserved
how to search text in pdf document; how to select text in pdf
VBA-Programmer efficacement Excel
Maj 2008
MonExcel.EnableEvents = False
MonClasseur.Close False
Set MaFeuille = Nothing
Set MonClasseur = Nothing
MonExcel.Quit
Set MonExcel = Nothing
End If
End Sub
La base, l'objet Application
Cet objet représente l'application Excel. Il est l'objet parent de tous les autres, et contient des propriétés
méthodes et évènements très intéressants, que nous allons regarder maintenant.
Évènements
On utilise rarement les événements au niveau de l'application, pour la raison simple qu'ils ne sont pas
accessibles directement. Pour pouvoir les utiliser, il faut dans le projet créer un module de classe dans lequel on
met le code suivant :
Public WithEvents App As Application
Comme la plupart des événements gérés se retrouvent dans les objets classeur et feuille, nous les utiliseront
plutôt à ce niveau.
Propriétés
Je vais donner maintenant quelques propriétés utiles de l'objet application
AskToUpdateLinks : Si sa valeur est False la mise à jour des liaisons se fait sans appel d'une boite de
dialogue, qui sinon apparaît automatiquement.
Calculation (xlCalculationAutomatic, xlCalculationManual, xlCalculationSemiautomatic): Définit le mode
de recalcul d'Excel. Il s'agit d'une propriété très importante pour l'optimisation du temps d'exécution. En effet,
pour les feuilles contenant des formules de calcul, le mode de calcul automatique peut être très coûteux en
temps, en effet Excel recalcule intégralement une feuille de calcul à chaque modification ou suppression. C'est
pourquoi, en général on bloque le mode de calcul au départ en faisant :
Application.Calculation = xlCalculateManual
Puis on exécute les calculs lorsqu'on en a besoin avec la méthode Calculate
CutCopyMode (False,xlCopy,xlCut) : Définit si on utilise un mode par défaut copier ou couper. En fait, on
l'utilise souvent sous la forme 
Application.CutCopyMode=False 
pour vider le presse papier.
DisplayAlerts : Si sa valeur est False, les messages d'avertissements d'Excel ne seront pas affichés.
✭ Il faut toujours remettre la valeur à True en fin d'exécution
Interactive : Désactive toutes les interactions entre Excel et le clavier/souris.
✭ Il faut toujours remettre la valeur à True en fin d'exécution
International : Renvoie des informations relatives aux paramètres régionaux et internationaux en cours.
Cette propriété est en lecture seule. On s'en sert généralement pour connaître les séparateurs.
ReferenceStyle (xlA1 ou xlR1C1): Permet de basculer entre les modes L1C1 et A1. Il est à noter que cela
change l'affichage des feuilles mais que cela peut aussi avoir une influence sur le code. En effet certaines
formules comme les règles de validations doivent être écrites dans le même système de référence que celui de
l'application.
ScreenUpdating : Permet de désactiver la mise à jour d'écran. Pour des raisons de vitesse d'exécution il est
conseillé de toujours la désactiver.
✭ Il faut toujours remettre la valeur à True en fin d'exécution, sous peine de récupérer un écran figé.
Page 4/44
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
Compatible with all Windows systems and supports .NET Framework 2.0 & above Able to select PDF document scaling. Easy to search PDF text in whole PDF document.
search text in pdf image; pdf find and replace text
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
Compatible with all Windows systems and supports .NET Framework 2.0 & above Able to select PDF document scaling. Easy to search PDF text in whole PDF document.
how to make a pdf file text searchable; search pdf for text
VBA-Programmer efficacement Excel
Maj 2008
SheetsInNewWorkbook : Permet de définir le nombre de feuilles contenues dans un nouveau classeur.
Lorsque l'on sait exactement le nombre de feuilles nécessaires, on peut modifier cette propriété afin de ne pas
faire des worksheets.add. Il convient de restaurer cette valeur en fin d'exécution.
Méthodes
Calculate : Permet de forcer le calcul. La syntaxe Application.Calculate est peu utilisée. On l'utilise
principalement sous la forme MaFeuille.Calculate. Sachez toutefois que l'on peut restreindre le calcul à une
plage à des fins de performance. Exemple :
Worksheets(1).Rows(2:3).Calculate ne fait les calculs que sur les lignes 2 et 3.
Evaluate : Permet de convertir une chaîne en sa valeur ou en l'objet auquel elle fait référence. Nous allons
regarder quelques utilisations de cette méthode.
Interprétation de formule de calcul Imaginons que ma cellule A1 contient le texte (12*3)+4, écrire
Range("A2").Value=Application.Evaluate(Range("A1").Value)
Renverra 40 en A2. De même on pourra écrire :
Resultat= Application.Evaluate("(12*3)+4")
La méthode permet aussi d'évaluer une formule respectant la syntaxe Excel (en anglais) ; on peut écrire
Resultat= Application.Evaluate("Sum(A1:E5)")
Interprétation d'une adresse Si ma cellule A1 contient B1:B2 je peux écrire
Application.Evaluate(Range("A1").Value).Font.Bold=True
Il est à noter que le mot Application est facultatif et on trouve parfois la notation
[A1].Font.Bold=True
Qui est strictement équivalente !
FindFile Permet de lancer une recherche de fichier dans laquelle on spécifie les critères. La collection
FoundFiles contient les fichiers trouvés correspondant.
(cf l'exemple plus loin)GetOpenFileName : Ouvre la boite de dialogue "Ouvrir un fichier" mais n'ouvre
pas le fichier. La méthode renvoie juste le nom complet du fichier sélectionné.
GetSaveAsFilename : De même que précédemment mais avec la boite "Enregistrer Sous…"
Goto : Je cite cette méthode pour vous mettre en garde. L'enregistreur de macro l'utilise lors de l'appel d'une
plage nommée, elle sous-tend un "Activate" et un "Select". Il faut donc faire très attention lors de son utilisation
dans le code car elle peut facilement changer les objets actifs.
Intersect : Renvoie une plage qui est l'intersection de n plages. Bien que les plages appartiennent à des
objets feuilles, la méthode Intersect appartient directement à l'objet Application.
OnKey : Permet l'exécution d'une macro lors de l'appui sur une touche ou sur une combinaison de touches.
Application.OnKey "^{A}", "MaProc" 
lance la procédure MaProc sur l'appui de CTRL-A
Pour restaurer la séquence de touche on écrit :
Application.OnKey "^{A}"
OnTime : Permet l'exécution d'une macro à une heure fixée ou après un délai précisé.
Application.OnTime Now + TimeValue("00:00:15"), "MaProc" attend 15 secondes avant d'exécuter la
procédure MaProc
Run : Lance l'exécution de la procédure spécifiée. Si celle-ci attend des paramètres, ils ne peuvent pas être
nommés.
Par exemple imaginons la fonction suivante :
Private Function MaSomme(Oper1 as Double, Oper2 as Double) As Double.
La syntaxe d'appel sera :
Resultat=Application.Run(MonClasseur!MaSomme,1.2,2.3)
Union : Renvoie l'union de n plages. Même remarque que pour Intersect.
Page 5/44
VB.NET PDF - View PDF with WPF PDF Viewer for VB.NET
13. Cancel. Unhighlight all search results on PDF. 14. Whole word. Select to search all text content filled in. 15. Ignore case.
find text in pdf files; text searchable pdf file
C# WPF PDF Viewer SDK to view PDF document in C#.NET
13. Cancel. Unhighlight all search results on PDF. 14. Whole word. Select to search all text content filled in. 15. Ignore case.
how to select text in pdf and copy; select text in pdf file
VBA-Programmer efficacement Excel
Maj 2008
Wait : Marque une pause dans l'exécution de la macro.
Collections et objets particuliers
Nous allons regarder trois collections (objets) intéressantes accessibles depuis l'objet Application.
FileSearch
L'objet FileSearch permet une recherche standard de fichiers. On peut spécifier ses critères de recherche en
valorisant ses propriétés. L'appel de la méthode Execute lance la recherche. Le résultat se trouve alors dans la
collection FoundFiles.
Par exemple pour rechercher l'ensemble des fichiers Res*.xls dans le répertoire courant, et les ouvrir.
Public Sub OuvreFichier()
Dim ChercheFichier As FileSearch, compteur As Long
Set ChercheFichier = Application.FileSearch
With ChercheFichier
.LookIn = CurDir
.FileName = "Res*"
.FileType = msoFileTypeExcelWorkbooks
.SearchSubFolders = True
.Execute
For compteur = 1 To .FoundFiles.Count
Workbooks.Open .FoundFiles(compteur)
Next
End With
End Sub
Dialogs
La collection Dialogs contient l'ensemble des boites de dialogues utilisées par Excel. Comme il y en a
beaucoup (646 dans Excel 97) je ne vais pas les énumérer, vous trouverez cette liste soit dans l'explorateur
d'objets, soit dans l'aide à "Listes d'arguments de boîte de dialogue intégrée", soit dans le fichier ListeVBA.xls
que vous retrouverez dans votre dossier Office (VBAlist.xls depuis Excel 2000). Ces boites agissent le plus
souvent sur la sélection en cours donc nous sommes dans un des rares cas où l'emploi de la méthode Select sera
obligatoire.
Voici par exemple l'appel de la boite de dialogue "alignement" pour permettre à l'utilisateur de modifier
l'alignement sur la plage B1:B10
Public Sub UtilDial()
Range(Cells(1, 2), Cells(10, 2)).Select
Application.Dialogs(xlDialogAlignment).Show
End Sub
On pourrait de la même façon donner des valeurs par défaut à cette boite en lui passant des arguments
Par exemple :
Application.Dialogs(xlDialogAlignment).Show 3,False,2
Ouvre la même boite mais en définissant les alignements verticaux et horizontaux sur "centré".
WorksheetFunction
Cet objet contient les fonctions de feuille de calcul intégrées dans Excel. Attention ces fonctions sont en
anglais. Il faut faire très attention aux types des paramètres passés, en effet certaines fonctions acceptent
indifféremment des plages ou des nombres alors que d'autres n'acceptent que des plages. L'exemple suivant
montre le calcul d'une moyenne mêlant chiffres et plages
Dim resultat As Double
resultat = Application.WorksheetFunction.Average(Range(Cells(1, 2),
Cells(10, 2)), 100, 200)
Là encore je ne donnerai pas la liste complète des fonctions que vous pourrez trouver dans l'aide, dans le
Page 6/44
VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.
example that you can use it to extract all images from Dim page As PDFPage = doc.GetPage(3) ' Select image by you how to copy pages from a PDF file and paste
search text in multiple pdf; pdf text search
C# WPF PDF Viewer SDK to annotate PDF document in C#.NET
PDF annotating tool, which is compatible with all Windows systems Click to select drawing annotation with default properties Click to add a text box to specific
find and replace text in pdf file; search pdf files for text programmatically
VBA-Programmer efficacement Excel
Maj 2008
fichier listeVBA.xls ou avec l'explorateur d'objets.
Résumé
Plus loin dans cet article nous trouverons des exemples d'utilisation des propriétés/méthodes de l'objet
Application, mais il faut bien garder à l'esprit qu'une procédure Excel devrait toujours contrôler le mode de
calcul et désactiver la mise à jour de l'écran.
L'objet WorkBook (classeur)
Le classeur est en général l'objet central de la programmation Excel. Lorsque l'application va utiliser un seul
classeur, on peut utiliser ActiveWorkbook, mais dans le cas d'une application multi-classeurs, il convient de les
mettre dans des variables afin d'en simplifier la manipulation. Pour cela, on fait :
En VBA
Dim MonClasseur as WorkBook
Set MonClasseur=ActiveWorkBook
En VB
Dim MonClasseur as Excel.WorkBook
Set MonClasseur=ActiveWorkBook
On peut bien sûr faire l'affectation dans le même temps que l'ouverture ou l'ajout, par exemple
Set MonClasseur=WorkBooks.Open Filename:="C:\User\Classeur1.xls"
N.B. (en VBA uniquement) : Si on utilise deux classeurs dont celui qui contient la macro, il n'est pas utile de
mettre celui-ci dans une variable puisqu'on le retrouve sous le nom "ThisWorkbook".
La collection WorkBooks
Cette collection contient l'ensemble des classeurs ouverts. L'ordre des classeurs dans la collection (index)
est l'ordre d'ouverture. Elle possède quatre méthodes que nous allons étudier
Add
Permet d'ajouter un nouveau classeur à la collection et non pas d'ouvrir un classeur existant. Le classeur
créé devient le classeur actif.
Elle suit la syntaxe Worbooks.Add(Template)
Si Template est un fichier Excel existant, le classeur est créé en suivant le modèle défini. Template peut
aussi être une constante (xlWBATChart, xlWBATExcel4IntlMacroSheet, xlWBATExcel4MacroSheet,
xlWBATWorksheet) et dans ce cas, le classeur ne contiendra qu'une feuille du type donné. Enfin si Template est
omis un nouveau classeur standard est créé.
Close
Cette méthode ferme tous les classeurs de la collection. Donc attention de ne pas confondre
WorkBooks.Close et WorkBooks(1).Close
Open
Ouvre un classeur Excel. Sa syntaxe est :
WorkBooks Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword,
IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMRU)
Seul FileName est obligatoire.
OpenText
Permet d'ouvrir un fichier texte délimité comme un classeur. Sa syntaxe est
WorkBooks. .OpenText(Filename, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab,
Semicolon, Comma, Space, Other, OtherChar, FieldInfo)
Quelques méthodes à connaître
Page 7/44
VBA-Programmer efficacement Excel
Maj 2008
Close
Ferme le classeur. La syntaxe est :
MonClasseur.Close(SaveChanges, FileName, RouteWorkbook)
Si SaveChanges est omis, une boite de demande d'enregistrement apparaît. Donner une valeur FileName
différentes de celle du classeur revient à faire un SaveAs.
PrintOut
Lance l'impression du classeur. Sa syntaxe est :
MonClasseur.PrintOut(from, To, Copies, Preview, ActivePrinter, PrintToFile, Collate)
A noter que From et To sont des pages d'imprimante et non les feuilles du classeur, et que ActivePrinter
permet de choisir l'imprimante
Protect / UnProtect
Active ou désactive la protection du classeur. La syntaxe est :
MonClasseur.Protect(Password, Structure, Windows) pour activer la protection
MonClasseur.UnProtect(Password) pour la retirer.
A ce propos, la protection du classeur et des feuilles est une chose indépendante. La protection du classeur
sert à bloquer la structure de celui-ci, celle de la feuille à protéger les objets qu'elle contient. On peut
parfaitement protéger une feuille sans protéger le classeur et inversement.
Save / SaveAs
Sauvegarde le classeur. La syntaxe de SaveAs est :
MonClasseur.SaveAs(Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended,
CreateBackup, AddToMru, TextCodePage, TextVisualLayout)
Evènements du classeur
L'objet classeur possède beaucoup d'événements, je ne vais donc détailler que ceux les plus souvent utilisés.
BeforeClose, BeforePrint, BeforeSave
Private Sub Workbook_Before----(Cancel As Boolean)
Se produit avant l'événement. Dans le cas de BeforeClose se produit avant la demande d'enregistrement des
modifications. Mettre Cancel = True dans la procédure empêche l'événement d'avoir lieu.
Open
Se produit à l'ouverture du classeur. Permet donc de faire des macros à exécution automatique
SheetBeforeDoubleClick, SheetBeforeRightClick
Private Sub MonClasseur_SheetBefore----Click(ByVal Sh As Object, ByVal Target As Range, ByVal Cancel
As Boolean)
Ces évènements sont des évènements de feuille. On utilise l'événement au niveau classeur lorsqu’on veut
centraliser l'événement pour plusieurs feuilles du classeur. S'il existe aussi une procédure pour l'événement au
niveau feuille, elle s'exécutera avant la procédure du classeur.
Cet événement ne se produit pas sur les feuilles graphiques.
L'objet "Sh" est un objet WorkSheet qui représente la feuille sur laquelle l'événement se produit. Nous
regarderons l'argument Target dans "les techniques de programmation".
SheetCalculate, SheetChange, SheetSelectionChange
Les mêmes remarques sont valables. Nous étudierons en détail ces événements dans le chapitre sur les
feuilles.
Les Feuilles (Sheets)
Un classeur Excel est composé d'une ou plusieurs feuilles. Ces feuilles peuvent être de cinq types :
Feuille de calcul, Feuille graphique, Macro Excel4, Macro Excel4 International, feuilles de boîtes de
dialogue Excel 5.
La collection Sheets contient toutes les feuilles du classeur quel que soit leur type. En fait, on utilise très
Page 8/44
VBA-Programmer efficacement Excel
Maj 2008
peu cette collection sauf pour connaître le nombre total de feuille avec la propriété Count ou parfois pour ajouter
une feuille de type macro Excel4.
Feuille de calcul (WorkSheet)
L'objet WorkSheet doit suivre les mêmes règles de programmation que l'objet classeur. On utilise
ActiveSheet que dans le cas d'une application ne mettant en jeu qu'une seule feuille. Sinon on référence la feuille
par :
En VBA
Dim MaFeuille as WorkSheet
Set MaFeuille=ActiveWorkSheet
En VB
Dim MaFeuille as Excel.WorkSheet
Set MaFeuille=ActiveWorkSheet
Observons qu'il est rarement nécessaire de référencer à la fois la feuille et le classeur.
La collection Worksheets
Cette collection contient l'ensemble des feuilles de calcul du classeur. Le numéro d'ordre d'un objet
WorkSheet dans cette collection est son ordre dans les onglets du classeur.
Méthodes utiles
Add WorkSheet.Add(Before, After, Count, Type)
Before et/ou After permettent de préciser la position où la feuille doit être ajoutée. L'argument Count
détermine le nombre de feuilles à ajouter. Type revient à faire un Add de la collection Sheets.
Comme je l'ai signalé au préalable, la position de l'objet WorkSheet dans l'ensemble des Worksheets du
classeur va aussi être son index dans la collection WorkSheets. C'est pourquoi accéder à une feuille par
WokSheets(index) peut être une source d'erreur.
Copy Worksheets(index).Copy(Before, After)
Duplique une feuille dans le classeur ou crée une copie dans un autre classeur.
Attention lors de la copie d'une feuille, la collection "Names" des plages nommées appartient à l'objet
WorkBook et à l'objet WorkSheet. Lors de la duplication de la feuille, Excel va créer deux noms presque
identiques, ce qui peut engendrer des bugs.
Delete WorkSheets(index).Delete
Supprime la feuille spécifiée par index. Un classeur doit toujours contenir au moins une feuille.
FillAcrossSheets WorkSheets(collection). FillAcrossSheets (Range, Type)
Permet de recopier une plage sur plusieurs feuilles en même temps. Range détermine la plage à copier, Type
définit le mode de copie (xlFillWithAll, xlFillWithContents ou xlFillWithFormulas)
Il faut passer une collection ou un tableau d'objets WorkSheet contenant les feuilles concernées par la
recopie à la méthode. Cette collection doit toujours contenir la feuille contenant la plage source.
Le code suivant recopie la plage A1:A10 sur toutes les feuilles de calcul du classeur
Dim MaFeuille As Worksheet
Set MaFeuille = ActiveWorkbook.Worksheets(1)
Worksheets.FillAcrossSheets MaFeuille.Range(Cells(1, 1), Cells(10, 1)),
xlFillWithAll
Le code suivant recopie la même plage dans la feuille "Feuil3"
Dim MaFeuille As Worksheet, TabFeuille As Variant
Set MaFeuille = ActiveWorkbook.Worksheets(1)
TabFeuille = Array("Feuil1", "Feuil3")
Worksheets(TabFeuille).FillAcrossSheets MaFeuille.Range(Cells(1, 1),
Cells(10, 1)), xlFillWithAll
Move Worksheets(index).Move(Before, After)
Similaire à copy mais déplace la feuille. Dans ce cas il n'y a pas de problème avec les noms.
Page 9/44
VBA-Programmer efficacement Excel
Maj 2008
Evènements de l'objet WorkSheet
BeforeDoubleClick, BeforeRightClick
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Se produit avant que l'effet du double click ou du click droit se produise. Mettre Cancel à True annule
l'évènement normalement attendu. Target renvoie un objet Range qui représente la cellule ayant reçu
l'évènement.
Calculate
Se produit après le recalcul de la feuille.
Change
Private Sub Worksheet_Change(ByVal Target As Range)
Se produit lorsque le contenu d'une cellule ou d'une plage change, du fait de l'utilisateur ou d'un lien
externe, ou du programme, mais pas par le recalcul.
Target renvoie la plage ou la cellule modifiée. Pour la gestion de ces plages voir plus loin au chapitre
"techniques de programmation".
SelectionChange
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Se produit lorsque la sélection a changé. Target renvoie la nouvelle plage sélectionnée.
Attention à la programmation de cet évènement. La présence de méthode Select dans la procédure peut
déclencher un évènement en cascade.
Quelques propriétés
Names
Renvoie la collection des noms spécifique à la feuille de calcul. Attention les plages nommées appartiennent
à l'objet WorkBook. La collection Names renvoyée par cette propriété ne contient donc pas les plages nommées
contenues par la feuille sauf si l'on a défini ce nom comme spécifique.
N.B : Pour votre culture générale, lors de la définition d'un nom, si on écrit NomFeuille!Nom on crée une
plage nommée spécifique.
PageSetup
Renvoie un objet PageSetup qui contient toutes les informations de mise en page de la feuille.
Shapes
Renvoie la collection Shapes de toutes les formes présentes sur la feuille. Cette collection peut contenir
beaucoup d'objets de types différents. Je n'aborderai pas dans cet article la programmation avec Shapes.
Visible
Affiche ou masque la feuille. La propriété peut prendre la valeur xlVeryHidden qui masque la feuille de
telle façon qu'elle ne puisse être rendue visible que par le code ou par l'explorateur de projet.
Plage et cellule (Range)
Nous allons aborder ici la clé de la programmation. Une plage de cellules (objet Range) représente
n'importe quel groupe de cellules d'une feuille. La plage peut être constituée d'une cellule, d'une plage continue
ou de plusieurs plages. L'objet Range, lorsqu'il représente des cellules, appartient toujours à un objet WorkSheet.
L'objet Range ne possède pas d'événement spécifique, néanmoins on peut lui faire utiliser les événements de
feuille ou de classeur.
Excel fonctionne avec un système d'adresse. Il existe en fait deux styles de référence :
R1C1 Les colonnes et les lignes sont représentées par des nombres
A1 Les colonnes sont des lettres et les lignes des nombres.
Le changement de style au cours d'un programme ne pose pas de problème vis-à-vis des formules déjà
existantes dans une feuille. Sachez toutefois que le code doit être rédigé dans le même style de référence que
l'application, sous peine de voir parfois se déclencher des erreurs.
Page 10/44
Documents you may be interested
Documents you may be interested