annyeong56
Messages postés25Date d'inscriptionjeudi 24 mars 2011StatutMembreDernière intervention 6 avril 2011
-
31 mars 2011 à 17:44
annyeong56
Messages postés25Date d'inscriptionjeudi 24 mars 2011StatutMembreDernière intervention 6 avril 2011
-
4 avril 2011 à 15:14
bonjour,
j'ai un ensemble de colonnes (disons toutes les colonnes de A à K par exemple).
chaque colonne peut avoir un taille différente en nombre de lignes.
A -> 5 lignes
B-> 8 lignes
etc...
F -> 3 lignes
K -> 5 lignes
(B est la plus longue admettons)
je souhaite sélectionner l'ensemble pour le copier/coller dans un autre classeur.
c'est a dire que je souhaite détecter quelle colonne est la plus longue, pour ensuite copier le gros range constitué de l'ensemble des colonnes de A à K, et des lignes de 3 à la ligne de la colonne la plus longue.
ca veut dire dans cet exemple qu'on sélectionnerait le tout de A3 à K8. (je suppose que les 2 premières lignes sont faites d'identifiants des colonnes)
ensuite je copie/colle ca dans mon autre classeur.
vous avez une idée comment faire ?
j'ai une idée, en scannant chaque colonne pour connaitre sa dernière ligne qui contient des données, mais ca va etre trop lourd...
foliv57
Messages postés420Date d'inscriptionvendredi 17 novembre 2006StatutMembreDernière intervention15 juillet 20149 31 mars 2011 à 18:50
Bonjour,
Voici un petit algo qui fait ce travail.
Const maxColonneIndex2003 = 255
Const maxColonneIndex2007 = 16384
Public Function GetMaxRow() As Long
Dim colIndex As Long
Dim ligneIndex As Long
'Première cellule d'en-tete du tableau
colIndex = 1
ligneIndex = 1
'Tant que l'index de colonne n'est pas la dernière colonne du
'tableau excel (à adapter en fonction de la version d'Excel ou
'si le tableau contient d'autre colonnes sur sa droite)
While colIndex <> maxColonneIndex2007
'Recherche la ligne la plus basse de la colonne en cours et saute une ligne
ligneIndex = Feuil1.Cells(ligneIndex, colIndex).End(xlDown).Row + 1
'Recherche la première colonne non vide sur la droite
'(Donc test s'il existe une colonne avec plus de lignes)
colIndex = Feuil1.Cells(ligneIndex, colIndex).End(xlToRight).Column
Wend
GetMaxRow = ligneIndex - 1
End Function
Par contre c'est un peut freestyle, je ne l'ai pas trop trop testé, donc tenez moi au courant