You are on page 1of 8

Excel et Visual Basic : Tutoriel

Par Sbastien Curutchet

Date de publication : 1 mars 2005 Dernire mise jour : 14 mars 2013

L'ensemble du code et explications que vous trouverez dans ce document est bas sur Excel 8 et Visual Basic 6. Vous trouverez ci-aprs des exemples d'utilisation d'Excel partir de Visual Basic. Je ne prsenterai pas toutes les possibilits, car elles sont tellement nombreuses qu'il est possible d'en crire un livre. Vous apprendrez les bases du maniement. Vous pourrez trouver galement comment rsoudre certains de vos problmes. Ce tutoriel est bas sur les diffrentes questions qui ont t poses sur le forum de developpez.com ainsi sur les exemples que certains membres m'ont donn et que je remercie.

Excel et Visual Basic : Tutoriel par Sbastien Curutchet

I - Mes premiers pas avec Excel................................................................................................................................ 3 II - Ouvrir un fichier spcifique.................................................................................................................................... 4 II-A - Ouverture d'un fichier Excel..........................................................................................................................4 II-B - Ouverture d'un fichier CSV........................................................................................................................... 4 II-C - Ouverture d'un fichier texte contenant des sparateurs...............................................................................5 III - Utiliser une feuille Excel....................................................................................................................................... 6 III-A - Slectionner une ou plusieurs colonnes......................................................................................................7 III-B - Slectionner une ou plusieurs lignes...........................................................................................................7 III-C - Slectionner une feuille............................................................................................................................... 8 III-D - Changer le nom d'une feuille...................................................................................................................... 8 IV - Remarque............................................................................................................................................................. 8

-2Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005 Sbastien Curutchet. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

http://drq.developpez.com/vb/tutoriels/Excel/

Excel et Visual Basic : Tutoriel par Sbastien Curutchet

I - Mes premiers pas avec Excel


Tout d'abord pour pouvoir utiliser Excel dans un projet Visual Basic vous devez rajouter dans le menu Projets Rfrences, Microsoft Excel x.x. Ceux qui sont plutt l'aise sous VBA (Visual Basic for Application), vous comprendrez trs vite que le passage de VBA VB est extrmement simple. Pour commencer nous allons voir quels sont les objets dont nous avons besoin et comment les utiliser. Pour travailler sur une feuille Excel, vous devez tout d'abord ouvrir Excel puis un classeur sur lequel vous allez travailler. Cela se passe en trois tapes : ouvrir Excel ; slectionner le classeur par dfaut ; slectionner la feuille par dfaut.

Voici le code associ ces trois tapes :


'Dclaration des variables Dim appExcel As Excel.Application 'Application Excel Dim wbExcel As Excel.Workbook 'Classeur Excel Dim wsExcel As Excel.Worksheet 'Feuille Excel 'Ouverture de l'application Set appExcel = CreateObject("Excel.Application") 'Ajout d'un classeur car l'ouverture d'Excel il n'y a aucun classeur d'ouvert appExcel.Workbooks.Add 'Ceci n'est ncessaire que si vous n'ouvrez pas un fichier existant 'Rcupration du classeur par dfaut Set wbExcel = appExcel.ActiveWorkbook 'Rcupration de la feuille par dfaut Set wsExcel = wbExcel.ActiveSheet

Maintenant que vous savez ouvrir une feuille Excel, voil comment on referme une application Excel. Cette phase est EXTRMEMENT IMPORTANTE. En effet si vous oubliez de fermer Excel la fin de son utilisation vous pouvez vous avoir des plantages, car vous aurez trop d'Excel d'ouverts et la mmoire de votre ordinateur sera sature. Par contre la fin de votre application mme si vous oubliez de fermer Excel, il se fermera tout seul sauf si votre application plante. Donc je vous conseille vivement d'effectuer la fermeture d'Excel ds que vous n'en avez plus besoin. Voici le code associ la fermeture de l'application Excel :
wbExcel.Close 'Fermeture du classeur Excel appExcel.Quit'Fermeture de l'application Excel 'Dsallocation mmoire Set wsExcel = Nothing Set wbExcel = Nothing Set appExcel = Nothing

