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

VBA compter cellules au demarrage

  • Initiateur de la discussion Initiateur de la discussion flstyle
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

flstyle

Guest
Bonjour a tous,

J'ai deja posé la question sur une conversation mais je trouve ca interressant d'n faire un sujet.
Ceci pourrai mettre fortement utilie.

Voila j'ai un tableau où je voudrais qu'il y est un message qui s'affiche (Msgbox) qui m'indique, à l'ouverture de ma classeur, le nombre de cellule de la colonne G (a partir de la 3eme ligne à la 3000eme) qui rempli les condition suivante:
si(et(G<>F;G<>"")

Voila. Je vous remercie par avance sur vos réponses, que je sais toujours bonnes 😉

ps: je vous joins un ptit fichier pour illustrer.
 

Pièces jointes

Re : VBA compter cellules au demarrage

Bonjour, flstyle, le Forum,

Comme ceci (code dans ThisWorkbook) ?

Code:
Option Explicit
Private Sub Workbook_Open()
    Dim i As Long, compteur As Double
    With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
    Sheets("Feuil1").Activate ' nom onglet adapter
    compteur = 0
    For i = Cells(Rows.Count, "f").End(xlUp).Row To 3 Step -1
        If Range("f" & i) <> Range("g" & i) And Range("g" & i) <> "" Then compteur = compteur + 1
    Next i
    MsgBox compteur
    With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
End Sub

A bientôt 🙂
 
Re : VBA compter cellules au demarrage

Mais c'est genial !!
Il y aurait aussi une possibilité de mettre un message avant, comme "vous avez X nombre de fautes "

Merci
 
Re : VBA compter cellules au demarrage

Bonsoir à tous, 00 😉

Une autre façon de faire (sans boucle)
Code:
Sub NombreErreurs()
Application.ScreenUpdating = False
Dim rng As Range: Set rng = Range("H3:H3000")
rng = "=IF(AND(RC[-2]<>RC[-1],RC[-1]<>""""),""$"",0)"
MsgBox "Vous avez " & Application.CountIf(rng, "$") & " faute(s).", vbCritical
Columns(8).ClearContents
Application.ScreenUpdating = True
End Sub
 
Dernière édition:
Re : VBA compter cellules au demarrage

salut

surtout pour le plaisir de croiser mes chers collègues 😀😀
Bonsoir à tous, 00 😉
Une autre façon de faire (sans boucle)...

et sans "s" superflus 😛
Code:
Sub Oups()
  Dim R As Range, n As Long
  Set R = Range("H3:H" & [A6500].End(xlUp).Row): R.FormulaLocal = "=(F3=G3)+(G3<>0)"
  n = Application.CountIf(R, 1)
  MsgBox "Vous avez " & n & " faute" & IIf(n < 2, "", "s"), , "": R.Clear
End Sub
 
Re : VBA compter cellules au demarrage


Encore mieux, sans IIf !

Code:
MsgBox "Vous avez " & n & " faute" & Chr(32 + 83 * Sgn(n - 1))

Bon j'avoue, inutile !
Salut à tous 😛
 
Re : VBA compter cellules au demarrage

Bonjour à tous,

Alors les ami(e)s vous avez oublié la fonction SOMMEPROD :

Code:
Private Sub Workbook_Open()
With Sheets("Feuil1").[G3:G3000] 'plage adaptable
MsgBox "Vous avez " & _
Evaluate("SUM((" & .Columns(0).Address & "<>" & .Address & ")*(" & .Address & "<>""""))") _
& " faute(s) !"
End With
End Sub
En VBA on peut remplacer SUMPRODUCT par SUM...

A+
 
Re : VBA compter cellules au demarrage

Re,

Pour info l'évaluation de la formule est rapide, sur Win 7 - Excel 2010 :

[G3:G3000] durée < 0,01 seconde

[G3:G100000] durée = 0,11 seconde

[G3:G1000000] durée = 0,86 seconde.

Pour les mesurer j'ai rempli les colonnes F et G avec la formule =ALEA().

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

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