Utilisation de la fonction End(xlup) avec un "tableau Excel 2010)

  • Initiateur de la discussion Initiateur de la discussion Cekankonvaou
  • 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 !

C

Cekankonvaou

Guest
Bonjour à tous,

J'ai un petit souci d'utilisation de la fonction End(xlup) que j'utilise pour trouver la dernière ligne utilisée.

Elle ne m'a jamais posé de souci d'utilisation jusqu'à ce que je veuille l'utiliser sur un tableau et dans ce cas, elle me renvoie non pas la dernière ligne avec du contenu mais la dernière ligne du tableau.

1-Y a t'il un moyen d'utiliser cette fonction avec un tableau et qu'elle me renvoie la dernière ligne avec du contenu?

2-sinon, que me conseillez vous d'utiliser?


Merci d'éclairer mon chemin de tout petit codeur 🙂

Bertrand
 

Pièces jointes

Re : Utilisation de la fonction End(xlup) avec un "tableau Excel 2010)

bonjour,

fintabA = Range("A" & Rows.Count).End(xlUp).Row
If Range("A" & fintabA) = 0 Then fintabA = Range("A" & fintabA).End(xlUp).Row

edit : Salut Pierrot
 
Re : Utilisation de la fonction End(xlup) avec un "tableau Excel 2010)

Bonjour Cekankonvaou, Pierrot, mutzik,

En effet (je découvre) donc ne pas utiliser End(xlUp).

S'agissant de nombres :

Code:
Sub test_end()

fintabA = Application.Match(9 ^ 9, [A:A])
fintabB = Application.Match(9 ^ 9, [B:B])
fintabC = Application.Match(9 ^ 9, [C:C])

MsgBox fintabA & " " & fintabB & " " & fintabC

End Sub
Si c'étaient des textes :

Code:
Sub test_end()

fintabA = Application.Match("zzz", [A:A])
fintabB = Application.Match("zzz", [B:B])
fintabC = Application.Match("zzz", [C:C])

MsgBox fintabA & " " & fintabB & " " & fintabC

End Sub
A+
 
Re : Utilisation de la fonction End(xlup) avec un "tableau Excel 2010)

A peine le temps de tourner le dos que les solutions tombent les unes après les autres!!

Mille mercis à vous 3, vos solutions vont me permettre d'avancer.

Par contre, histoire que je me couche un peu mpoins bète ce soir :

Code:
fintabC = Application.Match("zzz", [C:C])

"zzz"=>ça renvoie vers quoi??? tout texte???

Bertrand
 
Re : Utilisation de la fonction End(xlup) avec un "tableau Excel 2010)

Re,

Un peu pour le fun, une solution s'il s'agit de constantes :

Code:
Sub test_end()
Dim col As Range, a As Range, mes As String
On Error Resume Next 'si une colonne ne contient pas de constantes
For Each col In ActiveSheet.UsedRange.Columns
  Set a = col.SpecialCells(xlCellTypeConstants)
  Set a = a.Areas(a.Areas.Count)
  mes = mes & " " & a.Row + a.Rows.Count - 1
  Set a = Nothing
Next
MsgBox Mid(mes, 2)
End Sub
A+
 
Re : Utilisation de la fonction End(xlup) avec un "tableau Excel 2010)

Re,

Un peu pour le fun, une solution s'il s'agit de constantes :

Code:
Sub test_end()
Dim col As Range, a As Range, mes As String
On Error Resume Next 'si une colonne ne contient pas de constantes
For Each col In ActiveSheet.UsedRange.Columns
  Set a = col.SpecialCells(xlCellTypeConstants)
  Set a = a.Areas(a.Areas.Count)
  mes = mes & " " & a.Row + a.Rows.Count - 1
  Set a = Nothing
Next
MsgBox Mid(mes, 2)
End Sub
Edit : pour répondre au post #6, avec Application.Match (c'est la fonction EQUIV) :

- 9 ^ 9 est sensé être supérieur à tout nombre du tableau