Au cours d'un des programmes que j'ai ralis, je me suis heurt un problme qui a dj t remarqu par plusieurs personnes. Lorsque vous ajouter un saut de page dans votre feuille, l'application Excel ne se ferme pas mme aprs les lignes crites ci-dessus. Rassurez-vous tout de mme, Excel est automatiquement ferm lorsque votre application se termine. Mais c'est un problme ne pas ngliger lorsque vous avez besoin de travailler avec plusieurs fichiers ouverts cat la mmoire de votre ordinateur va saturer. Dans le prochain chapitre, nous allons voir comment ouvrir un fichier Excel standard, un fichier CVS, et un fichier texte avec des sparateurs.

-3Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005 Sbastien Curutchet. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

http://drq.developpez.com/vb/tutoriels/Excel/

Excel et Visual Basic : Tutoriel par Sbastien Curutchet

II - Ouvrir un fichier spcifique II-A - Ouverture d'un fichier Excel


Ouvrir un fichier Excel c'est ce qu'il y a de plus simple. Voici un exemple de code :
'Dclaration des variables Dim appExcel As Excel.Application 'Application Excel Dim wbExcel As Excel.Workbook 'Classeur Excel Dim wsExcel As Excel.Worksheet 'Feuille Excel 'Ouverture de l'application Set appExcel = CreateObject("Excel.Application") 'Ouverture d'un fichier Excel Set wbExcel = appExcel.Workbooks.Open("C:\MonFichierExcel.xls") 'wsExcel correspond la premire feuille du fichier Set wsExcel = wbExcel.Worksheets(1)

Je ne remarque pas les lignes permettant de fermer le fichier mais je vous rappelle que ces lignes ne sont pas ngliger mais si elles ne sont pas obligatoires.

II-B - Ouverture d'un fichier CSV


titre informatif, les fichiers CSV sont des fichiers textes o une ligne du fichier correspond une ligne de la feuille et les colonnes sont spares par des ';'. Voici un petit exemple : Le fichier :
123,45,,52,65 ,10,23,, ,,23,,41

Le tableau rsultat est le suivant : 123 45 10 52 65 41

23 23

Quand je disais que le fichier Excel tait le plus simple, en fait les CSV sont tout aussi simple.
'Dclaration des variables Dim appExcel As Excel.Application 'Application Excel Dim wbExcel As Excel.Workbook 'Classeur Excel Dim wsExcel As Excel.Worksheet 'Feuille Excel 'Ouverture de l'application Set appExcel = CreateObject("Excel.Application") 'Ouverture d'un fichier Excel Set wbExcel = appExcel.Workbooks.Open("C:\MonFichierCSV.csv") 'wsExcel correspond la premire feuille du fichier Set wsExcel = wbExcel.Worksheets(1)

-4Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005 Sbastien Curutchet. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

http://drq.developpez.com/vb/tutoriels/Excel/

Excel et Visual Basic : Tutoriel par Sbastien Curutchet

II-C - Ouverture d'un fichier texte contenant des sparateurs


Sous Excel vous pouvez ouvrir des fichiers textes et les affichs sous forme de tableur car chaque colonne est spare par un symbole ou alors les colonnes ont une taille fixe. Voici la liste des sparateurs grs par Excel : la tabulation ; le point-virgule ; la virgule ; l'espace.

Mais si cela ne vous convient pas, Excel vous propose de choisir votre propre sparateur. Mais ce ne peut tre qu'un seul caractre. Comme tout bon tableur vous pouvez indiquer Excel partir de quelle ligne du fichier vous souhaitez commencer l'import et quel format (celui par faut est Windows(ANSI)). Voici le code pour ouvrir un fichier texte avec comme sparateur le ';' commenant la deuxime ligne et au format Windows(ANSI) :
'Dclaration des variables Dim appExcel As Excel.Application 'Application Excel Dim wbExcel As Excel.Workbook 'Classeur Excel Dim wsExcel As Excel.Worksheet 'Feuille Excel 'Ouverture de l'application Set appExcel = CreateObject("Excel.Application") 'Ouverture d'un fichier Excel Workbooks.OpenText Filename:= "C:\MonFichierTexte.txt", Origin:=xlWindows, _ StartRow:=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, pace:=False, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True Set wbExcel=appExcel.ActiveWorkbook Set wsExcel=wbExcel.ActiveSheet

