OVH Cloud OVH Cloud

Trouver la dernière colonne utilisée

12 réponses
Avatar
ANDRE
Bonjour =E0 tous

Je cherche depuis deux jours comment trouver la derni=E8re=20
colonne utilis=E9e d'une feuille

Xlright ne marche que si on connait la ligne de la deni=E8re=20
cellule utilis=E9e...

active.sheet.Usedrange ne semble pas avoir de propri=E9t=E9s=20
et ne veut rien me retourner sinon selectionner la plage=20
maxi avec .usedRange.select...

Merci a qui me d=E9pannera

Cordialy=20

Andr=E9

10 réponses

1 2
Avatar
Michel Gaboly
Bonjour,

Attention aux fautes de frappe : pas de point entre Active et
Sheet ;-))

UsedRange est la bonne approche : cela te renvoie un objet
Range, dont tu peux exploiter la propriété Columns, ou plus
précisément Column.Count qui renvoir le nombre de colonnes
utilisées et donc le numéro de la dernière colonne.

Pour transformer ce numéro en texte : "C" au lieu de 3 ou
"AB" plutôt que 28, il faut aller un peu + loin :


Sub DerCol()
Dim DerCol As Integer
DerCol = ActiveSheet.UsedRange.Columns.Count
Select Case DerCol
Case Is < 26
MsgBox Chr(64 + DerCol)
Case Else
MsgBox Chr(64 + Int(DerCol / 26)) & _
Chr(64 + DerCol Mod 26)
End Select
End Sub



Bonjour à tous

Je cherche depuis deux jours comment trouver la dernière
colonne utilisée d'une feuille

Xlright ne marche que si on connait la ligne de la denière
cellule utilisée...

active.sheet.Usedrange ne semble pas avoir de propriétés
et ne veut rien me retourner sinon selectionner la plage
maxi avec .usedRange.select...

Merci a qui me dépannera

Cordialy

André


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
AV
UsedRange présente de très gros inconvénients !
Amha à éviter !

Pour la dernière colonne utilisée :

DerCol = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column

AV
Avatar
André
Salut Michel

merci pour ton code

9a marche, je ne sais pas pourquoi je n'"avais pas
trouvé...

me voici dépanné

Sauf que cette foutue plage s'agrandit sans cesse sans que
je sache pourquoi... mon excel 95 sans doute...

Cordialement

André
-----Message d'origine-----
Bonjour,

Attention aux fautes de frappe : pas de point entre
Active et

Sheet ;-))

UsedRange est la bonne approche : cela te renvoie un objet
Range, dont tu peux exploiter la propriété Columns, ou
plus

précisément Column.Count qui renvoir le nombre de colonnes
utilisées et donc le numéro de la dernière colonne.

Pour transformer ce numéro en texte : "C" au lieu de 3 ou
"AB" plutôt que 28, il faut aller un peu + loin :


Sub DerCol()
Dim DerCol As Integer
DerCol = ActiveSheet.UsedRange.Columns.Count
Select Case DerCol
Case Is < 26
MsgBox Chr(64 + DerCol)
Case Else
MsgBox Chr(64 + Int(DerCol / 26)) & _
Chr(64 + DerCol Mod 26)
End Select
End Sub



Bonjour à tous

Je cherche depuis deux jours comment trouver la dernière
colonne utilisée d'une feuille

Xlright ne marche que si on connait la ligne de la
denière


cellule utilisée...

active.sheet.Usedrange ne semble pas avoir de propriétés
et ne veut rien me retourner sinon selectionner la plage
maxi avec .usedRange.select...

Merci a qui me dépannera

Cordialy

André


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


.




Avatar
Michel Gaboly
Re,

De rien ;-))

Cela fait partie des inconvénients qu'évoque AV.

Depuis la version 1, Excel permet d'accéder à la "dernière
cellule" d'une feuille, qui est l'intersection de la dernière
ligne et de la dernière colonne utilisées. Malheureusement,
Excel garde en mémoire le moindre formatage pratiqué, et
il y a souvent une dérive : la dernière cellule se trouve
souvent à un endroit qui paraît absurdement loin.

UsedRange présente exactement les mêmes défauts. Pour
raffraichir la dernière cellule et UsedRange, il faut supprimer
(effacer ne suffit pas) les lignes et colonnes entières inutiles
qui sont au-delà de l'emplacement qui devrait correspondre à
la dernière cellule. La mise à jour de celle-ci ne se fait qu'après
enregistrement du documen, et cela ne marche pas toujours.

L'intérêt est que cela permet de repérer des zones inutiles qui
font gonfler la taille du document. Si la suppression de lignes
et/ou de colonnes inutiles ne suffit pas à faire "revenir" la
dernière cellule à un emplacement raisonnable, le tansfert
des données vers un classeur vierge peut être la solution.

Combine la ligne d'AV avec mon Select Case.


Salut Michel

merci pour ton code

9a marche, je ne sais pas pourquoi je n'"avais pas
trouvé...

me voici dépanné

Sauf que cette foutue plage s'agrandit sans cesse sans que
je sache pourquoi... mon excel 95 sans doute...

