OVH Cloud OVH Cloud

Recherche dans la dernière colonne non vide d'un tableau (Excel 2003)

33 réponses
Avatar
thomas
Bonjour,

Comment faire une recherche dans la dernière colonne non vide d'un tableau?

Cette dernière colonne n'est pas toujours la même

Merci

10 réponses

1 2 3 4
Avatar
thomas
Dans formule =MAX(SI(tablo<>"";COLONNE(tablo))) en matriciel, par exemple
(Eval3_2) , Colonne(tablo) ramène toutes les colonnes de la zone en
principe, non? qu'est-ce qui fait que Max ne retient que la dernière ayant
des valeurs ? je ne comprends pas trop la formule conditionnelle

merci


"Misange" a écrit dans le message de groupe de
discussion : OUe#5su$
oui moi aussi mais il y a des formulistes qui sont de vrais dieux
d'excel et ça vaut vraiment la peine de faire un petit effort pour
comprendre...
Sur le sujet, on peut difficilement faire plus complet

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

thomas a écrit :
je suis athée

"Jacky" a écrit dans le message de groupe de discussion
:
u0Wj7nt$
Pourtant......Saint Thomas.....
;o)))



Avatar
LSteph
à entrer en matricielle!!


thomas a écrit :
ca donne #VALEUR


"LSteph" a écrit dans le message de groupe de
discussion : uXKxwKs$
=(MAX(SI(NBCAR(3:3)>0;COLONNE(3:3);"")))
à rentrer en matricielle
ctrl+maj+entrée

renvoie le numéro de colonne la dernière cellule remplie de la ligne 3

'lSteph


thomas a écrit :
ben une formule qui permette de faire la recherche directement dans la
feuille. toutes les colonnes contiennent des formules (liens vers
d'autres
feuilles) - je voudrais récupérer le numéro de colonne de la dernière
colonne qui ne contient aucune valeur

"LSteph" a écrit dans le message de groupe de
discussion : uc8CL7r$
...?
tu veux lancer une recherche (ce sera forcément vba)
ou
tu voudrais une formule



thomas a écrit :
Merci

c'est directement dans la feuille de calcul que je veux connaître la
recherche, pas en VBA. je mets ce code dans une fonction alors? et plutôt
que UsedRange je passe le nom de la zone en paramètre?


"Daniel.C" a écrit dans le message de groupe de
discussion : Ob2t#tr$
Bonjour.
With ActiveSheet.UsedRange
Colonne = .Column + .Columns.Count - 1
End With
Cordialement.
Daniel
"thomas" <nomail> a écrit dans le message de news:
er5Tifr$
Bonjour,

Comment faire une recherche dans la dernière colonne non vide d'un
tableau?

Cette dernière colonne n'est pas toujours la même

Merci









Avatar
Frédéric Sigonneau
> Ca marche !



Non, puisque le résultat n'est pas ce que tu attends !

> dans toutes les colonnes il y a des formules.. donc non vides et c'est la
> dernière colonne sans valeur que je voudrais (les valeurs sont toujours
> numériques)

Désolé. AMA, on sort de ce qu'il est possible de faire avec une fonction. En
tout cas, en ce qui me concerne, je ne vois pas de solution.

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

thomas a écrit :
Ca marche !

merci

mais en fait ca me donne la dernière colonne du tableau et non la dernière
colonne sans valeurs
dans toutes les colonnes il y a des formules.. donc non vides et c'est la
dernière colonne sans valeur que je voudrais (les valeurs sont toujours
numériques)



"Frédéric Sigonneau" a écrit dans le message de groupe de
discussion : e7IJY#s$
Essaye plutôt comme ça :

'=============== > Function Derniere_Colonne(Zone)
With ActiveSheet.Range(Zone.Address)
Derniere_Colonne = .Column + .Columns.Count - 1
End With
End Function
'=============== >
ou, si tu veux récupérer la lettre de la colonne au lieu de son numéro :

'=============== > Function Derniere_Colonne(Zone)
Dim X
With ActiveSheet.Range(Zone.Address)
X = .Column + .Columns.Count - 1
End With
Derniere_Colonne = Split(Cells(1, X).Address, "$")(1)
End Function
'=============== >
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

thomas a écrit :
J'ai essayé cela :

Function Derniere_Colonne(Zone As Range)

With ActiveSheet.Range(Zone)
Derniere_Colonne = .Column + .Columns.Count - 1
End With

