Récupérer l'Adresse de la Première Cellule Répondant à un Critère

Solutions Développées sous VBA
Verrouillé
admin
Site Admin
Site Admin
Messages : 227
Enregistré le : 04 oct. 2020, 20:48
Contact :

Récupérer l'Adresse de la Première Cellule Répondant à un Critère

Message par admin »

~ ~ ~ ~ ~ ~ ~ ~
Vous voulez récupérer la première cellule non-vide trouvée qui répond à un critère donné (ou testé), sous la forme d'une adresse (cell) complète, d'une colonne (lettre ou numéro) ou d'un numéro de ligne.

La solution est ici: Position_Premier (clic-droit, enregistrer sous)

Mode d'emploi:
  • Intégrer la source fournie dans votre code
  • Faire l'appel à la fonction : Position_Premier (LaValeur, LeRange, Opt. LeType, Opt. LeTest, Opt. PasdInfo)
    • résultat = Position_Premier(LaValeur, LeRange, PasdInfo:=true) :
      • résultat contiendra l'adresse de la première cellule dont le contenu est égal à LaValeur;
      • sinon : un point d'exclamation.
    • résultat = Position_Premier(LaValeur, LeRange, LeType:="LetCol", PasdInfo:=true) :
      • résultat contiendra les lettres de la colonne répondant au critère;
      • sinon : un point d'exclamation.
    • résultat = Position_Premier(LaValeur, LeRange, LeType:="NumCol", PasdInfo:=true) :
      • résultat contiendra le numéro de la colonne répondant au critère;
      • sinon : la valeur 0.
    • résultat = Position_Premier(LaValeur, LeRange, LeType:="NumLig", PasdInfo:=true) :
      • résultat contiendra le numéro de la ligne répondant au critère;
      • sinon : la valeur 0.
    • résultat = Position_Premier(LaValeur, LeRange, LeTest:="<=", PasdInfo:=true) :
      • résultat contiendra le numéro de la ligne répondant au critère et au test spécifié;
      • sinon : un point d'exclamation.
    • résultat = Position_Premier(LaValeur, LeRange, PasdInfo:=false) :
      • Se comportera comme prévu en fonction des autres paramètres fournis;
      • cette option n'a d'impact visible dans du code (hors d'une formule dans une cellule).
  • Où :
    • LaValeur = Chaine de Caractères ou Valeur Numérique Recherchée (ou Testée)
    • LeRange = Range de Recherche (ex. sheets("onglet").range("8:8") pour la ligne 8 dans l'onglet correspondant)
    • LeType = Chaine de Caractères optionnelle devant contenir "LetCol", "NumCol", "NumLig" pour que l'adresse soit remplacée par les lettres de la colonne, le numéro de la colonne ou celui de la ligne
    • LeTest = Chaine de Caractères optionnelle devant contenir une combinaison de "<" ">" et "=" qui sera appliquée au lieu de rechercher l'exacte valeur de LaValeur
    • PasdInfo = Booléen optionnel devant être à vrai pour qu'une erreur rencontrée ne soit pas signalée
  • Astuce :
    • Pour appeler la fonction dans une formule, remplacer les "," par des ";" et suivre l'ordre des options :
      =Position_Premier( 1 ; C10:C20 ; ; "<>" ; vrai )
      =Position_Premier( "ABC" ; A10:AB20 ; "numCol" ; ; vrai )
  • Aperçu :
    • Aperçu de l'Utilisation de la macro comme fonction :
      Image
Suivi des évolutions:
  • 2013.02.16 (v1.00) : Création initiale, fournit l'adresse de la première valeur d'un range
  • 2021.03.19 (v1.10) : Remplacement de .Find() non-fonctionnelle sur colonnes masquées par une boucle For Each
  • 2021.10.08 (v1.20) : Ajoute une option de test basique (/!\ en paramètre avant celui de PasdInfo)
  • 2021.10.26 (v1.21) : Ajout de précisions dans la gestion des erreurs (lieu de la formule, test appliqué, valeur retournée)

Une recherche simplifiée d'une "première" cellule sur critère...
Modifié en dernier par admin le 08 oct. 2021, 14:42, modifié 2 fois.
Verrouillé