renaud97434
Messages postés31Date d'inscriptionlundi 26 novembre 2007StatutMembreDernière intervention26 août 2008
-
26 nov. 2007 à 08:44
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 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 ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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
renaud97434
Messages postés31Date d'inscriptionlundi 26 novembre 2007StatutMembreDernière intervention26 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.
renaud97434
Messages postés31Date d'inscriptionlundi 26 novembre 2007StatutMembreDernière intervention26 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.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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...