UDF - restituer firstrow, lastrow, firstcol, lastcol sur un RANGE seléctionné

  • Initiateur de la discussion Initiateur de la discussion zebanx
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zebanx

XLDnaute Accro
Bonjour à tous,

Pour l'utilisation d'un code, j'aurais besoin d'utiliser le numéro de première ligne et de dernière ligne d'un range sélectionné (pour une boucle for... next).

Un site m'a permis d'extraire ces informations par formule et de les renseigner sur la feuille.

Mais je souhaiterais SVP utiliser un UDF qui me permette directement d'avoir ces informations restituées dans le code sans les afficher dans le fichier.

En gros, on sélectionne le range dans une fonction et celle-ci restitue le numéro correspondant (i e: UDF firstrow correspondant à la formule MIN(ligne(range))

Or benoitement, l'utilisation de la formule m'envoie systématiquement un message d'erreur (avec ou sans evaluate...).

Je vous remercie par avance pour votre aide.

Bonne journée
zebanx
 

Pièces jointes

Bonsoir zebanx, pierrejean

J'arrive un peu tard (mais comme j'ai pondu, je livre) 😉
VB:
Private Sub TestPlage(Rng As Range)
With Rng
  t = Array(.Cells(1).Address(0, 0), .Cells(.Rows.Count, .Columns.Count).Address(0, 0))
  tt = Array(.Cells(1).Row, .Cells(.Rows.Count, .Columns.Count).Row)
End With
MsgBox Join(t, Chr(10))
MsgBox Join(tt, Chr(10))
End Sub
Sub test()
TestPlage Range("A3:C8")
End Sub
 
Bonjour Staple1600

Merci pour ton code et t'être intéressé au sujet.

L'utilisation d'une adresse est une bonne idée. Concomitamment à la (super) réponse de Pierre-Jean sur 4 fonctions simples et très pratiques à utiliser, je continuais à chercher sur cette piste mais sans penser du tout au "JOIN" donc merci de cette trouvaille !.

Et il semble, pour revenir à l'utilisation d'un UDF directement (mon besoin), qu'avec une ligne du type x = Split(plage.Address, "$")(4) et suivant les différents besoins on arrive à obtenir le même type de résultats.

Très content pour vos propositions, merci pour vous y être intéressé.

bonne journée.
zebanx
 
Bonsoir le fil, zebanx, pierrejean

zebanx
Un truc du genre 😉
(mais ça marche pas à tout les coups tel quel 😉)
VB:
Function InfoRange(rng As Range, refs As XlReferenceStyle) As String
Zz = Split(rng.Address(4, 4, refs), ":")
t = "Première cellule: " & Chr(13) & Replace(Replace(Zz(0), "R", "Ligne: "), "C", ", Colonne: ")
tt = "Dernière cellule: " & Chr(13) & Replace(Replace(Zz(1), "R", "Ligne: "), "C", ", Colonne: ")
ttt = "Nombre de zone(s): " & rng.Areas.Count
tttt = "Nombre de cellules: " & rng.Count
InfoRange = t & Chr(13) & tt & Chr(13) & ttt & Chr(13) & tttt
End Function
Sub test()
MsgBox InfoRange(Range("F3:H5"), xlR1C1), vbInformation, "Infos Plage: " & Range("F3:H5").Address(0, 0)
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

D
Réponses
1
Affichages
778
D
Retour