Cordialement

André
-----Message d'origine-----
Bonjour,

Attention aux fautes de frappe : pas de point entre
Active et

Sheet ;-))

UsedRange est la bonne approche : cela te renvoie un objet
Range, dont tu peux exploiter la propriété Columns, ou
plus

précisément Column.Count qui renvoir le nombre de colonnes
utilisées et donc le numéro de la dernière colonne.

Pour transformer ce numéro en texte : "C" au lieu de 3 ou
"AB" plutôt que 28, il faut aller un peu + loin :


Sub DerCol()
Dim DerCol As Integer
DerCol = ActiveSheet.UsedRange.Columns.Count
Select Case DerCol
Case Is < 26
MsgBox Chr(64 + DerCol)
Case Else
MsgBox Chr(64 + Int(DerCol / 26)) & _
Chr(64 + DerCol Mod 26)
End Select
End Sub



Bonjour à tous

Je cherche depuis deux jours comment trouver la dernière
colonne utilisée d'une feuille

Xlright ne marche que si on connait la ligne de la
denière


cellule utilisée...

active.sheet.Usedrange ne semble pas avoir de propriétés
et ne veut rien me retourner sinon selectionner la plage
maxi avec .usedRange.select...

Merci a qui me dépannera

Cordialy

André


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


.




--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
Hervé
Salut André,

Sub NomDerniereColonne()
Dim Col As Integer
Dim Adr As String
On Error Resume Next
With Worksheets("Feuil1")
Col = .Cells.Find("*", .[A1], xlFormulas, , _
xlByColumns, xlPrevious).Column
End With
If Err.Number <> 0 Then
MsgBox "La feuille est vide !"
Exit Sub
End If
Adr = Columns(Col).Address(0, 0)
MsgBox Left(Adr, InStr(Adr, ":") - 1)
End Sub

Hervé.

"ANDRE" a écrit dans le message news:
08e001c397a5$bc195280$
Bonjour à tous

Je cherche depuis deux jours comment trouver la dernière
colonne utilisée d'une feuille

Xlright ne marche que si on connait la ligne de la denière
cellule utilisée...

active.sheet.Usedrange ne semble pas avoir de propriétés
et ne veut rien me retourner sinon selectionner la plage
maxi avec .usedRange.select...

Merci a qui me dépannera

Cordialy

André
Avatar
Frédéric Sigonneau
Bonjour Michel,

Malgré les réserves d'usage, j'aime bien UsedRange également :)
Juste un détail dans le code proposé : le nombre de colonne de UsedRange ne
correspond à la dernière colonne utilisée que si la plage utilisée commence en
colonne A... ce qui n'a rien d'obligatoire !
Pour parer à tout éventualité, il me semble plus prudent de tester aussi où
commence le UsedRange :

With ActiveSheet.UsedRange
DerCol=.Column+.Columns.Count-1
End With

Et une petite dernière (?) avec UsedRange, pour les heureux utilisateurs d'Excel
2000 au moins :

DerCol=Split(Split(ActiveSheet.UsedRange.Address, ":")(1), "$")(1)

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour,

Attention aux fautes de frappe : pas de point entre Active et
Sheet ;-))

UsedRange est la bonne approche : cela te renvoie un objet
Range, dont tu peux exploiter la propriété Columns, ou plus
précisément Column.Count qui renvoir le nombre de colonnes
utilisées et donc le numéro de la dernière colonne.

Pour transformer ce numéro en texte : "C" au lieu de 3 ou
"AB" plutôt que 28, il faut aller un peu + loin :

Sub DerCol()
Dim DerCol As Integer
DerCol = ActiveSheet.UsedRange.Columns.Count
Select Case DerCol
Case Is < 26
MsgBox Chr(64 + DerCol)
Case Else
MsgBox Chr(64 + Int(DerCol / 26)) & _
Chr(64 + DerCol Mod 26)
End Select
End Sub


Bonjour à tous

Je cherche depuis deux jours comment trouver la dernière
colonne utilisée d'une feuille

Xlright ne marche que si on connait la ligne de la denière
cellule utilisée...

active.sheet.Usedrange ne semble pas avoir de propriétés
et ne veut rien me retourner sinon selectionner la plage
maxi avec .usedRange.select...

Merci a qui me dépannera

Cordialy

André


--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
Pierre CFI
bonjour
j'aime bien CurrentRegion (dans le cas de base de données) :o))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Frédéric Sigonneau" a écrit dans le message de news:
Bonjour Michel,

Malgré les réserves d'usage, j'aime bien UsedRange également :)
Juste un détail dans le code proposé : le nombre de colonne de UsedRange ne
correspond à la dernière colonne utilisée que si la plage utilisée commence en
colonne A... ce qui n'a rien d'obligatoire !
Pour parer à tout éventualité, il me semble plus prudent de tester aussi où
commence le UsedRange :

With ActiveSheet.UsedRange
DerCol=.Column+.Columns.Count-1
End With

Et une petite dernière (?) avec UsedRange, pour les heureux utilisateurs d'Excel
2000 au moins :

