J'ai un soucis pour compter un nombre de ligne dans Excel. Je ne sais pas si les formules suffises ou si il faut passer par du VBA. (Je connais pas la programmation VBA donc je préfère utiliser le plus possible les formules excel).
Voici mon problème :
J'ai deux colonnes (B et C) qui ont des cellules soit vides, soit qui contiennent des chiffres / nombres.
Je souhaite afficher dans une cellule (Par exemple A1) le nombre de lignes qui contiennent une valeurs soit en B soit en C. Mais si la même ligne contient à la fois une valeur en B et en C il faut que ça compte 1 et non 2.
Voir exemple ci-dessous :
J'ai 6 lignes avec une valeurs au moins en B et en C
La formule ESTVIDE ne gère qu'une cellule et pas une plage de cellules.
J'ai vu ça : https://www.excel-downloads.com/threads/estvide-plage-de-cellules.9560/ avec un SI et NBVAL. Mais NBVAL fait une lecture séquentielle. Même si ce que tu veux faire est assez simple, comme il n'existerait pas de formule Excel native, tu peux en créer une en VBA. C'est pas super compliqué.
Sinon, peut-être que ta conception est mauvaise.
Essaye ceci, je ne peux pas tester, je suis ou pauvre ou pas un connard qui crack les logiciels payants :
FUNCTION MA_SOMME(plageCellules as Range)
DIM cumul as Integer
DIM cellule as Range
cumul = 0
FOR EACH cellule in plageCellules
cumul = cumul + cellule.value
NEXT
MA_SOMME = cumul
END FUNCTION
Une fois la macro faite, tu la testes dans A1. Tu tapes =MA_SOMME( puis tu sélectionnes à la souris de B2 à C10 et tu fermes la parenthèses. Si tout va bien, tu obtiendras 19
Pour ta fonction, tu peux te baser sur https://docs.microsoft.com/fr-fr/office/vba/api/excel.range(object)
- Edité par CristianoRolando 27 juillet 2021 à 3:44:57
@CristianoRolando on ne cherche pas à calculer la somme des cellules (sinon =SOMME(b1:c10 suffirait )
A mettre dans un module VBA, pour l'appeler ensuite dans une cellule =NBLNV(B2:C10) (NBLNV: NomBre de Lignes Non Vides)
Function NBLNV(plage As Range)
Dim nb As Integer
Dim ligne As Range, cell As Range
nb = 0
For Each ligne In plage.Rows
For Each cell In ligne.Cells
If Not IsEmpty(cell) Then
nb = nb + 1
Exit For
End If
Next cell
Next ligne
NBLNV = nb
End Function
C'était un exemple. Je voulais qu'il ponde l'algo lui-même et ne pas lui mâcher le travail.
Formule Excel
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Pas d'aide concernant le code par MP, le forum est là pour ça :)