Afin de ne pas tre trop perdu je vous explique quoi correspond chaque option ci-dessus : Filename : nom du fichier (tout le monde avait devin :oD ) ; Origin : indique l'origine du fichier dans notre cas xlWindows signifie Windows(ANSI) ; StartRow : indique partir de quelle ligne le tableau commence ; DataType : indique sous quelle forme est stock le fichier. xlDelimited veut dire que les colonnes sont spares par un ou plusieurs sparateurs. xlFixedWidth veut dire que les colonnes ont une largeur fixe.

Les options suivantes ne sont valides que si DataType:=xlDelimited TextQualifier : permet d'identifier les zones de texte. Par exemple si vous 123; blabla;blabla ;123 vous pouvez avoir trois ou quatre colonnes suivant ce que vous choisissez comme identifieur de texte. Vous pouvez utiliser xlDoublQuote (c'est notre cas : "), xlSingleQuote (') ou bien xlNone si vous n'avez pas d'identifieur de texte. Donc pour revenir l'exemple si vous mettez xlDoubleQuote vous obtenez trois champs sinon vous en obtenez quatre ; ConsecutiveDelimiter : Si cette proprit est True alors si vous 1;;2 il ne comptera que deux colonnes, car s'il trouve plusieurs sparateurs la suite il ragit comme s'il y en avait qu'un ; Tab : est True si la tabulation est un sparateur sinon est False ; Semicolon : est True si le point-virgule est un sparateur sinon est False ; Comma : est True si la virgule est un sparateur sinon est False ; Space : est True si l'espace est un sparateur sinon est False ; Other : si vous ne spcifier pas de caractre il est False. Si vous souhaitez utiliser un caractre que vous dfinissez vous devez mettre True et rajouter la proprit OtherChar:="m" : en mettant votre caractre la place de m ;

-5Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005 Sbastien Curutchet. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

http://drq.developpez.com/vb/tutoriels/Excel/

Excel et Visual Basic : Tutoriel par Sbastien Curutchet

FieldInfo:=Array(1,1) : indique que la largeur des colonnes est alatoire.

Les options ci-dessous ne sont valides que si DataType:=xlFixedWidth FieldInfo : c'est une suite de Array(x,y) o x correspond l'index de la premire colonne et y au type de la colonne. y peut prendre les valeurs suivantes : xlGeneralFormat Gnral : 1 ; xlTextFormat Texte : 2 ; xlMDYFormat Format de date Mois-Jour-Anne : 3 ; xlDMYFormat Format de date Jour-Mois-Anne : 4 ; xlYMDFormat Format de date Anne-Mois-Jour : 5 ; xlMYDFormat Format de date Mois-Anne-Jour : 6 ; xlDYMFormat Format de date Jour-Anne-Mois : 7 ; xlYDMFormat Format de date Anne-Jour-Mois : 8 ; xlEMDFormat Date EMD : 9 ; xlSkipColumn Non distribue : 10.

Voici un exemple o vous souhaitez charger sur 3 colonnes. La premire colonne commence 0 (dbut de la feuille), la deuxime la 10e colonne et la troisime la 15e colonne. Le code obtenu est FieldInfo:=Array(0,1), Array(10,1), Array(15,1) Le prochain chapitre portera sur la navigation dans une feuille Excel et l'affectation des cellules.

III - Utiliser une feuille Excel


