Adresse de la dernière cellule d'un tableau

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J'ai un tableau avec x colonnes et y lignes. Toutes les cellules du tableau sont évidemment encadrées.
Je connais l'adresse de la 1ère cellule du tableau.
Je voudrais connaître l'adresse de la dernière cellule du tableau, que celle-ci soit vide ou pas.

Merci pour tout conseil.
 

Magic_Doctor

XLDnaute Barbatruc
Re : Adresse de la dernière cellule d'un tableau

Bonsoir vgendron,

Bien sûr nous parlons de VBA.
En fait le problème, tout bête, est nettement plus compliqué.
J'ai au départ un tableau que je nomme "Zaza". Connaître ses coordonnées n'est pas bien compliqué avec les formules que tu m'as envoyées.
Seulement, voilà, je veux modifier les dimensions de mon tableau, en l'occurrence rajouter des lignes. Toutes les nouvelles cellules étant évidemment encadrées.
La 1ère cellule du tableau est toujours la même, son adresse étant : [Zaza].Cells(1).Address
Comment connaître automatiquement l'adresse de la dernière cellule (en bas à droite) du tableau ?
 

Magic_Doctor

XLDnaute Barbatruc
Re : Adresse de la dernière cellule d'un tableau

Merci pour ta réponse,

Je vais étudier ce que me donne le lien que tu as posté.
Mais mon problème en fait est très simple, même si le résoudre est plus compliqué. Il tient en une seule phrase : connaissant l'adresse de la 1ère cellule d'un tableau, comment peut-on connaître l'adresse de sa dernière cellule, que celle-ci soit vide ou pas ?
 

Magic_Doctor

XLDnaute Barbatruc
Re : Adresse de la dernière cellule d'un tableau

Bonsoir david,

J'ai essayé et... ça ne marche pas très fort.
Par exemple si j'écris, après avoir modifié la taille du tableau "Zaza" : [Zaza].CurrentRegion.Select
seule la 1ère cellule de "Zaza" est sélectionnée.
Je pense qu'il faut passer en revue (au moyen d'une boucle) toutes les cellules du tableau en tenant compte du fait qu'elles doivent être encadrées, et non pas si elles contiennent quelque chose, puisqu'elles peuvent être vides.
 

Magic_Doctor

XLDnaute Barbatruc
Re : Adresse de la dernière cellule d'un tableau

Bonjour Pierrot,

Avec ta solution je retrouve, d'une autre manière, l'adresse de la dernière cellule du tableau nommé "Zaza".
Mais apparemment personne ne comprend exactement ce que je veux. C'est pourtant simple.
Oublions définitivement que le tableau soit nommé.
Reprenons le problème.
En, supposons, A356 nous avons la 1ère cellule du tableau.
On dresse le tableau comme tout tableau, c'est-à-dire en encadrant des cellules.
Pour simplifier, disons que toutes les cellules sont vides ; autrement dit le tableau est vierge.
Bon, jusque là aucune question particulière à se poser.
Je rappelle que nous ne connaissons au départ avec certitude que l'adresse de la 1ère cellule.
Il y aurait-il un moyen de connaître l'adresse de la dernière cellule du tableau ?
En d'autres termes, je reprends la phrase d'un post précédent : connaissant l'adresse de la 1ère cellule d'un tableau, comment peut-on connaître l'adresse de sa dernière cellule, que celle-ci soit vide ou pas ?
 

job75

XLDnaute Barbatruc
Re : Adresse de la dernière cellule d'un tableau

Bonjour Magic_Doctor, le fil, le forum,

On dresse le tableau comme tout tableau, c'est-à-dire en encadrant des cellules.

Pourquoi pas, bien que ce ne soit pas toujours ainsi qu'on dresse un tableau.

Mais si c'est bien le cas alors utiliser cette fonction DERCEL :

Code:
Function DERCEL(premcel As Range, Optional r As Boolean)
'si le 2ème argument est VRAI, le Range est renvoyé
Application Volatile
Set DERCEL = DER(DER(premcel, True), False)
If Not r Then DERCEL = DERCEL.Address(0, 0)
End Function

Function DER(c As Range, lig As Boolean) As Range
Dim test As Boolean, i As Byte
test = True
While test
  Set c = IIf(lig, c(2, 1), c(1, 2))
  For i = 7 To 10
    If c.Borders(i).LineStyle = xlNone Then _
      test = False: Exit For
  Next
Wend
Set DER = IIf(lig, c(0, 1), c(1, 0))
End Function
Si le 2ème argument (facultatif) est VRAI, la fonction renvoie le Range de la cellule.

Sinon c'est l'adresse qui est renvoyée.

Fichier joint.

Edit : bonjour DoubleZero :) pas rafraîchi, bonjour Michel :)

A+
 

Pièces jointes

  • DERCEL(1).xls
    37 KB · Affichages: 44
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Adresse de la dernière cellule d'un tableau

Bonjour à tous

Mais apparemment personne ne comprend exactement ce que je veux. C'est pourtant simple.

Sans fichier, on pourra toujours chercher longtemps ;).

Excel est un tableur. Mais en fonction de ce qu'il contient, cela peut entraîner différentes approches.

Sinon, j'aime bien vos différentes solutions :).
 

job75

XLDnaute Barbatruc
Re : Adresse de la dernière cellule d'un tableau

Re DoubleZero :)

Si le tableau a un contour différent des bordures intérieures ta solution ne va pas.

En effet sur le contour c.Borders.Value renvoie Null, tu peux tester avec :

Code:
MsgBox IsNull(ActiveCell.Borders.Value)
C'est pourquoi ma fonction passe en revue les 4 bordures (7 à 10) des cellules.

Fichier (2).

A+
 

Pièces jointes

  • DERCEL(2).xls
    37.5 KB · Affichages: 41

job75

XLDnaute Barbatruc
Re : Adresse de la dernière cellule d'un tableau

Re,

Ma solution ne fonctionnait pas si la 1ère cellule était par exemple A1.

Dans la fonction DER il ne faut pas utiliser IIf mais If...Then...Else :

Code:
If lig Then Set DER = c(0, 1) Else Set DER = c(1, 0)
Code:
Function DERCEL(premcel As Range, Optional r As Boolean)
'si le 2ème argument est VRAI, le Range est renvoyé
Application.Volatile
Set DERCEL = DER(DER(premcel, True), False)
If Not r Then DERCEL = DERCEL.Address(0, 0)
End Function

Function DER(c As Range, lig As Boolean) As Range
Dim test As Boolean, i As Byte
test = True
While test
  Set c = IIf(lig, c(2, 1), c(1, 2))
  For i = 7 To 10
    If c.Borders(i).LineStyle = xlNone Then _
      test = False: Exit For
  Next
Wend
If lig Then Set DER = c(0, 1) Else Set DER = c(1, 0)
End Function
Fichier (3).

A+
 

Pièces jointes

  • DERCEL(3).xls
    37.5 KB · Affichages: 45

Discussions similaires

Statistiques des forums

Discussions
312 216
Messages
2 086 350
Membres
103 194
dernier inscrit
rtison