Compter le nombre de ligne d un tableau vba excel

Compter le nombre de ligne d un tableau vba excel - VB/VBA/VBS - Programmation

Marsh Posté le 25-10-2005 à 15:51:30    

Bonjour,  
 
Dans une macro excel, je crée un tableau en memoire.
J aimerais savoir comment faire pour compter le nombre de ligne qu il y a dans mon tableau.
 
Actuellement j utilise la fonction on error pour sortir est me donner le nombre
si quelqu un à une solution plus propre je suis preneur
 

Code :
  1. Sub Tableaux()
  2. laChaine = "10 mn:5:24#20 mn:25:45#30 mn:46:100"
  3. MsgBox GetLigneArray(laChaine)
  4. End Sub


 

Code :
  1. Function GetLigneArray(ByVal laChaine As String)
  2.     On Error GoTo Err_Tableaux
  3.     GetLigneArray = 0
  4.     While Split(laChaine, "#" )(GetLigneArray) <> ""
  5.         GetLigneArray = GetLigneArray + 1
  6.     Wend
  7.     Exit Function
  8.    
  9. Err_Tableaux:
  10.         GetLigneArray = GetLigneArray - 1
  11.    
  12. End Function


 
Merci d'avance


---------------
homogene
Reply

Marsh Posté le 25-10-2005 à 15:51:30   

Reply

Marsh Posté le 25-10-2005 à 21:11:46    

bonjour,
 
Sub Tableaux()
laChaine = "10 mn:5:24#20 mn:25:45#30 mn:46:100"
MsgBox UBound(Split(laChaine, "#" ))
End Sub
 
... Mais dans un cas comme dans l'autre le tableau n'est pas réellement créé : il est juste évalué !
A+


Message édité par galopin01 le 25-10-2005 à 21:15:00
Reply

Marsh Posté le 25-10-2005 à 21:55:10    

Yes ! Pas mal !
 
Pourquoi chercher le compliqué quand on peut faire simple....
Fallait juste penser à UBound...
 
@+ Fred

Reply

Marsh Posté le 25-10-2005 à 22:38:38    

Oui,
Pour être exact, nous devons supposer que notre ami homogène a posé :
Option Base 1 dans son module.
Sinon sa question et son exemple n'ont aucun sens. Ma réponse s'est borné à "singer" sa fonction et donne le même résultat (aberrant si Option Base est omis.)
En effet Ubound ne renvoie que l'indice supérieure du tableau : pas le nombre d'éléments.
En réalité le nombre d'éléments (ou de ligne) quelque soit Option Base est donné par la formule :
Nb d'élément = UBase(Tablo) + 1 - Lbase(Tablo)
ainsi que le met en évidence la macro suivante :

Code :
  1. Sub Tableaux()
  2. Dim Tablo() As String
  3. laChaine = "10 mn:5:24#20 mn:25:45#30 mn:46:100"
  4. Tablo = Split(laChaine, "#" )
  5. MsgBox "Ubound = " & UBound(Tablo)
  6. MsgBox "Nb d'éléments = " & UBound(Tablo) + 1 - LBound(Tablo)
  7. For i = LBound(Tablo) To UBound(Tablo)
  8. MsgBox Tablo(i)
  9. Next
  10. End Sub


A+


Message édité par galopin01 le 25-10-2005 à 22:39:14

---------------
roger
Reply

Marsh Posté le 26-10-2005 à 17:35:53    

Merci beaucoup je connaissais pas le UBound  
 
 
merci à galopin01 pour ta macro c'est plus propre que ce que j avais fait.
 


---------------
homogene
Reply

Sujets relatifs:

Leave a Replay

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