Afin d'viter d'avoir s'embter avec les lettres des colonnes, nous allons commencer par dclarer un tableau contenant le nom des colonnes :
Option Base 1 Public colHeader As Variant colHeader = Array("A", "B", "C", "D", "E", "F", _ "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", _ "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", _ "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH",

"G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", " "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "CR", "CS",

Je me suis arrt la colonne CZ mais vous pouvez en rajouter autant que vous le souhaitez. Je vous conseille de mettre le code ci-dessus dans un module pour que toute votre application puisse utiliser ce tableau. Pour dbuter ce chapitre nous allons slectionner une feuille, et calculer la somme des cellules A3 F3 et mettre le rsultat dans la cellule B4.
Dim i As Integer Dim somme As Integer Dim appExcel As Excel.Application Dim sheet As Excel.Worksheet Set appExcel = CreateObject("Excel.Application") 'Ouverture d'un nouveau vierge appExcel.Workbooks.Add Set sheet = appExcel.ActiveWorkbook.ActiveSheet somme = 0 'Parcours des cellules : A correspond la premire case de mon tableau et F la sixime For i = 1 To 6 'La proprit Cells(nligne,ncolonne) permet de slectionner une seule cellule
-6Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005 Sbastien Curutchet. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

http://drq.developpez.com/vb/tutoriels/Excel/

Excel et Visual Basic : Tutoriel par Sbastien Curutchet

somme = somme + sheet.Cells(3,i).Value Next i

'La proprit Range(zone) permet de slectionner une zone. La variable zone est une chaine de caractre de la form sheet.Range(colHeader(2) & "4:" & colHeader(2) & "4").Select 'La chaine forme par colHeader(2) & "4:" & colHeader(2) & "4" donne "B4:B4" ce qui slectionne une seule cellule sheet.Selection.Value = somme ...

C'tait un petit exemple qui vous montre comment accder une cellule directement (grce Cells) et comment slectionner un ensemble de cellule (grce Range). Bien sr vous pouvez slectionner aussi bien une ligne qu'une colonne, mais avec la proprit Range c'est assez embtant, car la premire cellule on la connat mais pas la dernire, moins de mettre les valeurs maximales d'Excel. Donc il existe deux proprits qui sont Rows et Columns. Pour ce qui font de l'anglais c'est plutt clair :) Columns : permet de slectionner un ensemble de colonnes conscutives ; Rows : permet slectionner un ensemble de lignes conscutives.

Nous allons commencer par Columns.

III-A - Slectionner une ou plusieurs colonnes


Pour slectionner un ensemble de colonnes vous devez faire passez le nom de la premire colonne et celui de la dernire. Pour slectionner les colonnes D H vous faites :
sheet.Columns("D:H").Select

Comme vous n'avez que le numro des colonnes et non pas les lettres vous faites :
sheet.Columns(colHeader(4) & ":" & colHeader(8)).Select

Donc pour slectionner une seule colonne vous devez mettre le mme nom de colonne de dbut et de fin. Mais bien sr vous tes un peu faignant comme la plupart des codeurs. Vous prfrez passer votre temps rflchir des solutions plutt qu' coder. Donc il existe une solution pour gagner un peu. Pour la slection d'une colonne vous pouvez ne passer que le nom de la colonne slectionner ( Coloumns("D").Select ) ou bien le numro de la colonne slectionner ( Columns(4).Select ).

III-B - Slectionner une ou plusieurs lignes


Pour slectionner un ensemble de colonnes vous devez faire passer le nom de la premire colonne et celui de la dernire. Pour slectionner les lignes 25 43 vous faites :
sheet.Rows("25:43").Select

Pour slectionner une seule ligne vous pouvez faire Rows("25").Select ou bien Rows(25).Select. Les techniques de slection sont valables pour la copie, le coupage, le collage, la suppression et l'insertion. Vous devez juste remplacer Select par Copy, Cut, Paste, Delete, Insert.

-7Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005 Sbastien Curutchet. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

http://drq.developpez.com/vb/tutoriels/Excel/

Excel et Visual Basic : Tutoriel par Sbastien Curutchet

III-C - Slectionner une feuille


Vous pouvez soit rcuprer une feuille spcifique soit rcuprer la feuille active.
'Rcupration de la feuille s'appellant maFeuille Set sheet = appExcel.ActiveWorkbook.Sheets("maFeuille") 'Rcupration de la deuxime feuille Set sheet = appExcel.ActiveWorkbook.Sheets(2) 'Rcupration de la feuille active Set sheet = appExcel.ActiveWorkbook.ActiveSheet

III-D - Changer le nom d'une feuille


Rien de plus simple. Vous slectionnez une feuille avec la mthode ci-dessus, puis vous faites :
sheet.Name = "NouveauNom"

IV - Remarque
Il est tout fait possible qu'il y ait des erreurs dans le document. Si vous en trouvez, ou bien souhaitez un peu plus d'explication sur certains points, veuillez m'envoyer un mail afin de mettre jour l'ensemble de ce document. D'avance merci.

-8Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005 Sbastien Curutchet. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.

http://drq.developpez.com/vb/tutoriels/Excel/

You might also like