VBA:Somme plage de cellule avec condition

Provence Vintage

XLDnaute Occasionnel
Bonjour,

Je cherche le bon code VBA qui me permette d'additionner toutes les lignes d'une colonne comprenant la valeur "X"

Qui a une idée!?

Mon code ne fonctionne pas!:

#Private Sub UserForm_Initialize()

Me.Height = Application.Height: Me.Width = Application.Width


With Sheets("bdd vendeurs") 'prend en compte l'onglet "Data"
For Each cel In .Range("P4:p" & .Range("P65536").End(xlUp).Row) 'boucle sur toute les cellules éditée de la colonne AL
If cel.Value = "X" Then
Label6.Caption = Application.Sum.Range("P4:p65536")
End If 'fin de la condition
Next 'prochaine cellule de la boucle
End With '


End Sub#

Merci et bonne journée
 

Jurassix

XLDnaute Nouveau
Re : VBA:Somme plage de cellule avec condition

Tu peux le faire sans VBA : créé une colonne que tu pourra masquer avec comme formule :
Colonne C : colonne avec ta valeur "X

Code:
=SI(C6=X;X;0)

Reste plus qu'a additionner toute la colonne masquée.

Sinon, tu peux télécharger Morefunc (Ce lien n'existe plus), il y a une fonction SOMMESI, qui te fait la somme d'une colonne par exemple avec une condition.

Si tu as absolument besoin de le faire en VBA, je laisse les autres te conseiller :D
 

job75

XLDnaute Barbatruc
Re : VBA:Somme plage de cellule avec condition

Bonjour,

Comme vous avez indiqué :

'boucle sur toute les cellules éditée de la colonne AL

Code:
With Sheets("bdd vendeurs")
Label6.Caption = Application.SumIf(.Range("[COLOR="red"]AL[/COLOR]4:[COLOR="red"]AL[/COLOR]" & .Range("P65536").End(xlUp).Row), "X", .Range("P4:P65536"))
End With

Edit : plus simple je pense :

Code:
Label6.Caption = Application.SumIf(.Range("[COLOR="red"]AL[/COLOR]4:[COLOR="red"]AL[/COLOR]65536"), "X", .Range("P4:P65536"))

Voire même :

Code:
Label6.Caption = Application.SumIf(.Columns("[COLOR="red"]AL[/COLOR]"), "X", .Columns("P"))

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : VBA:Somme plage de cellule avec condition

Re,

Si je comprends bien Provence Vintage, ça s'appelle COMPTER les "X" :rolleyes:

Alors s'ils sont bien colonne AL :

Code:
Label6.Caption = Application.CountIf(Sheets("bdd vendeurs").Columns("AL"), "X")

Bloc With inutile of course.

A+
 

Provence Vintage

XLDnaute Occasionnel
Re : VBA:Somme plage de cellule avec condition

Job, le Fil,

Bonjour,
Job merci pour tes explications!
Comment sans faire le "Chadoc" y rajouter une condition de ce type:

#With Sheets("bdd acheteurs") 'prend en compte l'onglet "bdd acheteur"
For Each cel In .Range("B4:B" & .Range("B65536").End(xlUp).Row) 'boucle sur toute les cellules éditée de la colonne G
On Error GoTo suite 'gestion des erreurs (si la cellule n'est pas convertible en date, passe à la cellule suivante via l'étiquette "suite")

If CDate(cel.Value) >= Date - 7 Then #

Soit: pour toutes les dates de la semaine passée trouvées, calculer le nombre de X correspondant en colonne P!?

J'ai essayé mais ....
Merci
 

job75

XLDnaute Barbatruc
Re : VBA:Somme plage de cellule avec condition

Bonjour,

Pas besoin de contrôle d'erreur a priori.

Voir cette macro qui COMPTE les fois où les 3 conditions sont VRAI :

Code:
Sub Compte()
Dim cel As Range, n As Byte
For Each cel In Sheets("bdd acheteurs").Range("B4:B" & Sheets("bdd acheteurs").Range("B65536").End(xlUp).Row)
If [COLOR="Red"]cel >= Date - 7 And cel < Date And cel.Offset(, 14) = "X"[/COLOR] Then n = n + 1
Next
MsgBox n
End Sub

Fichier joint, pour visualiser (et pour le fun) j'y ai mis 2 MFC.

A+
 

Pièces jointes

  • Classeur1.xls
    38 KB · Affichages: 215
  • Classeur1.xls
    38 KB · Affichages: 219
  • Classeur1.xls
    38 KB · Affichages: 243
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 632
Messages
2 090 337
Membres
104 507
dernier inscrit
mag7748