XL 2010 CountA par ligne d'une plage

cathodique

XLDnaute Barbatruc
Bonjour,

En suivant une discussion, j'ai voulu compter le nombre de cellule avec CountA pour chaque ligne d'une plage.
je suis un peu perdu. Je ne trouve pas les bonnes syntaxes car les résultats retournés sont faux.
VB:
Sub NbCelNonVidePlage()
Dim plg As Range, dl As Long, NbCel As Long, i As Long
With ActiveSheet
Set plg = .Range("E3:T" & .UsedRange.SpecialCells(xlCellTypeLastCell).Row)
End With
Debug.Print plg.Rows.Count, plg.Columns.Count
NbCel = Application.WorksheetFunction.CountA(plg)
'Debug.Print NbCel

For i = 3 To plg.Rows.Count
Debug.Print "Ligne" & i, Application.CountA(plg(i))
Debug.Print "Ligne" & i, Application.CountA(plg.Range(Cells(i, 1), Cells(i, plg.Columns.Count + 4)))
Next i
End Sub
Merci par avance.
 

Pièces jointes

  • CountA_Plage.xlsm
    17 KB · Affichages: 6

cathodique

XLDnaute Barbatruc
Bonjour cathodique,

Dans la boucle :
VB:
Debug.Print "Ligne" & i, Application.CountA(plg.Rows(i))
A+
Merci beaucoup Jean-Marie, mais le résultat est d'après moi erroné.
1676108307599.png

Sinon, il y a quelque chose qui m'échappe.
Bon week-end
 

cathodique

XLDnaute Barbatruc
Bonjour le fil, @cathodique

@cathodique
Si j'ai bien compris
VB:
Sub test_110223()
Dim PLG_Non_Vides As Range
Set PLG_Non_Vides = Range("A3").SpecialCells(xlCellTypeConstants, 3)
MsgBox PLG_Non_Vides.Address
MsgBox PLG_Non_Vides.Count & " cellules non vides dans la plage: " & [A3].CurrentRegion.Address(0, 0)
End Sub
Merci beaucoup. Mais ce n'est pas exactement ce que je recherche.
Le but est de prendre une partie des données d'une feuille dans une plage.
Ensuite, déterminer le nombre de cellules non vides pour chaque ligne de cette plage.

Bon week-end.
 

cathodique

XLDnaute Barbatruc
C'est moi qui permet d'avoir ce résultat et il est correct.
Pourrais-tu stp étayer ta réponse car là, je suis vraiment perdu.
CountA(vba) est bien NbVal(excel)?
En utilisant nbval sur la feuille, le résultat est correct. Par exemple pour la 1ere ligne de la plage( Ligne3)= 16 .
Or, avec vba ça me retour Ligne3=2 résultat incorrect.

Merci.

Edit: Ok, je viens de trouver mon erreur. elle est dans le for i=3
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
801

Statistiques des forums

Discussions
315 099
Messages
2 116 205
Membres
112 687
dernier inscrit
snexedwards