Compter

Résolu
renaud97434 Messages postés 31 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 26 août 2008 - 26 nov. 2007 à 08:44
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 26 nov. 2007 à 11:40
bonjour,

je viens de m'inscrire sur le forum et débute la programmation en VBA.

je recois un message d'erreur quand je tape le code suivant.

ce code sert à compter dans une feuille déterminée le nombre de lignes non vides dans la colonne 4


ensuite j'essaye de renvoyer la valeur obtenue dans une feuille recap cellule(14,11)


 


voici le code:


sub testrenaud()
Dim i As Integer
'nombre d'enregistrements de la feuille extract
Sheets("extract").Select
i = 1
Do Until Cells(i, 4) <> ""
i = i + i
Loop


Sheets("recap").Cells(14, 11).Value = i


End Sub


mais erreur sur la ligne do until.ca ne marche pas.
est ce que quelqu'un peut me donner une explication ? et me dire qu'est ce que j'ai fait de faux qui empêche la boucle de se faire ?

merci d'avance

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 nov. 2007 à 08:57
tu peux demander cette info à Excel, sans faire de boucle :

Sub testrenaud()
Dim oRange As Range
Dim NbValues As Long
Set oRange = Worksheets("extract").Cells(, 4)
NbValues = oRange.SpecialCells(xlCellTypeLastCell).Row

Worksheets("recap").Range("N11").Value = NbValues
End Sub
3
renaud97434 Messages postés 31 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 26 août 2008
26 nov. 2007 à 09:05
merci . mais en fait cela compte toutes les lignes de la colonnes. hors je veux commencer à la deuxième ligne puisque la première comporte le libellé de la colonne.c'est pourquoi je veux passer par une boucle.

en tout cas merci.
0
renaud97434 Messages postés 31 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 26 août 2008
26 nov. 2007 à 09:17
Sub testrenaud()
Dim oRange As Range
Dim NbValues As Long
    Set oRange = Worksheets("extract").Cells(, 4)
    NbValues = oRange.SpecialCells(xlCellTypeLastCell).Row
    
    Worksheets("recap").Range("N11").Value = NbValues
End Sub

je recois une erreur exection 9

il marchait la première fois et maintenant ne marche plus.

merci pour vos explications
0
renaud97434 Messages postés 31 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 26 août 2008
26 nov. 2007 à 09:44
ok ce code marche bien désolé.

l'ancien marche aussi mais il ne sort pas le bon nombre de ligne , il n'affiche que la valeur de la variable initiale cad 1

quelqu'un peut m'expliquer pourquoi ?
0

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

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
26 nov. 2007 à 11:40
Qu'est-ce que tu entends par lignes non vides ?
Est-ce que tu cherches vraiment le nombre de cellules remplies d'une certaine colonne ou est-ce que tu cherches la dernière ligne où il y a des données inscrites ?

Pour le nombre de valeurs, l'équivalent de NBVAL()
    NbValues = [COUNT(D:D)]

Pour trouver la dernière ligne d'une colonne
    NbValues = Cells(Rows.Count, "D").End(xlUp).Row

Renfield, ta manière de faire est un peu comme UsedRange. C'est-à-dire que les cellules qui ont été utilisées puis effacées demeurent dans le compte...

MPi²
0
Rejoignez-nous