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

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

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

Message par admin »

~ ~ ~ ~ ~ ~ ~ ~
Vous voulez récupérer la derniè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_Dernier (clic-droit, enregistrer sous)

Mode d'emploi:
  • Intégrer la source fournie dans votre code
  • Faire l'appel à la fonction : Position_Dernier (LaValeur, LeRange, Opt. LeType, Opt. LeTest, Opt. PasdInfo)
    • résultat = Position_Dernier(LaValeur, LeRange) :
      • résultat contiendra l'adresse de la dernière cellule dont le contenu est égal à LaValeur;
      • sinon : une chaine vide et un message d'erreur.
    • résultat = Position_Dernier(LaValeur, LeRange, LeType:="LetCol") :
      • résultat contiendra les lettres de la colonne répondant au critère;
      • sinon : une chaine vide et un message d'erreur.
    • résultat = Position_Dernier(LaValeur, LeRange, LeType:="NumCol") :
      • résultat contiendra le numéro de la colonne répondant au critère;
      • sinon : 0 et un message d'erreur.
    • résultat = Position_Dernier(LaValeur, LeRange, LeType:="NumLig") :
      • résultat contiendra le numéro de la ligne répondant au critère;
      • sinon : 0 et un message d'erreur.
    • résultat = Position_Dernier(LaValeur, LeRange, LeTest:="<=") :
      • résultat contiendra le numéro de la ligne répondant au critère et au test spécifié;
      • sinon : une chaine vide et un message d'erreur.
    • résultat = Position_Dernier(LaValeur, LeRange, PasdInfo:=vrai) :
      • Se comportera comme prévu en fonction des autres paramètres fournis;
      • mais ne retournera aucun message d'erreur en cas de recherche infructueuse.
  • 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_Dernier( 1 ; C10:C20 ; ; "<>" ; vrai )
      =Position_Dernier( "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 derniè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)

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