Formules >>>>> Code VBA

Bonjour à tous,

je souhaite demander votre aide svp

J'aimerai remplacer mes formule par du code vba, voici mes formules en dessous, et je vous remercie infiniment.

imad.

formule 1 : =NB.SI.ENS('TRVX FINIS'!$J:$J;"am";'TRVX FINIS'!$X:$X;$AI$1;'TRVX FINIS'!$M:$M;"raff spéciale";'TRVX FINIS'!$AA:$AA;$AI$2)

formule 2 : =NB.SI.ENS('TRVX FINIS'!J:J;"am";'TRVX FINIS'!X:X;$AI$1;'TRVX FINIS'!M:M;"at. esters";'TRVX FINIS'!AA:AA;$AI$2)+NB.SI.ENS('TRVX FINIS'!J:J;"am";'TRVX FINIS'!X:X;$AI$1;'TRVX FINIS'!M:M;"at. fluides";'TRVX FINIS'!AA:AA;$AI$2)+NB.SI.ENS('TRVX FINIS'!J:J;"am";'TRVX FINIS'!X:X;$AI$1;'TRVX FINIS'!M:M;"usine 1 ";'TRVX FINIS'!AA:AA;$AI$2)+NB.SI.ENS('TRVX FINIS'!J:J;"am";'TRVX FINIS'!X:X;$AI$1;'TRVX FINIS'!M:M;"usine 1&2";'TRVX FINIS'!AA:AA;$AI$2)+NB.SI.ENS('TRVX FINIS'!J:J;"am";'TRVX FINIS'!X:X;$AI$1;'TRVX FINIS'!M:M;"vapeur";'TRVX FINIS'!AA:AA;$AI$2)+NB.SI.ENS('TRVX FINIS'!J:J;"am";'TRVX FINIS'!X:X;$AI$1;'TRVX FINIS'!M:M;"pastillage";'TRVX FINIS'!AA:AA;$AI$2)+NB.SI.ENS('TRVX FINIS'!J:J;"am";'TRVX FINIS'!X:X;$AI$1;'TRVX FINIS'!M:M;"bureaux";'TRVX FINIS'!AA:AA;$AI$2)+NB.SI.ENS('TRVX FINIS'!J:J;"am";'TRVX FINIS'!X:X;$AI$1;'TRVX FINIS'!M:M;"chateau";'TRVX FINIS'!AA:AA;$AI$2)+NB.SI.ENS('TRVX FINIS'!J:J;"am";'TRVX FINIS'!X:X;$AI$1;'TRVX FINIS'!M:M;"entretien";'TRVX FINIS'!AA:AA;$AI$2)+NB.SI.ENS('TRVX FINIS'!J:J;"am";'TRVX FINIS'!X:X;$AI$1;'TRVX FINIS'!M:M;"force";'TRVX FINIS'!AA:AA;$AI$2)+NB.SI.ENS('TRVX FINIS'!J:J;"am";'TRVX FINIS'!X:X;$AI$1;'TRVX FINIS'!M:M;"laboratoire";'TRVX FINIS'!AA:AA;$AI$2)+NB.SI.ENS('TRVX FINIS'!J:J;"am";'TRVX FINIS'!X:X;$AI$1;'TRVX FINIS'!M:M;"vestiaires";'TRVX FINIS'!AA:AA;$AI$2)

Saut Imad

les critères sont t-il changeable ou ils restent tjrs constants ?

salut amir

les critères sont toujours les memes

'TRVX FINIS' c'est un onglet

Ce sont deux manières : Une première procédure qui est lancée par un bouton (par exemple) et l’autre est lancée par un événement

Sub NBSIENS()
tbl = Array("at. esters", "at. fluides", "usine 1 ", "usine 1&2", "vapeur", "pastillage", "bureaux", "chateau", "entretien", "force", "laboratoire", "vestiaires")
Set TRVXFS = Sheets("TRVX FINIS")
'Set Fdtn = Sheets("feuille de destination")
With TRVXFS
n = 0
For i = 1 To 20

      For j = 0 To UBound(tbl)
      rchV = "am" & Range("AI1") & tbl(j) & Range("AI2")
      If rchV = .Range("J" & i) & .Range("X" & i) & .Range("M" & i) & .Range("AA" & i) Then
         n = n + 1
      End If
      Next
Next
End With
Range("A1").Value = n ' ICI est juste un exemple tu peux changer la reference qui tu convient
End Sub

OU :

Sub NBSIENS02()
Set TRVXFS = Sheets("TRVX FINIS")
tbl = Array("at. esters", "at. fluides", "usine 1 ", "usine 1&2", "vapeur", "pastillage", "bureaux", "chateau", "entretien", "force", "laboratoire", "vestiaires")
With TRVXFS
rslt = 0
For j = 0 To UBound(tbl)
n = Application.CountIfs(.Columns("J:J"), "am", .Columns("X:X"), _
Range("AI1"), .Columns("M:M"), tbl(j), .Columns("AA:AA"), Range("AI2"))
rslt = rslt + n
Next
End With
Range("A1").Value = rslt ' ICI "A1" c'est juste un exemple tu peux changer la reference qui tu convient
End Sub

