OVH Cloud OVH Cloud

UsedRange.Columns.Count

6 réponses
Avatar
Michelb
Bonjour,
Bien qu'ayant supprimé toutes les colonnes au delà de la 20ème le code
suivant m'affiche toujours 36
MsgBox Worksheets("TEST").UsedRange.Columns.Count
Comment obtenir le nombre de la dernière colonne réellement utilisée?
Merci

6 réponses

Avatar
Michel Pierron
Bonjour Michelb;
With Worksheets("TEST") .UsedRange
MsgBox Worksheets("TEST").UsedRange.Columns.Count

MP

"Michelb" a écrit dans le message de
news:c6dnet$fij$
Bonjour,
Bien qu'ayant supprimé toutes les colonnes au delà de la 20ème le code
suivant m'affiche toujours 36
MsgBox Worksheets("TEST").UsedRange.Columns.Count
Comment obtenir le nombre de la dernière colonne réellement utilisée?
Merci




Avatar
Michelb
Je te remercie pour la réponse mais tu utilises une syntaxe with sans end
with.Par ailleurs tu recopies à l'identique ce que j'ai donné.
Le problème vient probablement de cellules qui ont été affectées
précédemment puis effacées mais dont excel garde le souvenir(la feuille
"TEST" n'a pas été créée par moi). J'ai pourtant sélectionné les colonnes
non utilisées et fait "effacer tout", appliquer la méthode clear sur ces
mêmes colonnes, rien à faire. Sur un nouveau tableau je ne rencontre pas ce
problème.
michelB

"Michel Pierron" a écrit dans le message de
news:%
Bonjour Michelb;
With Worksheets("TEST") .UsedRange
MsgBox Worksheets("TEST").UsedRange.Columns.Count

MP

"Michelb" a écrit dans le message de
news:c6dnet$fij$
Bonjour,
Bien qu'ayant supprimé toutes les colonnes au delà de la 20ème le code
suivant m'affiche toujours 36
MsgBox Worksheets("TEST").UsedRange.Columns.Count
Comment obtenir le nombre de la dernière colonne réellement utilisée?
Merci








Avatar
AV
Le "UsedRange" pose pas mal de problèmes ! ...(voir archives)

Dernière colonne utilisée :
MsgBox Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column

AV
Avatar
Michel Pierron
Re Michelb;
Oui excuse cet oubli; en principe, l'instruction
Worksheets("TEST") .UsedRange
réinitialise usedrange.
Ensuite,
MsgBox Worksheets("TEST").UsedRange.Columns.Count
devrait te donner la bonne indication.

MP

"Michelb" a écrit dans le message de
news:c6dted$ch1$
Je te remercie pour la réponse mais tu utilises une syntaxe with sans end
with.Par ailleurs tu recopies à l'identique ce que j'ai donné.
Le problème vient probablement de cellules qui ont été affectées
précédemment puis effacées mais dont excel garde le souvenir(la feuille
"TEST" n'a pas été créée par moi). J'ai pourtant sélectionné les colonnes
non utilisées et fait "effacer tout", appliquer la méthode clear sur ces
mêmes colonnes, rien à faire. Sur un nouveau tableau je ne rencontre pas
ce

problème.
michelB

"Michel Pierron" a écrit dans le message de
news:%
Bonjour Michelb;
With Worksheets("TEST") .UsedRange
MsgBox Worksheets("TEST").UsedRange.Columns.Count

MP

"Michelb" a écrit dans le message de
news:c6dnet$fij$
Bonjour,
Bien qu'ayant supprimé toutes les colonnes au delà de la 20ème le code
suivant m'affiche toujours 36
MsgBox Worksheets("TEST").UsedRange.Columns.Count
Comment obtenir le nombre de la dernière colonne réellement utilisée?
Merci












Avatar
Michelb
Je te remercie mais l'appel à UsedRange ne réinitialise pas le compte de
colonnes dans cette feuille.
J'ai fait des test sur de nouvelles feuilles en insérant et supprimant des
colonnes le résultat est toujours correct.
Il semble que la feuille en question ne puisse pas être réinitialisée même
en supprimant les colonnes au delà de la 20ème ou en faisant "effacer tout
sur ces colonnes"
C'est pas grave je vais donner un nom à la dernière cellule mais ça
m'empêche d'utiliser UsedRange dans d'autres cas dans la mesure où je ne
peux pas être sûr de sa fiabilité. Je travaille avec des feuilles créées par
des tiers qui servent de modèles et dont les zones peuvent être reproduites
des centaines de fois sur un ou plusieurs classeurs. Je préfère être sûr de
la fiabilité de mon code!
Comme le dit AV dans sa réponse une recherche sur google me laisse croire
qu'on ne peut pas se reposer sur cette méthode. Encore merci
michelB

"Michel Pierron" a écrit dans le message de
news:
Re Michelb;
Oui excuse cet oubli; en principe, l'instruction
Worksheets("TEST") .UsedRange
réinitialise usedrange.
Ensuite,
MsgBox Worksheets("TEST").UsedRange.Columns.Count
devrait te donner la bonne indication.

MP

"Michelb" a écrit dans le message de
news:c6dted$ch1$
Je te remercie pour la réponse mais tu utilises une syntaxe with sans
end


with.Par ailleurs tu recopies à l'identique ce que j'ai donné.
Le problème vient probablement de cellules qui ont été affectées
précédemment puis effacées mais dont excel garde le souvenir(la feuille
"TEST" n'a pas été créée par moi). J'ai pourtant sélectionné les
colonnes


non utilisées et fait "effacer tout", appliquer la méthode clear sur ces
mêmes colonnes, rien à faire. Sur un nouveau tableau je ne rencontre pas
ce

problème.
michelB

"Michel Pierron" a écrit dans le message de
news:%
Bonjour Michelb;
With Worksheets("TEST") .UsedRange
MsgBox Worksheets("TEST").UsedRange.Columns.Count

MP

"Michelb" a écrit dans le message de
news:c6dnet$fij$
Bonjour,
Bien qu'ayant supprimé toutes les colonnes au delà de la 20ème le
code




suivant m'affiche toujours 36
MsgBox Worksheets("TEST").UsedRange.Columns.Count
Comment obtenir le nombre de la dernière colonne réellement
utilisée?




Merci
















Avatar
Michelb
OK merci. Je note la solution mais dans le cas précis j'ai la possibilité de
donner un nom à la dernière cellule de cette feuille qui me sert de modèle,
je récupérerai donc le nombre de colonnes d'après ce nom, je pense que ça
sera légèrement plus rapide que par la méthode find que tu proposes.
Je mets la méthode UsedRange à la poubelle compte tenu de son manque de
fiabilité et j'intègre ta fonction dans ma bibliothèque. Encore merci

"AV" a écrit dans le message de
news:
Le "UsedRange" pose pas mal de problèmes ! ...(voir archives)

Dernière colonne utilisée :
MsgBox Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column

AV