OVH Cloud OVH Cloud

[vba] trouve

2 réponses
Avatar
NicolasB
bonjour,

j'aimerais additionner des nombres en fonction des 2 deux=20
crit=E8res
je m'explique

dans une colonne atelier je trouve toutes les cellules=20
correspondant au nom de mon atelier.dans une autre colonne=20
je trouve toutes les cellules correspondant au th=E8me 30.
quand dans les deux colonnes j'ai l'atelier "x" qui=20
correspond au th=E8me 30 je voudrais r=E9cup=E9rer la valeur.
j'ai plusieurs atelier et diff=E9rents th=E8me.

J'utilise la function trouve suivante:

Function Trouveate(cellule as range, atelier as string,=20
col as integer) as offset
'recherche l'atelier d=E9sir=E9
i=3D7
do until cellule(i, col)=3D atelier or cellule(i,col)=3D""
i=3Di+1
loop
'compte le nombre de ligne contenant l'atelier
if cellule(i, col)=3D"" then
trouveate.xx=3D-1
else
trouveoff.xx=3Di
j=3D0
do until cellule(i,col) <> atelier
j=3Dj+1
i=3Di+1
loop
trouveate.nb=3Dj
end if
end function

Merci pour votre aide
j=3D0

2 réponses

Avatar
Nicolas B.
Salut Nicolas,

Si tu veux juste additionner les nombres en fonction de tes deux critères,
tu n'as pas besoin de passer par VBA.

En A1:A9 les ateliers, en B1:B9 les thèmes et en C1:C9 les valeurs :
=sommeprod((a1:a9="x")*(b1:b90)*c1:c9)
ou encore :
=sommeprod((a1:a9&b1:b9="x30")*c1:c9)

Si tu veux récupérer la liste des lignes correspondant à tes critères, tu
peux utiliser un filtre élaboré.

Et si tu veux vraiment passer par une macro, celle-ci copie les lignes
correspondant à tes critères dans les colonnes E, F et G :

Sub Lister()
For i = 1 To [A65536].End(xlUp).Row
If Cells(i, 1) = "x" And Cells(i, 2) = 30 Then
j = j + 1
Range("E" & j & ":G" & j) = Range("A" & i & ":C" & i).Value
End If
Next
End Sub


A+
--
Nicolas B.


bonjour,

j'aimerais additionner des nombres en fonction des 2 deux
critères
je m'explique

dans une colonne atelier je trouve toutes les cellules
correspondant au nom de mon atelier.dans une autre colonne
je trouve toutes les cellules correspondant au thème 30.
quand dans les deux colonnes j'ai l'atelier "x" qui
correspond au thème 30 je voudrais récupérer la valeur.
j'ai plusieurs atelier et différents thème.

J'utilise la function trouve suivante:

Function Trouveate(cellule as range, atelier as string,
col as integer) as offset
'recherche l'atelier désiré
i=7
do until cellule(i, col)= atelier or cellule(i,col)=""
i=i+1
loop
'compte le nombre de ligne contenant l'atelier
if cellule(i, col)="" then
trouveate.xx=-1
else
trouveoff.xx=i
j=0
do until cellule(i,col) <> atelier
j=j+1
i=i+1
loop
trouveate.nb=j
end if
end function

Merci pour votre aide
j=0


Avatar
Ellimac
Bonjour

Pourquoi ne pas utiliser la fonction
=SOMMEPROD((A2:A8="x")*(B2:B80)

Camille