Microsoft 365 addtionner les cellules non vides (contiennent nbres et/ou lettres)

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite une belle journée :)

Je n'arrive pas à faire une formule ou un code vba pour additionner les cellules "NON vides" de la colonne "A" de ma feuille.
J'ai cherché certainement mal car ça me semble être déjà traité mais je n'ai pas trouvé.
J'ai également cherche avec "nbval" sans succès.
Je vais voir du côté de sous total,
Auriez-vous la solution?
Je joins un petit fichier test.
Avec mes remerciements,
Amicalement,
lionel :)
 

Pièces jointes

  • nbval_test.xlsm
    11 KB · Affichages: 25

WTF

XLDnaute Impliqué
Bonjour Lionel,
Nbval fonctionne bien en principe, mais bizarre il semble que tes cellules vides ne le soient pas.
Quand tu vas ds une cellule vide et que tu fais "SUPPR" ton compteur en A1 diminue.
Est ce que tu sais pourquoi elles ne sont pas "vides" ? est ce que tu ne peux pas tout simplement les sélectionner et faire SUPPR ?

Bonne journée
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Gérard, Soan, WTF, le Forum,
Bonne journée à toutes et à tous,

Je reviens sur le sujet car j'ai un autre soucis lié au même problème :
Je souhaite atteindre ma dernière cellule NON vide de la col "A" soit : la cellule A34
Dans mon fichier de travail, la colonne a été retraitée
et les cellules "apparemment vides" ne semble pas l'être puisque mon code me positionne sur la cellule A38

D'ailleurs, ma formule sous.total en H6 me donne 36 cellules NON vides
Alors que la formule SOMMEPROD de Job75 en I6 me donne le bon nbr de cellules NON vides
J'ai essayé avec la formule suivante : =CELLULE("prefixe";A3) et en remplacement par rien mais ça ne fonctionne pas,

Pour le fichier test :
le code : "purge" donné par Astucien fonctionne https://forum.pcastuces.com/excell_cellules_vides_non_vides-f23s25071.htm
le code : "épurage" fonctionne


Le code "purge" fonctionne dans mon fichier de travail, mais il est très long
Le code "épurage" ne fonctionne pas dans mon fichier de travail ! :mad:
Si vous aviez la solution ce serait super :)
Je joins le fichier test avec explications.
Amicalement,
lionel,
 

Pièces jointes

  • CelNV_test.xlsm
    28.6 KB · Affichages: 4
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Bonjour Lionel, job75, WTF,

* tu avais une donnée cachée en A2 ! 😜

* clique sur le bouton « atteindre » ➯ ça va en A38 ! 😭 loupé ? non, car c'est normal !

* clique sur « Epurage » ➯ ça fait le nettoyage correct (même si tu ne le vois pas)

* clique de nouveau sur « atteindre » ➯ ça va en A34 ! 😊 (eh oui, car l'épurage a été fait !)

code VBA de Module1 :

VB:
Option Explicit

Sub Epurage()
  Dim dlg&, lig&: Application.ScreenUpdating = 0
  dlg = Cells(Rows.Count, "A").End(xlUp).Row
  For lig = 2 To dlg
    With Cells(lig, 1)
      If .Value = "" Then .Value = Empty
    End With
  Next lig
End Sub

Sub test()
  Cells(Rows.Count, "A").End(xlUp)(1).Select
End Sub

Sub test2()
  Application.ScreenUpdating = 0
  Worksheets("modèle_cellules").Columns("A").Copy Worksheets("test").Columns("A")
End Sub

soan
 

Pièces jointes

  • CelNV_test.xlsm
    24.6 KB · Affichages: 3

job75

XLDnaute Barbatruc
Au post #10 l'ami soan présente la macro Epurage qui ne tient pas du tout la route.

On sait en effet que traiter les cellules une par une prend énormément de temps.

Testez le fichier joint avec cette macro qui utilise le filtre automatique :
VB:
Sub Epurage_avec_filtre()
Dim t, x$
t = Timer
Application.ScreenUpdating = False
With [A:A]
    x = .Cells(1).Formula
    .AutoFilter 1, ""
    .SpecialCells(xlCellTypeVisible) = Empty
    .AutoFilter
    .Cells(1) = x
End With
x = Format(Timer - t, "0.00 \sec")
[F10] = x
MsgBox x
End Sub
 

Pièces jointes

  • Epurage(1).xlsm
    345 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 949
Membres
101 851
dernier inscrit
vaiata