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
objectif : Assigner les départements dans la colonne B correspondant aux villes de la colonne A
La colonne Statut contient soit Vide soit Occupé (voir option casse en haut du module)
L'exemple ci-dessus est réalisé en mars 2019 avec messieurs Thomas Bizot et Pierre Turquois
Exercice réalisé début décembre 2020 à partir d'un tableau de Philippe Paulin du Service Commun des Laboratoires
Pour aller plus loin voir les Liens avec l'applications Word en VBA
Exemple : La cellule est un objet (cellule = Range) donc une variable peut hériter des propriétés de l'objet cellule
'déclaration de variable Dim UneCellule as Range 'affecte la cellule A2 à la variable UneCellule - Doit être saisie dans une procédure Set UneCellule = Range("A2") 'utilisation : UneCellule.Font.Size = 14.
Exemple 1 - 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
Exemple 2 - Utilisation de variable objet : Une rechercheV en VBA
Un tableau à 3 colonnes : N° d'Appart, Code Appart et StatutLa colonne Statut contient soit Vide soit Occupé (voir option casse en haut du module)
Option Explicit 'déclaration de variable obligatoire Option Compare Text 'ignore la casse Sub proc_trouve_les_numéros_d_apparts_vides() '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
Exemple 3 - Utilisation de variable objet : Une rechercheV en VBA
un tableau avec quatre colonnes : Numéro, Echantillon, Composés et ConcentrationOption Explicit 'Déclaration de variables Dim MaCellule As Range 'Cellule recherchée Dim MaPlage As Range 'Plage de recherche Dim Monresultat As Single Dim i As Integer Sub proc_recupe_donnees() ' on veut récupérer la concentration si le composé est "DMP" et l'échantillon est "blanc manip" Sheets("Feuil1").Activate ' initialisation du compteur pour affichage i = 1 'Initialisation de la plage de recherche Set MaPlage = Range("B2:C10") 'Pour chaque cellule de ma plage For Each MaCellule In MaPlage ' Si ma cellule est égale à DMP et à Blanc manip dans la collone de gauche If MaCellule.Value = "DMP" And MaCellule.Offset(0, -1).Value = "Blanc manip" Then ' on récupère la valeur de la cellule d'a côté (colonne de droite) Monresultat = MaCellule.Offset(0, 1).Value ' Affichage des données récupérées Range("F" & i).Value = Monresultat Range("F" & i).NumberFormat = "0.00" 'Format à deux décimales i = i + 1 End If Next MaCellule End Sub
Pour aller plus loin voir les Liens avec l'applications Word en VBA