Voir le flux RSS

pijaku

Les différentes méthodes de détermination d'un Range "utile"

Noter ce billet
par , 14/09/2018 à 15h38 (29 Affichages)
________________________________________________________________________________


Bonjour,

Je reviens pour un petit topo à propos des différentes méthodes de détermination d'un Range "utile".

Avant tout, je tiens à préciser qu'il ne s'agit pas ici de limite ou de lacune, mais plutôt de "pièges" à éviter.
Ces différents pièges résident essentiellement dans les formatages :
  • Format de cellule,
  • Format de colonne (ligne) entière,
  • Lignes (colonnes) masquées,
  • Fusion de cellules.

Note : lorsque, dans ce topo, je parle de ligne, il en va de même pour les colonnes, et vice et versa...

---------------------------------------------------------------------------------------------------


  1. La propriété CurrentRegion
    L'aide VBA est très claire à ce sujet :
    Cette propriété renvoie un objet Range qui représente la zone en cours. Celle-ci est une plage limitée par toute combinaison de lignes et de colonnes vides. En lecture seule.
    Autrement dit, elle retourne la plage des cellules adjacentes à l'objet Range renseigné.
    Cette propriété n'est pas faite pour retourner la plage complète utilisée dans une feuille, mais bel et bien pour retourner un Range limité.
    Si l'on a conscience de cela (pas de lignes ni de colonnes vides), il n'y a aucun piège ni aucune lacune à cette propriété.


  2. La propriété UsedRange
    Ici, cette propriété ne s'applique plus à un Objet Range, mais à une feuille entière, l'Objet Worksheet.
    Aide VBA :
    Cette propriété renvoie un objet Range qui représente la plage utilisée dans la feuille de calcul spécifiée. Propriété en lecture seule.
    Tout formatage, même invisible (ex: Range("C17").Interior.Pattern = xlNone) fera inclure le Range formaté au UsedRange.
    Tout comme la propriété CurrentRegion, il n'y a pas de piège à proprement parler, mais il vous faudra faire attention aux :
    • Format de cellule,
    • Format de colonne,
    • Lignes (colonnes) masquées,
    • Fusion de cellules.


  3. La propriété SpecialCells
    Comme presque systématiquement avec cette méthode : à éviter!
    L'aide VBA précise que cette méthode, utilisée avec la Constante XlCellType :
    xlCellTypeLastCell. Renvoie la dernière cellule dans la plage utilisée
    Ouais...
    Sauf si vous avez conscience que :
    • cette méthode s'applique à la feuille entière,
    • l'enregistrement du classeur remet tout dans l'ordre


  4. La propriété End --> xlDown et/ou xlUp
    Aide VBA :
    Cette propriété renvoie un objet Range qui représente la cellule à la fin de la zone qui contient la plage source. Elle correspond aux combinaisons de touches CTRL+HAUT, CTRL+BAS. Objet Range en lecture seule.
    Elle renvoie donc la dernière ligne saisie sous le (xlDown) ou au dessus du (xlUp) Range indiqué.
    Attention donc aux lignes vides pour xlDown...
    A noter également que cette propriété ne tient pas compte des lignes masquées sous le (ou au dessus du) Range renseigné, même si elles sont saisies (ce qui est le comportement normal de la combinaison de touches).


  5. La méthode find
    A la base, elle n'est pas vraiment conçue pour cela.
    Mais, on peut très bien l'utiliser dans certains cas, notamment parce qu'elle tient compte des lignes (colonnes) masquées.
    Les pièges à éviter ici sont :
    • Les plages (colonnes et/ou lignes) vides,
    • Les cellules fusionnées (beurk!).

    Ces deux pièges vous renverront une Erreur d'exécution 91...


---------------------------------------------------------------------------------------------------

En conclusion, chacune des méthodes exposées ici s'adaptera à un cas précis.
Ne pas chercher l'universalité, mais profiter de cette diversité.

A++
Franck

Envoyer le billet « Les différentes méthodes de détermination d'un Range "utile" » dans le blog Viadeo Envoyer le billet « Les différentes méthodes de détermination d'un Range "utile" » dans le blog Twitter Envoyer le billet « Les différentes méthodes de détermination d'un Range "utile" » dans le blog Google Envoyer le billet « Les différentes méthodes de détermination d'un Range "utile" » dans le blog Facebook Envoyer le billet « Les différentes méthodes de détermination d'un Range "utile" » dans le blog Digg Envoyer le billet « Les différentes méthodes de détermination d'un Range "utile" » dans le blog Delicious Envoyer le billet « Les différentes méthodes de détermination d'un Range "utile" » dans le blog MySpace Envoyer le billet « Les différentes méthodes de détermination d'un Range "utile" » dans le blog Yahoo

Catégories
Sans catégorie

Commentaires