DerCol=Split(Split(ActiveSheet.UsedRange.Address, ":")(1), "$")(1)

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour,

Attention aux fautes de frappe : pas de point entre Active et
Sheet ;-))

UsedRange est la bonne approche : cela te renvoie un objet
Range, dont tu peux exploiter la propriété Columns, ou plus
précisément Column.Count qui renvoir le nombre de colonnes
utilisées et donc le numéro de la dernière colonne.

Pour transformer ce numéro en texte : "C" au lieu de 3 ou
"AB" plutôt que 28, il faut aller un peu + loin :

Sub DerCol()
Dim DerCol As Integer
DerCol = ActiveSheet.UsedRange.Columns.Count
Select Case DerCol
Case Is < 26
MsgBox Chr(64 + DerCol)
Case Else
MsgBox Chr(64 + Int(DerCol / 26)) & _
Chr(64 + DerCol Mod 26)
End Select
End Sub


Bonjour à tous

Je cherche depuis deux jours comment trouver la dernière
colonne utilisée d'une feuille

Xlright ne marche que si on connait la ligne de la denière
cellule utilisée...

active.sheet.Usedrange ne semble pas avoir de propriétés
et ne veut rien me retourner sinon selectionner la plage
maxi avec .usedRange.select...

Merci a qui me dépannera

Cordialy

André


--
Cordialement,

Michel Gaboly
http://www.gaboly.com






Avatar
Michel Gaboly
Bonsoir Frédéric,

Tu as tout à fait raison ;-))


Bonjour Michel,

Malgré les réserves d'usage, j'aime bien UsedRange également :)
Juste un détail dans le code proposé : le nombre de colonne de UsedRange ne
correspond à la dernière colonne utilisée que si la plage utilisée commence en
colonne A... ce qui n'a rien d'obligatoire !
Pour parer à tout éventualité, il me semble plus prudent de tester aussi où
commence le UsedRange :

With ActiveSheet.UsedRange
DerCol=.Column+.Columns.Count-1
End With

Et une petite dernière (?) avec UsedRange, pour les heureux utilisateurs d'Excel
2000 au moins :

DerCol=Split(Split(ActiveSheet.UsedRange.Address, ":")(1), "$")(1)

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour,

Attention aux fautes de frappe : pas de point entre Active et
Sheet ;-))

UsedRange est la bonne approche : cela te renvoie un objet
Range, dont tu peux exploiter la propriété Columns, ou plus
précisément Column.Count qui renvoir le nombre de colonnes
utilisées et donc le numéro de la dernière colonne.

Pour transformer ce numéro en texte : "C" au lieu de 3 ou
"AB" plutôt que 28, il faut aller un peu + loin :

Sub DerCol()
Dim DerCol As Integer
DerCol = ActiveSheet.UsedRange.Columns.Count
Select Case DerCol
Case Is < 26
MsgBox Chr(64 + DerCol)
Case Else
MsgBox Chr(64 + Int(DerCol / 26)) & _
Chr(64 + DerCol Mod 26)
End Select
End Sub


Bonjour à tous

Je cherche depuis deux jours comment trouver la dernière
colonne utilisée d'une feuille

Xlright ne marche que si on connait la ligne de la denière
cellule utilisée...

active.sheet.Usedrange ne semble pas avoir de propriétés
et ne veut rien me retourner sinon selectionner la plage
maxi avec .usedRange.select...

Merci a qui me dépannera

Cordialy

André


--
Cordialement,

Michel Gaboly
http://www.gaboly.com



--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
AV
j'aime bien CurrentRegion (dans le cas de base de données)


Ca j'aime bien aussi car avec une BD bien organisée, c'est du sur !

Mais avec UsedRange, même accomodé à n'importe quelle sauce...bofff ..bofff
Un exemple parmi :
- Police par défaut : Arial 10
- Sur une feuille strictement vierge renseigner uniquement la cellule A1
- Mettre la taille de police de C1 en 11 puis revenir à taille 10

Réponse attendue pour la colonne : 1
Réponse UsedRange : 3 !
Pas vraiment terrible......

AV

Avatar
Frédéric Sigonneau
Ave AV,

Les limitations de UsedRange sont bien connues mais, en ce qui me concerne,
elles ne suffisent pas pour que je ne l'utilise pas ou que je déconseille
systématiquement de l'utiliser.
AMHA, il en est du UsedRange comme de beaucoup d'autres objets, méthodes,
fonctions, options d'Excel : en connaître les limites permet de les utiliser à
bon escient plutôt que de les vouer aux gémonies...

Mais ce n'est qu'un avis personnel :-)

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


j'aime bien CurrentRegion (dans le cas de base de données)


Ca j'aime bien aussi car avec une BD bien organisée, c'est du sur !

Mais avec UsedRange, même accomodé à n'importe quelle sauce...bofff ..bofff
Un exemple parmi :
- Police par défaut : Arial 10
- Sur une feuille strictement vierge renseigner uniquement la cellule A1
- Mettre la taille de police de C1 en 11 puis revenir à taille 10

Réponse attendue pour la colonne : 1
Réponse UsedRange : 3 !
Pas vraiment terrible......

AV



1 2