- "zzz" est supérieur à tout texte.

A+
 
Re : Utilisation de la fonction End(xlup) avec un "tableau Excel 2010)

Re,

on peut peut être également regrouper les 2
Code:
Dim p As Range
Set p = [A:A]
With Application
    MsgBox .Max(IIf(IsError(.Match(9 ^ 9, p)), 0, .Match(9 ^ 9, p)), _
        IIf(IsError(.Match("zzz", p)), 0, .Match("zzz", p)))
End With

bon après midi
@+
 
Re : Utilisation de la fonction End(xlup) avec un "tableau Excel 2010)

Bonjour le fil, le forum,

Il faut quand même persévérer avec End(xlUp), il est si utile :

Code:
Sub test_end()
Dim col As Range, dercel As Range, mes As String
For Each col In ActiveSheet.UsedRange.Columns
  Set dercel = Cells(Rows.Count, col.Column).End(xlUp)
  If IsEmpty(dercel) Then Set dercel = dercel.End(xlUp) 'on insiste...
  mes = mes & " " & dercel.Row
Next
MsgBox Mid(mes, 2)
End Sub
A+
 
Re : Utilisation de la fonction End(xlup) avec un "tableau Excel 2010)

Bonjour à tous,
Salut Job🙂,

Il faut quand même persévérer avec End(xlUp), il est si utile :

oui, mais là en l'état tu ne cibles pas le tableau excel (ListObjects)... et si sous celui-ci il y a des données, se seront elles qui seront prises en compte.... enfin c'est ma compréhension du problème... peut être pas la bonne...

bonne journée
@+
)
 
Re : Utilisation de la fonction End(xlup) avec un "tableau Excel 2010)

Re,

D'accord mais la macro du post #1 suppose bien qu'il n'y a rien sous le tableau :

oui et dans l'exemple joint aussi d'ailleurs... mais perso, me suis plus focalisé sur le tableau, me disans que si il y a vait quelque chose derrière comment obtenir la dernière ligne de celui-ci... attendons de voir comment notre ami Cekankonvaou voit les choses...
 
Re : Utilisation de la fonction End(xlup) avec un "tableau Excel 2010)

Re,

Bon allez, pour utiliser ton ListObjects Pierrot :

Code:
Sub test_end()
Dim col As Range, dercel As Range, mes As String
For Each col In ActiveSheet.ListObjects(1).Range.Columns
  Set dercel = col.Cells(col.Cells.Count)
  If IsEmpty(dercel) Then Set dercel = dercel.End(xlUp) 'on insiste...
  mes = mes & " " & dercel.Row
Next
MsgBox Mid(mes, 2)
End Sub
Noter qu'on n'utilise pas End(xlUp) pour le 1er calcul de dercel, c'est donc mieux 🙂

A+
 
Re : Utilisation de la fonction End(xlup) avec un "tableau Excel 2010)

Bonjour à tous,

Pour préciser un peu les choses :
dans un premier temps, j'ai une macro qui importe un eliste d'éléments, les mets en forme (suppression de certaines colonnes, de certaines lignes) et au final met le tout sous forme de tableau (pour l'aspect visuel et pour les outils de tri en 1ère colonne).

Dans un deuxième temps, je peux avoir deux macros : une de suppression de ligne et une d'ajout de ligne.
Si je ne fais qu'ajouter (c'est la que j'ai besoin de la dernière ligne utilisée), pas de soucis, les nouvelles données agrandissent mon tableau et s'y intègrent.
Mais, si je supprime une ligne, mon tableau compte alors une ligne non occupée. Lorsque je rajoute une ligne, je me retrouve avec une ligne vide....

Pour répondre à la question de Pierrot : pas d'élément sous mon tableau et pas besoin (pour l'instant) de tester toutes les colonnes de mon tableau (j'en ai une qui sera forcément remplie, pas forcément sur les autres).

En tous cas, mille merci pour toutes vos réponses!!!

Bertrand
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour