Easy-Micro


ESPACEMEMBRE Variables VBA
Variable objet

Déclaration de variable objet

Une variable objet est une variable qui ne représente pas une valeur mais un objet. C'est tout et n'importe quoi.

Exemple : La cellule est un objet (cellule = Range) donc une variable peut hériter des propriétés de l'objet cellule

Dim UneCellule as Range

Set UneCellule = Range("A2") ' cette ligne doit être saisie dans une procédure
-> affecte la cellule A2 à la variable UneCellule.
Vous pouvez, ensuite, l'utilisez ainsi dans une procédure :
UneCellule.Font.Size = 14.


Exemple d'utilisation de variable objet : Une rechercheV en VBA

1 tableau de 2 colonnes : "Ville" et "Département". La colonne "Département" est vide.
objectif : Assigner les départements dans la colonne B correspondant aux villes de la colonne A

Option Explicit 'déclaration de variable obligatoire
Dim MaCellule As Range ' Cellule recherchée
Dim MaPlage As Range 'Plage de recherche

Sub proc_affecte_departement_aux_villes()

' Initialisation de la plage de recherche
Set MaPlage = Range("A2:A10")

'Pour chaque cellule de ma plage
For Each MaCellule In MaPlage

   If MaCellule = "Bordeaux" Then
   MaCellule.Select
   ActiveCell.Offset(0, 1).Value = "Gironde"
   End If

   If MaCellule = "Paris" Then
   MaCellule.Select
   ActiveCell.Offset(0, 1).Value = "Paris"
   End If

   If MaCellule = "Lyon" Then
   MaCellule.Select
   ActiveCell.Offset(0, 1).Value = "Rhône"
   End If

Next MaCellule

End Sub


Option Explicit 'déclaration de variable obligatoire
Option Compare Text 'ignore la casse

Sub proc_trouve_les_numéros_d_apparts_vides()
'Tableau à 3 colonnes : N° d'Appart, Code Appart et Statut
'La colonne Statut contient soit Vide soit Occupé (voir option casse en haut du module)

' Déclaration des variables dont 2 variables objet
Dim UneCellule As Range
Dim MaPlage As Range
Dim i As Integer
Dim int_num_d_appart() As Integer ' tableau dynamique
Dim str_lignes_resultat As String
i = 0

'Initialisation variable objet
Set MaPlage = Range("A1:E50")

' Pour chaque cellule dans ma plage
For Each UneCellule In MaPlage

   ' si une cellule contient la chaîne vide
   If UneCellule = "VIDE" Then

   UneCellule.Select

   'on se déplace de 2 colonnes vers la gauche
   Selection.Offset(0, -2).Select

   ' Redimensionne dynamiquement le tableau en gardant les anciennes valeurs (Preserve)
   ReDim Preserve int_num_d_appart(i)

   ' on récupère la valeur de la cellule (le numéro d'appart)
   int_num_d_appart(i) = Selection.Value

   i = i + 1

   End If
Next UneCellule


' Affichage des numéros d'apparts dans un MsgBox
For i = 0 To UBound(int_num_d_appart)
   str_lignes_resultat = str_lignes_resultat & Chr(9) & "n° " & int_num_d_appart(i) & Chr(13)

   'Sinon, voici une autre technique d'affichage (dans des cellules): Range("E" & i + 6).Value = int_num_d_appart(i)
Next i

' La MsgBox est en-dehors de la boucle
MsgBox "Voici les numéros d'apparts vides : " & Chr(13) & str_lignes_resultat


End Sub
L'exemple ci-dessus est réalisé en mars 2019 avec messieurs Thomas Bizot et Pierre Turquois

Pour aller plus loin voir les Liens avec l'applications Word en VBA


Suivez les aventures des skippers aquitains sur EasyVoile.com
Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]
Mercredi 20 mars 2019 - Semaine 12 - Saint Herbert (Demain: Sainte Clémence)
Aujourd'hui, c'est l'anniversaire de Danièle Gilbert (1943-76 ans), animatrice de télévision française et de Marthe Villalonga (1932), actrice française. Autre 20 mars: 1815 : de retour de l'île d'Elbe et après une marche triomphale sur Paris, Napoléon entre dans la capitale. 1965 : France Gall gagne l'Eurovision pour le Luxembourg avec Poupée de cire poupée de son.
Haut de page Easy-Micro