RTV :: RANGE TOOLS VALUES

oguruma

XLDnaute Occasionnel
En ce dimanche pointant une météo de fin d'année.... que faire.... ? Bientôt c'est Noël. :D - Allez un peu de VBA.

Dans différents Post un sujet est revenu sur la table : La recopie d'une plage en valeur afin d'éliminer la formule voir même en automatique à l'issue de la construction d'une formule.
J'avais cela en réserve dans une vieille version que j'ai remis en ordre ce dimanche avec quelques add-on.

Une petite classe nommée : cRangeToolsValues
Les fonctions ci-dessous tiennent compte à la fois des tableaux structurés, des plages de données "simple" et également une source de données composée de cellule vide via le paramètre hRangeDynamic afin de gérer cette éventualité (objet de cette nouvelle version en grande majorité car ça manquait un peu).
  • Function MOVE_RANGE_TO_VALUE(hRangeSource As String, hRangeTarget As String, hRangeDynamic As Boolean) As Boolean
    • Permet de déplacer une plage de cellule
  • Function ERASE_RANGE(hRangeSource As String, hRangeDynamic As Boolean) As Boolean
    • Comme son nom l'indique permet d'effacer une plage de cellules
  • Function FORMAT_RANGE(hRangeSource As String, hRangeDynamic As Boolean, _
    Optional hBold As Boolean, _
    Optional hUnderline As Boolean, _
    Optional hItalic As Boolean, _
    Optional hGrid As Boolean, _
    Optional hFontName As String, _
    Optional hFontSize As Integer) As Boolean
    • Mise en forme à minima d'une plage de cellules
  • COPY_RANGE_TO_VALUE(hRangeSource As String, hRangeTarget As String, hRangeDynamic As Boolean) As Boolean
    • Permet de recopier (en valeur) une plage de cellules vers une autre adresse
  • Function BUILD_FORMULA_TO_VALUE(hRange As String, hFormula As String, hFormulaType As FormulaType, Optional hRangeDynamic As Boolean) As Boolean
    • Cette fonction est issue du dernier projet que j'ai mené. En résumé, dans un outillage de tableau de bord où je recevais au quotidien les résultats de traitements de 60 000 Jobs (mainframe - MVS ça perlera certainement aux anciens les vieux de la vieille ;)) et à partir de ces noms de Jobs normalisés il fallait leur attribuer des données fonctionnelles comme Direction, libellé de l'application, Gestionnaire... etc, il était inconcevable de laisser des RechercheX (n fois 60 000) afin de récupérer les données fonctionnelles dans des tables annexes (onglets).
    • Il était donc nécessaire de positionner les RechercheX "qui allaient bien" plus d'autres formules complexes pour des calculs de scalabilité, de fréquence de jobs incidentés, etc. dans les colonnes appropriées puis de transformer ces résultats en valeurs.
      • certains diront "Alors PWQ ?" --> en effet j'y avais pensé mais le contexte que je passerai ici ne me le permettait pas car trop de particularités à gérer.
    • Je vous invite à bien étudier le code et de le tester. Dans mon besoin ça fonctionnait mais pas l'abris d'un dysfonctionnement inattendu.
J'en ai aussi profité pour y glisser quelques fonctions comme :
  • Function GET_LETTER_FROM_COLUMN(hCol As Long, Optional ByRef hRetMsg As String) As String
  • Function GET_COLUMN_FROM_LETTER(hLetter As String, Optional ByRef hRetMsg As String) As Integer
ainsi que celles-ci pour ceux qui sont encore en 2007..., 2010... ceux qui n'ont pas la chance d'avoir par exemple TEXTE.AVANT, TEXTE.APRES
  • Public Function sLeft(hSourceString As String, hSearchString As String) As String
  • Public Function sRight(hSourceString As String, hSearchString As String) As String
  • Public Function sLeftBack(hSourceString As String, hSearchString As String) As String
  • Public Function sRightBack(hSourceString As String, hSearchString As String) As String

Une nouvelle fois, un code source qui pourrait aider les débutants en VBA sur la manière de coder et l'approche de la POO en VBA. Ce n'est qu'un aperçu.
 

Pièces jointes

  • RANGE_TOOLS_VALUES_v1.0.xlsm
    242.9 KB · Affichages: 4

oguruma

XLDnaute Occasionnel
Bonsoir, je remets sur le devant de la scène cette classe d'outillage car bcp de questions reviennent sur ce sujet "comment faire pour copier des cellules par exemple..." etc. etc. :)
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 267
Membres
103 168
dernier inscrit
isidore33