pour l'evenemnt de Worksheet_Change :
Private Sub Worksheet_Change(ByVal Target As Range)
a = Target.Address(0, 0)
If Not (a Like "J#" Or a Like "X#" Or a Like "M#" Or a Like "AA#" Or a Like "AI#") Then Exit Sub
tbl = Array("at. esters", "at. fluides", "usine 1 ", "usine 1&2", "vapeur", "pastillage", "bureaux", "chateau", "entretien", "force", "laboratoire", "vestiaires")
Set TRVXFS = Sheets("TRVX FINIS")
'Set Fdtn = Sheets("feuille de destination")

With TRVXFS
n = 0
For i = 1 To 20

      For j = 0 To UBound(tbl)
      rchV = "am" & Range("AI1") & tbl(j) & Range("AI2")
      If rchV = .Range("J" & i) & .Range("X" & i) & .Range("M" & i) & .Range("AA" & i) Then
         n = n + 1
      End If
      Next
Next
End With
Range("A1").Value = rslt ' ICI "A1" c'est juste un exemple tu peux changer la reference qui tu convient
End Sub

OU :

Private Sub Worksheet_Change(ByVal Target As Range)
a = Target.Address(0, 0)
If Not (a Like "J#" Or a Like "X#" Or a Like "M#" Or a Like "AA#" Or a Like "AI#") Then Exit Sub
Set TRVXFS = Sheets("TRVX FINIS")
tbl = Array("at. esters", "at. fluides", "usine 1 ", "usine 1&2", "vapeur", "pastillage", "bureaux", "chateau", "entretien", "force", "laboratoire", "vestiaires")
With TRVXFS
rslt = 0
For j = 0 To UBound(tbl)
n = Application.CountIfs(.Columns("J:J"), "am", .Columns("X:X"), _
Range("AI1"), .Columns("M:M"), tbl(j), .Columns("AA:AA"), Range("AI2"))
rslt = rslt + n
Next
End With
Range("A1").Value = rslt ' ICI "A1" c'est juste un exemple tu peux changer la reference qui tu convient

End Sub

slt amir

je te remercie énormément pour ton aide

dis moi comment je veux rajouter d'autres critère apart "am"

je veux rajouter "sp" "ec" .....

Sub NBSIENS02()
Set TRVXFS = Sheets("TRVX FINIS")
tbl = Array("at. esters", "at. fluides", "usine 1 ", "usine 1&2", "vapeur", "pastillage", "bureaux", "chateau", "entretien", "force", "laboratoire", "vestiaires")
With TRVXFS
rslt = 0
For j = 0 To UBound(tbl)

'je veux compter d'autres critères aussi : am , sp, ec, ip .....

n = Application.CountIfs(.Columns("J:J"), "am", .Columns("X:X"), _
Range("AI1"), .Columns("M:M"), tbl(j), .Columns("AA:AA"), Range("AI2"))
rslt = rslt + n

Next
End With
Range("A1").Value = rslt ' ICI "A1" c'est juste un exemple tu peux changer la reference qui tu convient
End Sub

tu veux ajouter (am , sp, ec, ip)et les autres a la place de "am"

Si oui :

noter que am est combiner avec la liste de tableu tbl (sur le code) veut dire , pour chaque valeur de tbl on compte ,; alors moi je ne comprends pas comment tu veux ajouter les critères (am , sp, ec, ip)

oui amir,

en faite même les autres critères "ec" "sp" "ip" seront combiné avec la table tbl

par autre façon :

"am" est pour la colonne "J:J" et les autres critères "ec" "sp" "ip" pour la quelle colonne !?

c'est aussi dans la même colonne

si j ai bien compris essaye ça :

Sub NBSIENS02()
Set TRVXFS = Sheets("TRVX FINIS")
tbl = Array("at. esters", "at. fluides", "usine 1 ", "usine 1&2", "vapeur", "pastillage", _
"bureaux", "chateau", "entretien", "force", "laboratoire", "vestiaires")
am = Array("am", "sp", "ec", "ip")
With TRVXFS
rslt = 0
For i = 0 To UBound(am)
For j = 0 To UBound(tbl)
'je veux compter d'autres critères aussi : am , sp, ec, ip .....
n = Application.CountIfs(.Columns("J:J"), am(i), .Columns("X:X"), _
Range("AI1"), .Columns("M:M"), tbl(j), .Columns("AA:AA"), Range("AI2"))
rslt = rslt + n
Next
Next
End With
Range("A1").Value = rslt ' ICI "A1" c'est juste un exemple tu peux changer la reference qui tu convient
End Sub

tu peux mettre les critères dans des plage de cellules a la place de tableaux !

AMIR,

tu es un génie

je te remercie du fond du cœur

ça fonctionne à merveille

je te remercie encore une fois

merci merci merci merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

OK à bientôt

salut amir

est ce que tu peux m'aider sur un petit projet stp

Rechercher des sujets similaires à "formules code vba"