[Excel]Connaître la dernière ligne d'un tableau

Connaître la dernière ligne d'un tableau [Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 29-12-2009 à 09:30:26    

Bonjour à tous,
 
Afin d'effectuer des calculs sur un tableau Excel (composé de 12 colonnes), j'ai besoin de connaître le nombre de lignes de ce dernier.
 
Je comptais faire :
 
Dim oLigne as Integer
Dim oColonne as Integer
oLigne = 0
 

Code :
  1. For oColonne = 1 to 12
  2.     While Not IsEmpty( xlsheet.Cells(oLigne, oColonne) )
  3.         oLigne = oLigne + 1
  4.     Wend
  5. Next


 
Le problème c'est qu'il n'est pas complet, il y a des cellules vides.
 
Par exemple :  
 

Citation :

Colonne 1 : Aucune cellule vide, longueur : 28 lignes
Colonne 2 : A 2 cellules vides, longueur : 31 lignes
Colonne 3 : est vide de la ligne 10 à 13 mais à une longueur de 34 lignes
...


 
Dans cet exemple je souhiate récupérer la valeur 34 :)
 
Quelqu'un a-t-il une solution ?
 
Merci de votre aide.

Reply

Marsh Posté le 29-12-2009 à 09:30:26   

Reply

Marsh Posté le 29-12-2009 à 10:14:05    

c'est quoi ton critère de fin de tableau si tu peux avoir des cellules vides? quand toute la ligne est vide? dans ce cas boucle plutôt en priorité sur les lignes, puis sur les colonnes pour vérifier si une ligne entière est vide.

Reply

Marsh Posté le 29-12-2009 à 12:25:11    

Bonjour
 
Voici une solution:
 

Code :
  1. Sub dernière_ligne()
  2. Dim dernière, Ligne as Integer
  3. Range("a1" ).Select
  4. 'Pour chaque colonne de 1 à 12
  5.   For i = 1 To 12
  6.     ' on détermine à partir du bas, le rang de la dernière cellule non vide
  7. Ligne = Cells(65530, i).end(xlUp).Row
  8.   'si le rang trouvé est supérieur au plus grand précédent, "dernière" prend cette valeur:
  9. If Ligne > dernière Then dernière = Ligne 
  10. Next  i
  11. 'Et dernière = 34  , ce qui était demandé. La preuve:
  12. Range("a" &  dernière).Offset(1,0).Select
  13. End Sub


 
Te voilà rendu 1 ligne en-dessous de la dernière ligne non vide
 
Bien cordialement


---------------
Olympus OM-D  EM-5 + 14-42
Reply

Marsh Posté le 29-12-2009 à 13:44:19    

Ah oui, je n'avais pas pensé à partir d'en bas, bien que cela risque d'être plus long.
 
Merci pour cette idée.

Reply

Marsh Posté le 29-12-2009 à 14:15:17    

Non, comme tu pourras le constater.
 
 La macro détermine en une fraction de seconde quelle est la première cellule occupée en venant du bas, dans chaque colonne, puis conserve la valeur la plus élevée.
 
c'est fait en une seconde.
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed