CathyAstuce

VBA

GEMCCAP CONSEIL INFORMATIQUE BUREAUTIQUE
Formation - Conception Sites Internet
Applications Informatiques Personnalisées
Communauté partenaire Microsoft

MÉTHODE RENVOYANT UNE PLAGE

Recherche d'une valeur Recherche des valeurs différentes Recherche de cellules spéciales

Remonter I. Recherche d'une valeur

Les méthodes Find, puis FindNext (Suivant) et FindPrevious (Précédent) permettent de renvoyer une cellule contenant une valeur précisée, la recherche se faisaint dans une plage précisée. Si la valeur n'est pas trouvée, ces méthodes renvoient Nothing.
Les syntaxes sont les suivantes :

  • UnePlage.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte) où :
    • What est l'élément à trouver. Obligatoire (les autres paramètres sont facultatifs).
    • After est la cellule après laquelle est commencée la recherche.
    • LookIn précise dans quoi rechercher l'élément, xlFormulas, xlValues ou xlComments. A noter que si vous recherchez une date et que celle-ci est contenue dans une variable Date, vous devez choisir xlFormulas.
    • LookAt précise si la recherche s'effectue dans la cellule entière (xlWhole) ou non (xlPart).
    • SearchOrder indique dans quel sens la recherche doit se faire, xlByColumns ou xlByRows.
    • SearchDirection indique dans quel direction la recherche doit se faire,  prochain (xlNext) ou suivant (xlPrevious).
    • MatchCase doit être égal à True si vous voulez respecter la casse.
    • MatchByte rarement utilisé.
  • UnePlage.FindNext(After)After est la cellule après laquelle est continué la recherche. Cette méthode ne peut s'effectuer qu'après une recherche effectuée avec Find.
  • UnePlage.FindPrevious (After)After est la cellule après laquelle est continué la recherche. Cette méthode ne peut s'effectuer qu'après une recherche effectuée avec Find.

Exemple :

Sub Recherche()
   Dim L As Byte, C As Byte
   Dim Plage As Range

   For L = 1 To 10
      For C = 1 To 5
         Cells(L, C) = "Colonne " & C
      Next C
   Next L
   Set Plage = Range("A1:E10").Find("Colonne 2")
   Plage.Select
   Do Until Plage Is Nothing
      If MsgBox("Suivant", vbYesNo + vbInformation) = vbNo Then Exit Do
      Set Plage = Range("A1:E10").FindNext(Plage)
      Plage.Select
   Loop
End Sub

Remonter II. Recherche des valeurs différentes

Les méthodes ColumnDifferences et RowDifferences renvoie une plage dont chaque cellule est différente de la cellule de comparaison. La syntaxe est la suivante : UnePlage.ColumnDifferences(Comparison), ou .RowDifferences(Comparison)  où Comparison correspond à une cellule unique que l'on va comparer à la plage UnePlage. Exemple :

Sub RechercheDifference()
   Dim Plage As Range

   Range("A1") = "texte A"
   Range("A2") = "texte B"
   Range("A3") = "texte B"
   Range("A4") = "texte A"
   Range("A5") = "texte A"
   Range("A6") = "texte B"
   Range("A7") = "texte B"
   Range("A8") = "texte A"
   Set Plage = Range("A1:A8").ColumnDifferences(Range("A1"))
   Plage.Select
End Sub

Remonter III. Recherche de cellules spéciales

La méthode SpecialCells renvoie une plage qui représente toutes les cellules correspondant au type et à la valeur spécifiés. La syntaxe est : UnePlage.SpecialCells(Type, Value) où :

Type (obligatoire) Renvoie la ou les cellules
xlCellTypeAllFormatConditions de tout format.
xlCellTypeAllValidation dotées de critères de validation.
XlCellTypeBlanks vides.
xlCellTypeComments contenant des annotations.
xlCellTypeConstants contenant des constantes. Dans ce cas vous pouvez renseigner Value : xlErrors, xlLogical, xlNumbers, xlTextValues. Ces valeurs peuvent s'aditionner.
xlCellTypeFormulas contenant des formules.
xlCellTypeLastCell La dernière de la plage utilisée.
xlCellTypeSameFormatConditions de format identique.
xlCellTypeSameValidation dotées de critères de validation identiques.
XlCellTypeVisible Toutes les cellules visibles.

Exemple :

Sub CelluleSpeciale()
   Dim L As Byte, C As Byte
   Dim Plage As Range

   For L = 1 To 10
      For C = 1 To 5
         If C < 5 Then
            Cells(L, C) = L & C
         Else
            Cells(L, C) = "Texte " & L
         End If
      Next C
   Next L
   Columns("C").Hidden = True
   With Range("A1").CurrentRegion
      Range("G1") = .SpecialCells(xlCellTypeLastCell).Address
      Range("G2") = .SpecialCells(xlCellTypeVisible).Address
      Range("G3") = .SpecialCells(xlCellTypeConstants, xlNumbers).Address
      Range("G4") = .SpecialCells(xlCellTypeConstants, xlTextValues).Address
   End With
End Sub

AccueilDébut de la page