Comment compter de manière correcte le nombre de colonne utilisé dans une feuill

Résolu
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 - 18 nov. 2011 à 10:04
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 19 nov. 2011 à 14:43
Bonjour le Forum,

Je cherche à compter le nombre de colonne d'une de mes feuilles Excel mais la valeur retournée n'est pas la bonne !

J'utilise le code suivant :

Colonne = ActiveSheet.UsedRange.Columns.Count 'Compte le nombre de colonnes dynamiques


J'ai cru voir sur l'aide Excel, qu'il pouvais y avoir des erreurs de comptage du au fait que les colonnes soient séparées.

J'ai pas tout compris en fait^^. Pourtant l'application pour compter le nombre de lignes fonctionne très bien. Mais pas pour les colonnes.

Donc si quelqu'un sait comment compter TOUTES les colonnes d'une feuille Excel indépendamment de la config utilisé ça serait cool.

Bien cordialement,

André

6 réponses

SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
19 nov. 2011 à 14:25
Bonjour le Forum,

J'ai fini par trouver ma solution au problème. Voici ci après un code qui permet d'identifier de manière correcte la dernière colonne qui est utilisée dans une feuille Excel. Ça parait simple mais ça ne l'est finalement pas^^

msgbox Cells.Find("*", , , , xlByColumns, xlPrevious).Column


Et voila, ça c'est fait.

Merci pour votre aide.

Bien cordialement,

André
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 nov. 2011 à 10:59
Bonjour,

Jette un coup d'oeil sur UsedRange dans ton aide VBA

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 nov. 2011 à 11:07
Regarde également ce que fait ceci :
MsgBox "dernière colonne de l'occupation : " & Cells.SpecialCells(xlCellTypeLastCell).Column
  MsgBox "dernière ligne de l'occupation : " & Cells.SpecialCells(xlCellTypeLastCell).Row

Maintenant : je n'ai peut-être pas compris ta demande :
S'il s'agit, pour UNE ligne donnée, de connaître la dernière colonne remplie, c'est encore autre chose.
Tu dis ...
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 nov. 2011 à 17:16
Tu y es, André ?

Quelques explications, maintenant :
UsedRange est la plage "occupée/utile" et ses columns.count et Rows.count concernent cette plage.
L'erreur qui t'est- signalée n'en est point une du tout.
Il te faut simplement considérer le cas de figure où le usedrange ne démarre pas forcément en cellule A1.
Il faut donc ajouter au columns.count le n° (usedrange.column) de la colonne du début du usedrange - 1 et au rows.count celui (usedrange.row) de la ligne du début du usedrange - 1

Voilà tout;
Je te fais ici un exemple de tout (avec usedrange et avec xltypelastcell) :
MsgBox "dernière colonne de l'occupation :" & vbCrLf & _
  "avec usedrange : " & ActiveSheet.UsedRange.Columns.Count + ActiveSheet.UsedRange.Column - 1 & vbCrLf & _
"avec specialcells(xlCellTypeLastCell) : " & Cells.SpecialCells(xlCellTypeLastCell).Column & vbCrLf & vbCrLf & _
 "dernière colonne de l'occupation :" & vbCrLf & _
  "avec usedrange : " & ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1 & vbCrLf & _
"avec specialcells(xlCellTypeLastCell) : " & Cells.SpecialCells(xlCellTypeLastCell).Row


Tu pourras constater que les deux méthodes retournent le même résultat, quel que soit le point de départ du usedrange.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
19 nov. 2011 à 00:26
Bonsoir Ucfoutu,

Dsl pour le retard j'ai eu une journée de dingue. Pas touché terre^^. Alors j'ai pu tester ton code mais ça ne conviens pas tout à fait. C'est justement le problème que j'avais pu lire dans l'aide Vba. Le fait que l'on ne part pas forcément de la colonne A, ou alors du fait que les plages ne sont pas continues.

J'ai testé ton code sur toutes mes feuilles Excel (6 ou 7 feuilles) et il arrive que sur certaines feuilles la valeur retournée pour la dernière colonne d'occupation ne soit pas la bonne ! Toujours à plus ou moins un valeur.

Je vais tenter de reformuler ma demande différemment. Peut être que je me suis mal exprimé (pour changer^^).

Je cherche à savoir quel est le nom de la dernière colonne de ma feuille Excel qui contient une donnée.
Petit Exemple d'application : Si la donnée la plus à droite de ma feuille Excel se trouve en "H13" alors j'ai donc 8 colonnes depuis le début. Pas dur pourtant^^

Suis-je plus clair ainsi ? Ça ne parait pourtant pas compliqué je trouve.

André

Ps : J'ai oublié de mentionner que le nombre de ligne n'est pas tout le temps lui aussi compté de manière correcte. Pareil que pour les colonnes, je cherche à connaitre le numéro de la ligne de ma feuille Excel qui contient une donnée la plus en bas possible.
(Donnée la plus à droite-> numéro de colonne / Donnée la plus ne bas-> numéro de ligne)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 nov. 2011 à 14:43
Je ne suis pas d'accord avec toi, André. Pourquoi ? ===>>
parce-que tu parcours ainsi toutes les cellules (lourd)
Je voudrais bien avoir un exemple qui montre que le code que je t'ai montré, notamment celui utilisant xlcelltypelastcell se plante

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous