Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Usine à gaz

XLDnaute Barbatruc
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
 

soan

XLDnaute Barbatruc
Inactif
Bonjour WTF,

tu as écrit : « est-ce que tu ne peux pas tout simplement les sélectionner et faire SUPPR ? »

mais c'est kek' j'ai fait dans mon fichier joint d'mon post #3 !

fallait pas dévoiler mon secret !

soan
 

Usine à gaz

XLDnaute Barbatruc
Bonjour Gérard, soan, WTF,
Merci à vous pour m'avoir répondu

Effectivement, Je viens de voir que si je passe les cellules "apparemment vides" de ma colonne A; ma formule fonctionne.
@Gérard : Merci car SOMMEPROD fonctionne sans passer pas un effacement des celulles "apparemment vides"
lionel
 

Usine à gaz

XLDnaute Barbatruc
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 !
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:

job75

XLDnaute Barbatruc
Lionel je te laisse méditer sur ce MAX :
VB:
Sub test()
Range("A" & [MAX((A1:A1000<>"")*ROW(A1:A1000))]).Select
End Sub
 

Pièces jointes

  • CelNV_test(1).xlsm
    28.6 KB · Affichages: 3

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…