Il y a quelques mois, la fonction SUPPR.PLAGE est apparue. On peut utiliser l'équivalent avec .:. (oui, oui, point, deux points, point).
Je ne pense pas beaucoup utiliser cette fonction, car je construis mes fichiers pratiquement uniquement avec des tableaux structurés (Accueil, Mettre sous forme de tableau), mais si vous n'aimez pas cette option, alors cette approche peut être très utile !
Voici un fichier avec quelques exemples.
Cette fonction va donc supprimer les zones complètement vides autour d'une plage.
Donc, si on sélectionne toute la feuille, ca va renvoyer l'équivalent de la plage utilisée. Il faut faire appel à cette fonction à partir d'une autre feuille pour éviter de gérer une référence circulaire.
Soit la feuille 1 :

Sur une deuxième feuille, voici donc le résultat de l'utilisation de .:. et de SUPPR.PLAGE, qui renvoie donc la plage utilisée dans la feuil1.

On peut ensuite utiliser plusieurs fonctions pour retourner la plage sous forme de texte.
=ADRESSE( MIN(LIGNE(Feuil1!1.:.1048576)); MIN(COLONNE(Feuil1!1.:.1048576))) &":"& ADRESSE(MAX(LIGNE(Feuil1!1.:.1048576)); MAX(COLONNE(Feuil1!1.:.1048576)))
ou plus "simplement" en Lambda
=LAMBDA(_a;ADRESSE(MIN(LIGNE(_a));MIN(COLONNE(_a)))&":"&ADRESSE(MAX(LIGNE(_a));MAX(COLONNE(_a))))(Feuil1!1.:.1048576)
D'où une nouvelle fonction sans VBA pour retourner l'adresse de la plage utilisée dans un fichier
A quoi ça peut servir?
Jusqu'à présent, je n'en ai jamais eu besoin, mais je peux envisager quelques exemples :
- Partout où la fonction VBA usedrange est utilisée, on peut la remplacer par .:.. Cela pourrait permettre d'éviter de devoir utiliser du VBA.
- Tester si des plages ont besoin d'être supprimées. Par exemple, on peut tester si la dernière ligne d'une feuille a été remplie, ce qui en général peut indiquer une erreur.
- Tester si des données ont été saisies en dessous ou à droite d'un tableau structuré. En général, ca n'est pas un gros problème, mais si vous n'utilisez pas des formules structurées, un somme(A:A) peut générer une erreur.
On peut aussi ajouter le nom de la feuille:
="'"&TEXTE.APRES(CELLULE("nomfichier";'Feuil 1'!A1);"]") & "'!" & LAMBDA(_a;ADRESSE(MIN(LIGNE(_a));MIN(COLONNE(_a)))&":"&ADRESSE(MAX(LIGNE(_a));MAX(COLONNE(_a))))('Feuil 1'!1.:.1048576)
On notera l'utilisation du ' en première position et devant le ! pour gérer le cas de la présence d'espaces dans le nom de la feuille.
Finalement, on peut vérifier que tout fonctionne bien avec la fonction INDIRECT.
Et vous, avez-vous des idées sur comment utiliser cette nouvelle fonction?
