Developpez.com

Plus de 2 000 forums
et jusqu'à 5 000 nouveaux messages par jour

Developpez.com - Visual Basic 6
X

Choisissez d'abord la catégorieensuite la rubrique :



Mis à jour le 18/12/2002

Par Sébastien Curutchet

Ouvrir un fichier spécifique Sommaire  

Droit de diffusion et d'utilisation:
Tous les documents ou partie de document ainsi que le code sont libres d'accès, mais ne peuvent pas être diffusés sur d'autres sites HTTP, FTP ou autres, sans mon accord.
Je demande juste aux personnes incluant mon code dans leurs applications d'y laisser le commentaire mis en entête.


Travailler avec Excel sous Visual Basic, ce n'est pas très compliqué. En effet tout est basé sur sur le VBA. Toute la suite du cours sera en plus un cours sur VBA. En effet si vous souhaitez réaliser une manipulation plus ou moins complexe avec Excel, je vous conseille de créer une macro sous Excel. Pour celà vous allez dans le menu Outils -> Macro -> Nouvelle Macro...
Vous effectuez votre manipulation puis vous arrêtez votre macro avec le carré bleu de la barre d'outils. Ensuite vous retournez dans le menu Outils -> Macro et vous sélectionnez Visual Basic Editor (ou vous faites Alt+F11). Vous trouverez alors le code VBA de ce que vous venez de réaliser.Il ne vous reste plus qu'à l'adapterà vos besoins.

Je vais tout de même vous montrez quelques bases comme la navigation dans une feuille Excel avec sélection, affectation, copie, coupage, insertion, suppression.

3. Utiliser une feuille Excel

Afin d'éviter d'avoir à s'embetter avec les lettres des colonnes, nous allons commencé par déclarer un tableau contenant le nom des colonnes :

Option Base 1
Public colHeader As Variant
colHeader = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", _
"AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", _
"BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", _
"CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ")

Je me suis arrêté à 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 débuter ce chapitre nous allons sélectionné une feuille, et calculer la somme des cellules A3 à F3 et mettre le résultat 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 première case de mon tableau et F à la sixième
For i = 1 To 6
'La propriété Cells(n°ligne,n°colonne) permet de sélectionner une seule cellule
somme = somme + sheet.Cells(3,i).Value
Next i

'La propriété Range(zone) permet de sélectionner une zone. La variable zone est une chaine de caractère de la forme "B5:T20" (cellule du coin haut gauche et cellule bas droite séparée par le caractère ':')
sheet.Range(colHeader(2) & "4:" & colHeader(2) & "4").Select
'La chaine formée par colHeader(2) & "4:" & colHeader(2) & "4" donne "B4:B4" ce qui sélectionne une seule cellule
sheet.Selection.Value = somme

...


C'était un petit exemple qui vous montre comment accéder à une cellule directement (grâce à Cells) et comment sélectionner un ensemble de cellule (grâce à Range).
Biensûr vous pouvez sélectionner aussi bien une ligne qu'une colonne, mais avec la propriété Range c'est assez embettant car la première cellule on la connaît mais pas la dernière, à moins de mettre les valeurs maximales d'Excel. Donc il existe deux propriétés qui sont Rows et Columns.

Pour ce qui font de l'anglais c'est plutôt clair :)

  • Columns : permet de sélectionner un ensemble de colonnes consécutives
  • Rows : permet sélectionner un ensemble de lignes consécutives
Nous allons commencer par Columns.

3.1 Sélectionner une ou plusieurs colonnes:

Pour sélectionner un ensemble de colonnes vous devez faire passez le nom de la première colonne et celui de la dernière. Pour sélectionner les colonnes D à H vous faites :

sheet.Columns("D:H").Select

Comme vous n'avez que le numéro des colonnes et non pas les lettre vous faites :

sheet.Columns(colHeader(4) & ":" & colHeader(8)).Select
Donc pour sélectionner une seule colonne vous devez mettre le même nom de colonne de début et de fin. Mais biensûr vous êtes un peu faignant comme la plupart des codeurs. Vous préférez passer votre temps à réfléchir à des solutions plutot qu'à coder. Donc il existe une solution pour gagner un peu. Pour la sélection d'une colonne vous pouvez ne passer que le nom de la colonne à sélectionner ( Coloumns("D").Select ) ou bien le numéro de la colonne à sélectionner ( Columns(4).Select )


3.2 Sélectionner une ou plusieurs lignes:

Pour sélectionner un ensemble de colonnes vous devez faire passez le nom de la première colonne et celui de la dernière. Pour sélectionner les lignes 25 à 43 vous faites :

sheet.Rows("25:43").Select

Pour sélectionner une seule ligne vous pouvez faire Rows("25").Select ou bien Rows(25).Select


Les techniques de sélection sont valables pour la copie, le coupage, le collage, la supression et l'insertion. Vous devez juste remplacer Select par Copy, Cut, Paste, Delete, Insert.

3.3 Sélectionner une feuille:

Vous pouvez soit récupérer une feuille spécifique soit récupérer la feuille active.


'Récupération de la feuille s'appellant maFeuille
Set sheet = appExcel.ActiveWorkbook.Sheets("maFeuille")

'Récupération de la deuxième feuille
Set sheet = appExcel.ActiveWorkbook.Sheets(2)

'Récupération de la feuille active
Set sheet = appExcel.ActiveWorkbook.ActiveSheet

3.4 Changer le nom d'une feuille:

Rien de plus simple. Vous selectionnez une feuille avec la méthode ci-dessus, puis vous faites :


sheet.Name = "NouveauNom"


Ouvrir un fichier spécifique Sommaire  

Documents réalisés par Sébastien Curutchet



Contacter le responsable de la rubrique Visual Basic 6