End Function

mais cela retourne #VALEUR

merci


"thomas" <nomail> a écrit dans le message de groupe de discussion :
e2XY6yr$
Merci

c'est directement dans la feuille de calcul que je veux connaître la
recherche, pas en VBA. je mets ce code dans une fonction alors? et plutôt
que UsedRange je passe le nom de la zone en paramètre?


"Daniel.C" a écrit dans le message de groupe de
discussion : Ob2t#tr$
Bonjour.
With ActiveSheet.UsedRange
Colonne = .Column + .Columns.Count - 1
End With
Cordialement.
Daniel
"thomas" <nomail> a écrit dans le message de news:
er5Tifr$
Bonjour,

Comment faire une recherche dans la dernière colonne non vide d'un
tableau?

Cette dernière colonne n'est pas toujours la même

Merci







Avatar
thomas
Merci à tous

J'obtiens ce que je veux, même si je ne comprends pas la formule utilisée,
ce qui reste un peu frustrant

"thomas" <nomail> a écrit dans le message de groupe de discussion :
uKlmBRv$
Dans formule =MAX(SI(tablo<>"";COLONNE(tablo))) en matriciel, par exemple
(Eval3_2) , Colonne(tablo) ramène toutes les colonnes de la zone en
principe, non? qu'est-ce qui fait que Max ne retient que la dernière ayant
des valeurs ? je ne comprends pas trop la formule conditionnelle

merci


"Misange" a écrit dans le message de groupe de
discussion : OUe#5su$
oui moi aussi mais il y a des formulistes qui sont de vrais dieux
d'excel et ça vaut vraiment la peine de faire un petit effort pour
comprendre...
Sur le sujet, on peut difficilement faire plus complet

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

thomas a écrit :
je suis athée

"Jacky" a écrit dans le message de groupe de discussion
:
u0Wj7nt$
Pourtant......Saint Thomas.....
;o)))



Avatar
LSteph
> J'obtiens ce que je veux, même si je ne comprends pas la formule


utilisée,

J'ai donc conclu que je n'avais pas besoin d'ajouter ce post

> ce qui reste un peu frustrant

alors je donne qd même explication


> ..qu'est-ce qui fait que Max ne retient que la dernière ayant
> des valeurs ? je ne comprends pas trop la formule conditionnelle

Max prend le numéro maximal de colonne renvoyé par la matrice
qui tient comte uniquement des valeurs <>""



Cela revient pratiquement au même que ce que je t'ai proposé,
qui ciblait les longueurs de chaines >0
sauf que
et c'est sans doute pourquoi tu obtiens #valeur
tu n'avais pas suivi l'indication que j'avais pourtant bien précisée de
prendre en ref la ligne de titre,
il est clair que si tu as affaire à une ligne de valeurs ou de formule
on ne peut y mesurer la longueur de chaine d'un titre.
Mais rien empêche de rester sur la ligne de titre pour cibler num de
colonne et ensuite faire la recherche.
L'avantage des titres était que cela délimite le tableau indépendamment
du fait que ta recherche dans la colonne puisse renvoyer une cellule vide.


@+

--
lSteph

thomas a écrit :
Merci à tous

J'obtiens ce que je veux, même si je ne comprends pas la formule utilisée,
ce qui reste un peu frustrant

"thomas" <nomail> a écrit dans le message de groupe de discussion :
uKlmBRv$
Dans formule =MAX(SI(tablo<>"";COLONNE(tablo))) en matriciel, par exemple
(Eval3_2) , Colonne(tablo) ramène toutes les colonnes de la zone en
principe, non? qu'est-ce qui fait que Max ne retient que la dernière ayant
des valeurs ? je ne comprends pas trop la formule conditionnelle

merci


"Misange" a écrit dans le message de groupe de
discussion : OUe#5su$
oui moi aussi mais il y a des formulistes qui sont de vrais dieux
d'excel et ça vaut vraiment la peine de faire un petit effort pour
comprendre...
Sur le sujet, on peut difficilement faire plus complet

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

thomas a écrit :
je suis athée

"Jacky" a écrit dans le message de groupe de discussion
:
u0Wj7nt$
Pourtant......Saint Thomas.....
;o)))





Avatar
thomas
Max reprend le numéro de colonne le plus grand mais pourquoi la matrice
COLONNE(tablo) ne reprend-elle que les colonnes sans valeur? c'est ce que je
ne comprends pas


