merci mais comme précédemment ca me donne la dernière colonne non v ide 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 d e ce
tableau avec des valeurs
"michdenis" a écrit dans le message de groupe d e
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 q ue 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 contenan t 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 d e
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 gro upe 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 Sigonneauhttp://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
merci mais comme précédemment ca me donne la dernière colonne non v ide 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 d e ce
tableau avec des valeurs
"michdenis" <michde...@hotmail.com> a écrit dans le message de groupe d e
discussion : eF6FBk1$IHA.2...@TK2MSFTNGP05.phx.gbl...
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$IHA.1...@TK2MSFTNGP03.phx.gbl...
Merci mais la solution du classeur de Misange est plus adaptée à ce q ue 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 contenan t une
valeur. Toutes mes colonnes contiennent une formule - je veux seulement
prendre en compte la dernière colonne qui retourne des valeurs
"michdenis" <michde...@hotmail.com> a écrit dans le message de groupe d e
discussion : uEObGdy$IHA.1...@TK2MSFTNGP02.phx.gbl...
Tu colles cette fonction personnalisée dans un module Standard
de ton classeur.
Lorsque tu veux l'utiliser dans une cellule, tu écris :
=DerCol(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$IHA.1...@TK2MSFTNGP03.phx.gbl...
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" <nospam@nospam> a écrit dans le message de gro upe de
discussion : e7IJY#s$IHA.1...@TK2MSFTNGP02.phx.gbl...
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 Sigonneauhttp://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$IHA.2...@TK2MSFTNGP02.phx.gbl...
> 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" <dZZZcolarde...@free.fr> a écrit dans le message de groupe de
> discussion : Ob2t#tr$IHA.4...@TK2MSFTNGP04.phx.gbl...
> Bonjour.
> With ActiveSheet.UsedRange
> Colonne = .Column + .Columns.Count - 1
> End With
> Cordialement.
> Daniel
> "thomas" <nomail> a écrit dans le message de news:
> er5Tifr$IHA.3...@TK2MSFTNGP04.phx.gbl...
>> 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
merci mais comme précédemment ca me donne la dernière colonne non v ide 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 d e ce
tableau avec des valeurs
"michdenis" a écrit dans le message de groupe d e
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 q ue 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 contenan t 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 d e
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 gro upe 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 Sigonneauhttp://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
Bonjour,
Tu devrais mettre un exemple sur cjoint
dans lequel
outre voir la g..de ton tableau
on puisse comprendre
la finalité de cette recherche
ou plutôt amha ce qui simplifierait en allant directement à la
finalité
en outre essaye de répondre aux questions (et vérifie si tu as lu les
posts précédent en entier
parce que tes retours donnent l'impression que tu t'es arrêté juste à
un premier élément qui coincerait avec l'approche de la question aussi
claire soit-elle pour toi mais pas forcément pour nous:
ton propos de départ était bien de faire une recherche dans une
colonne
donc cela devrait ramener quoi:
un numero de ligne ou la valeur d'une ligne déterminée, ou d'un
élément cherché dans une autre colonne?
Ai-je donc bien compris:....?...:
de prime abord tu veux d'abord cibler le numéro de la dernière colonne
du tableau
pour savoir dans quelle colonne effectuer ta recherche?
C'est pourquoi je t'ai suggèré qu'il y ait des titres à chaque colonne
de tableau.
Ainsi tu peux obtenir son numéro par rapport aux titre et sans se
soucier si en dessous c'est des valeurs ou des formules rechercher son
numéro sur cette base et ensuite t'en servir pour y chercher (valeur
ou formule ou vide ..)
Suis je dans l'idée?
Merci de clarifier ces points en détail.
--
lSteph
On 16 août, 10:31, "thomas" <nomail> wrote: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 Sigonneauhttp://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
Bonjour,
Tu devrais mettre un exemple sur cjoint
dans lequel
outre voir la g..de ton tableau
on puisse comprendre
la finalité de cette recherche
ou plutôt amha ce qui simplifierait en allant directement à la
finalité
en outre essaye de répondre aux questions (et vérifie si tu as lu les
posts précédent en entier
parce que tes retours donnent l'impression que tu t'es arrêté juste à
un premier élément qui coincerait avec l'approche de la question aussi
claire soit-elle pour toi mais pas forcément pour nous:
ton propos de départ était bien de faire une recherche dans une
colonne
donc cela devrait ramener quoi:
un numero de ligne ou la valeur d'une ligne déterminée, ou d'un
élément cherché dans une autre colonne?
Ai-je donc bien compris:....?...:
de prime abord tu veux d'abord cibler le numéro de la dernière colonne
du tableau
pour savoir dans quelle colonne effectuer ta recherche?
C'est pourquoi je t'ai suggèré qu'il y ait des titres à chaque colonne
de tableau.
Ainsi tu peux obtenir son numéro par rapport aux titre et sans se
soucier si en dessous c'est des valeurs ou des formules rechercher son
numéro sur cette base et ensuite t'en servir pour y chercher (valeur
ou formule ou vide ..)
Suis je dans l'idée?
Merci de clarifier ces points en détail.
--
lSteph
On 16 août, 10:31, "thomas" <nomail> wrote:
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" <michde...@hotmail.com> a écrit dans le message de groupe de
discussion : eF6FBk1$IHA.2...@TK2MSFTNGP05.phx.gbl...
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$IHA.1...@TK2MSFTNGP03.phx.gbl...
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" <michde...@hotmail.com> a écrit dans le message de groupe de
discussion : uEObGdy$IHA.1...@TK2MSFTNGP02.phx.gbl...
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$IHA.1...@TK2MSFTNGP03.phx.gbl...
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" <nospam@nospam> a écrit dans le message de groupe de
discussion : e7IJY#s$IHA.1...@TK2MSFTNGP02.phx.gbl...
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 Sigonneauhttp://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$IHA.2...@TK2MSFTNGP02.phx.gbl...
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" <dZZZcolarde...@free.fr> a écrit dans le message de groupe de
discussion : Ob2t#tr$IHA.4...@TK2MSFTNGP04.phx.gbl...
Bonjour.
With ActiveSheet.UsedRange
Colonne = .Column + .Columns.Count - 1
End With
Cordialement.
Daniel
"thomas" <nomail> a écrit dans le message de news:
er5Tifr$IHA.3...@TK2MSFTNGP04.phx.gbl...
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
Bonjour,
Tu devrais mettre un exemple sur cjoint
dans lequel
outre voir la g..de ton tableau
on puisse comprendre
la finalité de cette recherche
ou plutôt amha ce qui simplifierait en allant directement à la
finalité
en outre essaye de répondre aux questions (et vérifie si tu as lu les
posts précédent en entier
parce que tes retours donnent l'impression que tu t'es arrêté juste à
un premier élément qui coincerait avec l'approche de la question aussi
claire soit-elle pour toi mais pas forcément pour nous:
ton propos de départ était bien de faire une recherche dans une
colonne
donc cela devrait ramener quoi:
un numero de ligne ou la valeur d'une ligne déterminée, ou d'un
élément cherché dans une autre colonne?
Ai-je donc bien compris:....?...:
de prime abord tu veux d'abord cibler le numéro de la dernière colonne
du tableau
pour savoir dans quelle colonne effectuer ta recherche?
C'est pourquoi je t'ai suggèré qu'il y ait des titres à chaque colonne
de tableau.
Ainsi tu peux obtenir son numéro par rapport aux titre et sans se
soucier si en dessous c'est des valeurs ou des formules rechercher son
numéro sur cette base et ensuite t'en servir pour y chercher (valeur
ou formule ou vide ..)
Suis je dans l'idée?
Merci de clarifier ces points en détail.
--
lSteph
On 16 août, 10:31, "thomas" <nomail> wrote: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 Sigonneauhttp://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
je suis athée
"Jacky" a écrit dans le message de groupe de discussion
:
u0Wj7nt$
Pourtant......Saint Thomas.....
;o)))
je suis athée
"Jacky" <Dupond@marcel.fr> a écrit dans le message de groupe de discussion
:
u0Wj7nt$IHA.3936@TK2MSFTNGP06.phx.gbl...
Pourtant......Saint Thomas.....
;o)))
je suis athée
"Jacky" a écrit dans le message de groupe de discussion
:
u0Wj7nt$
Pourtant......Saint Thomas.....
;o)))