"LSteph" a écrit dans le message de groupe de
discussion : eYjk1ux$
J'obtiens ce que je veux, même si je ne comprends pas la formule


utilisée,

J'ai donc conclu que je n'avais pas besoin d'ajouter ce post

> ce qui reste un peu frustrant

alors je donne qd même explication


> ..qu'est-ce qui fait que Max ne retient que la dernière ayant
> des valeurs ? je ne comprends pas trop la formule conditionnelle

Max prend le numéro maximal de colonne renvoyé par la matrice
qui tient comte uniquement des valeurs <>""



Cela revient pratiquement au même que ce que je t'ai proposé,
qui ciblait les longueurs de chaines >0
sauf que
et c'est sans doute pourquoi tu obtiens #valeur
tu n'avais pas suivi l'indication que j'avais pourtant bien précisée de
prendre en ref la ligne de titre,
il est clair que si tu as affaire à une ligne de valeurs ou de formule
on ne peut y mesurer la longueur de chaine d'un titre.
Mais rien empêche de rester sur la ligne de titre pour cibler num de
colonne et ensuite faire la recherche.
L'avantage des titres était que cela délimite le tableau indépendamment
du fait que ta recherche dans la colonne puisse renvoyer une cellule vide.


@+

--
lSteph

thomas a écrit :
Merci à tous

J'obtiens ce que je veux, même si je ne comprends pas la formule utilisée,
ce qui reste un peu frustrant

"thomas" <nomail> a écrit dans le message de groupe de discussion :
uKlmBRv$
Dans formule =MAX(SI(tablo<>"";COLONNE(tablo))) en matriciel, par exemple
(Eval3_2) , Colonne(tablo) ramène toutes les colonnes de la zone en
principe, non? qu'est-ce qui fait que Max ne retient que la dernière ayant
des valeurs ? je ne comprends pas trop la formule conditionnelle

merci


"Misange" a écrit dans le message de groupe de
discussion : OUe#5su$
oui moi aussi mais il y a des formulistes qui sont de vrais dieux
d'excel et ça vaut vraiment la peine de faire un petit effort pour
comprendre...
Sur le sujet, on peut difficilement faire plus complet

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

thomas a écrit :
je suis athée

"Jacky" a écrit dans le message de groupe de
discussion
:
u0Wj7nt$
Pourtant......Saint Thomas.....
;o)))





Avatar
michdenis
Tu colles cette fonction personnalisée dans un module Standard
de ton classeur.

Lorsque tu veux l'utiliser dans une cellule, tu écris :
ÞrCol(14)
14 c'est le numéro de la ligne

la fonction te retourne la "Lettre" de la dernière
colonne utilisée sur cette ligne que tu aies une
donnée ou une formule ... même si cette formule
retourne "".

'----------------------------------------
Function DerCol(Ligne As Long)
Dim Adr As String, Rg As Range
Application.Volatile
If Ligne < 1 And Ligne > Cells.Rows.Count Then
MsgBox "Le numéro de la ligne demandée est inexistant"
DerCol = "Inexistant"
Exit Function
End If
Set Rg = Range(Ligne & ":" & Ligne).Find( _
What:="*", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
If Not Rg Is Nothing Then
DerCol = Split(Rg.Address, "$")(1)
Else
DerCol = "A"
End If
End Function
'----------------------------------------




"thomas" <nomail> a écrit dans le message de news:
epjfNFt$
Ca marche !

merci

mais en fait ca me donne la dernière colonne du tableau et non la dernière
colonne sans valeurs
dans toutes les colonnes il y a des formules.. donc non vides et c'est la
dernière colonne sans valeur que je voudrais (les valeurs sont toujours
numériques)



"Frédéric Sigonneau" a écrit dans le message de groupe de
discussion : e7IJY#s$
Essaye plutôt comme ça :

'=============== Function Derniere_Colonne(Zone)
With ActiveSheet.Range(Zone.Address)
Derniere_Colonne = .Column + .Columns.Count - 1
End With
End Function
'===============
ou, si tu veux récupérer la lettre de la colonne au lieu de son numéro :

'=============== Function Derniere_Colonne(Zone)
Dim X
With ActiveSheet.Range(Zone.Address)
X = .Column + .Columns.Count - 1
End With
Derniere_Colonne = Split(Cells(1, X).Address, "$")(1)
End Function
'===============
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

thomas a écrit :
J'ai essayé cela :

Function Derniere_Colonne(Zone As Range)

With ActiveSheet.Range(Zone)
Derniere_Colonne = .Column + .Columns.Count - 1
End With

End Function

mais cela retourne #VALEUR

merci


"thomas" <nomail> a écrit dans le message de groupe de discussion :
e2XY6yr$
Merci

c'est directement dans la feuille de calcul que je veux connaître la
recherche, pas en VBA. je mets ce code dans une fonction alors? et plutôt
que UsedRange je passe le nom de la zone en paramètre?


"Daniel.C" a écrit dans le message de groupe de
discussion : Ob2t#tr$
Bonjour.
With ActiveSheet.UsedRange
Colonne = .Column + .Columns.Count - 1
End With
Cordialement.
Daniel
"thomas" <nomail> a écrit dans le message de news:
er5Tifr$
Bonjour,

Comment faire une recherche dans la dernière colonne non vide d'un
tableau?

Cette dernière colonne n'est pas toujours la même

Merci






Avatar
thomas
Merci mais la solution du classeur de Misange est plus adaptée à ce que je
recherche car c'est le numéro de colonne dont j'aurais plutôt besoin (pas de
la lettre de la colonne) et pour la dernière colonne contenant contenant une
valeur. Toutes mes colonnes contiennent une formule - je veux seulement
prendre en compte la dernière colonne qui retourne des valeurs


"michdenis" a écrit dans le message de groupe de
discussion : uEObGdy$
Tu colles cette fonction personnalisée dans un module Standard
de ton classeur.

Lorsque tu veux l'utiliser dans une cellule, tu écris :
ÞrCol(14)
14 c'est le numéro de la ligne

la fonction te retourne la "Lettre" de la dernière
colonne utilisée sur cette ligne que tu aies une
donnée ou une formule ... même si cette formule
retourne "".

'----------------------------------------
Function DerCol(Ligne As Long)
Dim Adr As String, Rg As Range
Application.Volatile
If Ligne < 1 And Ligne > Cells.Rows.Count Then
MsgBox "Le numéro de la ligne demandée est inexistant"
DerCol = "Inexistant"
Exit Function
End If
Set Rg = Range(Ligne & ":" & Ligne).Find( _
What:="*", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
If Not Rg Is Nothing Then
DerCol = Split(Rg.Address, "$")(1)
Else
DerCol = "A"
End If
End Function
'----------------------------------------




"thomas" <nomail> a écrit dans le message de news:
epjfNFt$
Ca marche !

merci

mais en fait ca me donne la dernière colonne du tableau et non la dernière
colonne sans valeurs
dans toutes les colonnes il y a des formules.. donc non vides et c'est la
dernière colonne sans valeur que je voudrais (les valeurs sont toujours
numériques)



"Frédéric Sigonneau" a écrit dans le message de groupe de
discussion : e7IJY#s$
Essaye plutôt comme ça :

'=============== Function Derniere_Colonne(Zone)
With ActiveSheet.Range(Zone.Address)
Derniere_Colonne = .Column + .Columns.Count - 1
End With
End Function
'===============
ou, si tu veux récupérer la lettre de la colonne au lieu de son numéro :

'=============== Function Derniere_Colonne(Zone)
Dim X
With ActiveSheet.Range(Zone.Address)
X = .Column + .Columns.Count - 1
End With
Derniere_Colonne = Split(Cells(1, X).Address, "$")(1)
End Function
'===============
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

thomas a écrit :
J'ai essayé cela :

Function Derniere_Colonne(Zone As Range)

With ActiveSheet.Range(Zone)
Derniere_Colonne = .Column + .Columns.Count - 1
End With

End Function

mais cela retourne #VALEUR

merci


"thomas" <nomail> a écrit dans le message de groupe de discussion :
e2XY6yr$
Merci

c'est directement dans la feuille de calcul que je veux connaître la
recherche, pas en VBA. je mets ce code dans une fonction alors? et plutôt
que UsedRange je passe le nom de la zone en paramètre?


"Daniel.C" a écrit dans le message de groupe de
discussion : Ob2t#tr$
Bonjour.
With ActiveSheet.UsedRange
Colonne = .Column + .Columns.Count - 1
End With
Cordialement.
Daniel
"thomas" <nomail> a écrit dans le message de news:
er5Tifr$
Bonjour,

Comment faire une recherche dans la dernière colonne non vide d'un
tableau?

Cette dernière colonne n'est pas toujours la même

Merci






Avatar
michdenis
La même fonction qui retourne le numéro de la ligne à la place
de la lettre :

'-------------------------------------
Function DerCol(Ligne As Long)
Dim Adr As String, Rg As Range
Application.Volatile
If Ligne < 1 And Ligne > Cells.Rows.Count Then
MsgBox "Le numéro de la ligne demandée est inexistant"
DerCol = "Inexistant"
Exit Function
End If
Set Rg = Range(Ligne & ":" & Ligne).Find( _
What:="*", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
If Not Rg Is Nothing Then
DerCol = Rg.Column
Else
DerCol = 1
End If
End Function
'-------------------------------------



"thomas" <nomail> a écrit dans le message de news:
%236FOz8y$
Merci mais la solution du classeur de Misange est plus adaptée à ce que je
recherche car c'est le numéro de colonne dont j'aurais plutôt besoin (pas de
la lettre de la colonne) et pour la dernière colonne contenant contenant une
valeur. Toutes mes colonnes contiennent une formule - je veux seulement
prendre en compte la dernière colonne qui retourne des valeurs


"michdenis" a écrit dans le message de groupe de
discussion : uEObGdy$
Tu colles cette fonction personnalisée dans un module Standard
de ton classeur.

Lorsque tu veux l'utiliser dans une cellule, tu écris :
ÞrCol(14)
14 c'est le numéro de la ligne

la fonction te retourne la "Lettre" de la dernière
colonne utilisée sur cette ligne que tu aies une
donnée ou une formule ... même si cette formule
retourne "".

'----------------------------------------
Function DerCol(Ligne As Long)
Dim Adr As String, Rg As Range
Application.Volatile
If Ligne < 1 And Ligne > Cells.Rows.Count Then
MsgBox "Le numéro de la ligne demandée est inexistant"
DerCol = "Inexistant"
Exit Function
End If
Set Rg = Range(Ligne & ":" & Ligne).Find( _
What:="*", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
If Not Rg Is Nothing Then
DerCol = Split(Rg.Address, "$")(1)
Else
DerCol = "A"
End If
End Function
'----------------------------------------




"thomas" <nomail> a écrit dans le message de news:
epjfNFt$
Ca marche !

merci

mais en fait ca me donne la dernière colonne du tableau et non la dernière
colonne sans valeurs
dans toutes les colonnes il y a des formules.. donc non vides et c'est la
dernière colonne sans valeur que je voudrais (les valeurs sont toujours
numériques)



"Frédéric Sigonneau" a écrit dans le message de groupe de
discussion : e7IJY#s$
Essaye plutôt comme ça :

'=============== Function Derniere_Colonne(Zone)
With ActiveSheet.Range(Zone.Address)
Derniere_Colonne = .Column + .Columns.Count - 1
End With
End Function
'===============
ou, si tu veux récupérer la lettre de la colonne au lieu de son numéro :

'=============== Function Derniere_Colonne(Zone)
Dim X
With ActiveSheet.Range(Zone.Address)
X = .Column + .Columns.Count - 1
End With
Derniere_Colonne = Split(Cells(1, X).Address, "$")(1)
End Function
'===============
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

thomas a écrit :
J'ai essayé cela :

Function Derniere_Colonne(Zone As Range)

With ActiveSheet.Range(Zone)
Derniere_Colonne = .Column + .Columns.Count - 1
End With

End Function

mais cela retourne #VALEUR

merci


"thomas" <nomail> a écrit dans le message de groupe de discussion :
e2XY6yr$
Merci

c'est directement dans la feuille de calcul que je veux connaître la
recherche, pas en VBA. je mets ce code dans une fonction alors? et plutôt
que UsedRange je passe le nom de la zone en paramètre?


"Daniel.C" a écrit dans le message de groupe de
discussion : Ob2t#tr$
Bonjour.
With ActiveSheet.UsedRange
Colonne = .Column + .Columns.Count - 1
End With
Cordialement.
Daniel
"thomas" <nomail> a écrit dans le message de news:
er5Tifr$
Bonjour,

Comment faire une recherche dans la dernière colonne non vide d'un
tableau?

Cette dernière colonne n'est pas toujours la même

Merci






Avatar
thomas
merci mais comme précédemment ca me donne la dernière colonne non vide de
formule alors que c'est non vide de valeur qu'il me faudrait et en ait c'est
plutôt un tableau que j'analyse qu'une ligne, donc dernière colonne de ce
tableau avec des valeurs

"michdenis" a écrit dans le message de groupe de
discussion : eF6FBk1$
La même fonction qui retourne le numéro de la ligne à la place
de la lettre :

'-------------------------------------
Function DerCol(Ligne As Long)
Dim Adr As String, Rg As Range
Application.Volatile
If Ligne < 1 And Ligne > Cells.Rows.Count Then
MsgBox "Le numéro de la ligne demandée est inexistant"
DerCol = "Inexistant"
Exit Function
End If
Set Rg = Range(Ligne & ":" & Ligne).Find( _
What:="*", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
If Not Rg Is Nothing Then
DerCol = Rg.Column
Else
DerCol = 1
End If
End Function
'-------------------------------------



"thomas" <nomail> a écrit dans le message de news:
%236FOz8y$
Merci mais la solution du classeur de Misange est plus adaptée à ce que je
recherche car c'est le numéro de colonne dont j'aurais plutôt besoin (pas de
la lettre de la colonne) et pour la dernière colonne contenant contenant une
valeur. Toutes mes colonnes contiennent une formule - je veux seulement
prendre en compte la dernière colonne qui retourne des valeurs


"michdenis" a écrit dans le message de groupe de
discussion : uEObGdy$
Tu colles cette fonction personnalisée dans un module Standard
de ton classeur.

Lorsque tu veux l'utiliser dans une cellule, tu écris :
ÞrCol(14)
14 c'est le numéro de la ligne

la fonction te retourne la "Lettre" de la dernière
colonne utilisée sur cette ligne que tu aies une
donnée ou une formule ... même si cette formule
retourne "".

'----------------------------------------
Function DerCol(Ligne As Long)
Dim Adr As String, Rg As Range
Application.Volatile
If Ligne < 1 And Ligne > Cells.Rows.Count Then
MsgBox "Le numéro de la ligne demandée est inexistant"
DerCol = "Inexistant"
Exit Function
End If
Set Rg = Range(Ligne & ":" & Ligne).Find( _
What:="*", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
If Not Rg Is Nothing Then
DerCol = Split(Rg.Address, "$")(1)
Else
DerCol = "A"
End If
End Function
'----------------------------------------




"thomas" <nomail> a écrit dans le message de news:
epjfNFt$
Ca marche !

merci

mais en fait ca me donne la dernière colonne du tableau et non la dernière
colonne sans valeurs
dans toutes les colonnes il y a des formules.. donc non vides et c'est la
dernière colonne sans valeur que je voudrais (les valeurs sont toujours
numériques)



"Frédéric Sigonneau" a écrit dans le message de groupe de
discussion : e7IJY#s$
Essaye plutôt comme ça :

'=============== Function Derniere_Colonne(Zone)
With ActiveSheet.Range(Zone.Address)
Derniere_Colonne = .Column + .Columns.Count - 1
End With
End Function
'===============
ou, si tu veux récupérer la lettre de la colonne au lieu de son numéro :

'=============== Function Derniere_Colonne(Zone)
Dim X
With ActiveSheet.Range(Zone.Address)
X = .Column + .Columns.Count - 1
End With
Derniere_Colonne = Split(Cells(1, X).Address, "$")(1)
End Function
'===============
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

thomas a écrit :
J'ai essayé cela :

Function Derniere_Colonne(Zone As Range)

With ActiveSheet.Range(Zone)
Derniere_Colonne = .Column + .Columns.Count - 1
End With

End Function

mais cela retourne #VALEUR

merci


"thomas" <nomail> a écrit dans le message de groupe de discussion :
e2XY6yr$
Merci

c'est directement dans la feuille de calcul que je veux connaître la
recherche, pas en VBA. je mets ce code dans une fonction alors? et plutôt
que UsedRange je passe le nom de la zone en paramètre?


"Daniel.C" a écrit dans le message de groupe de
discussion : Ob2t#tr$
Bonjour.
With ActiveSheet.UsedRange
Colonne = .Column + .Columns.Count - 1
End With
Cordialement.
Daniel
"thomas" <nomail> a écrit dans le message de news:
er5Tifr$
Bonjour,

Comment faire une recherche dans la dernière colonne non vide d'un
tableau?

Cette dernière colonne n'est pas toujours la même

Merci






1 2 3 4