Excel - Nbre Cellules diff ac 2 conditions
Fermé
Upside Down
-
4 févr. 2011 à 16:42
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 - 7 févr. 2011 à 13:44
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 - 7 févr. 2011 à 13:44
A voir également:
- Excel - Nbre Cellules diff ac 2 conditions
- Formule excel pour additionner plusieurs cellules - Guide
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Fusionner 2 cellules excel - Guide
- Verrouiller cellules excel - Guide
5 réponses
Bonjour,
Tu vas dans outils, macro, visual basic editor.
Tu fais Insertion, Module.
Tu copie et colles cette macro.
Tu appuies sur F8, ca exécutera ton code ligne par ligne.
Mets ta souris régulièrement sur i,j,cpteur,pers et impot, ca te donnera les valeurs au fur et à mesure.
sub nbre
i=2 ' 2e ligne
j=1 '1ere colonne
cpteur = 0
pers = cells(i,j) ' pers est une varaible = à la personne
do while cells(i,j) = pers
impot = cells(i,j+2)
do while cells(i,j+2) = impot
i=i+1
cpteur = cpteur+1
loop
cells(i,j+3) = cpteur
cpteur = 0
if cells(i,j) = "" then
pers = 1
else
cells(i,j) = pers
end if
loop
Tu vas dans outils, macro, visual basic editor.
Tu fais Insertion, Module.
Tu copie et colles cette macro.
Tu appuies sur F8, ca exécutera ton code ligne par ligne.
Mets ta souris régulièrement sur i,j,cpteur,pers et impot, ca te donnera les valeurs au fur et à mesure.
sub nbre
i=2 ' 2e ligne
j=1 '1ere colonne
cpteur = 0
pers = cells(i,j) ' pers est une varaible = à la personne
do while cells(i,j) = pers
impot = cells(i,j+2)
do while cells(i,j+2) = impot
i=i+1
cpteur = cpteur+1
loop
cells(i,j+3) = cpteur
cpteur = 0
if cells(i,j) = "" then
pers = 1
else
cells(i,j) = pers
end if
loop
Bonjour,
je me suis trompée dans le code précédent, il faut le remplacer par :
il faut que tes personnes soient en colonne 1 et salaire en colonne 3
sub x
i=2
j=1
inférieur = 0
entre = 0
superieur = 0
pers = cells(i,j)
do while cells(i,j) = pers
impot = cells(i,j+2)
do while cells(i,j+2) = impot
i=i+1
loop
if cells(i-1,j+2)= "<20"
inferieur = inferieur +1
else
if cells(i-1,j+2) = "20-50"
entre = entre+1
else
superieur = superieur+1
end if
end if
if cells(i,j) = "" then
pers = 1
else
pers = cells(i,j)
end if
loop
a = msgbox("Nombre de personne < 20 : " & inferieur)
a = msgbox("Nombre de personne 20-50" & entre
a = msgbox("Nombre de personne >20 : " & superieur
end sub
je me suis trompée dans le code précédent, il faut le remplacer par :
il faut que tes personnes soient en colonne 1 et salaire en colonne 3
sub x
i=2
j=1
inférieur = 0
entre = 0
superieur = 0
pers = cells(i,j)
do while cells(i,j) = pers
impot = cells(i,j+2)
do while cells(i,j+2) = impot
i=i+1
loop
if cells(i-1,j+2)= "<20"
inferieur = inferieur +1
else
if cells(i-1,j+2) = "20-50"
entre = entre+1
else
superieur = superieur+1
end if
end if
if cells(i,j) = "" then
pers = 1
else
pers = cells(i,j)
end if
loop
a = msgbox("Nombre de personne < 20 : " & inferieur)
a = msgbox("Nombre de personne 20-50" & entre
a = msgbox("Nombre de personne >20 : " & superieur
end sub
Mike-31
Messages postés
18351
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 décembre 2024
5 110
7 févr. 2011 à 11:00
7 févr. 2011 à 11:00
Salut,
On doit pouvoir le faire avec une simple formule, tu dis la première colonne avec l'identité des personnes ( de 1 à 20), l'identité est numérique de 1 à 20 comme tu dis la formule serait pour la plage A2 à C20
=SOMMEPROD(--(ESTNUM($A$2:$A$20))*(B2:B20="A")*(C2:C20="<20"))
par contre si l'identité de la personne est saisie en toute lettre dans ce cas la formule serait pour la plage A2 à C20
=SOMMEPROD(1*ESTTEXTE(A2:A20)*(B2:B20="A")*(C2:C20="<20"))
Mais il y aurait mieux à faire, dans deux cellules tu crées deux listes déroulantes (de validation) pour afficher la classe et la tranche de revenue ce qui te permettrait d'utiliser la formule pour tous les cas.
Si tu veux un exemple fais signe
On doit pouvoir le faire avec une simple formule, tu dis la première colonne avec l'identité des personnes ( de 1 à 20), l'identité est numérique de 1 à 20 comme tu dis la formule serait pour la plage A2 à C20
=SOMMEPROD(--(ESTNUM($A$2:$A$20))*(B2:B20="A")*(C2:C20="<20"))
par contre si l'identité de la personne est saisie en toute lettre dans ce cas la formule serait pour la plage A2 à C20
=SOMMEPROD(1*ESTTEXTE(A2:A20)*(B2:B20="A")*(C2:C20="<20"))
Mais il y aurait mieux à faire, dans deux cellules tu crées deux listes déroulantes (de validation) pour afficher la classe et la tranche de revenue ce qui te permettrait d'utiliser la formule pour tous les cas.
Si tu veux un exemple fais signe
Bonjour,
Merci à tous les deux pour vos propositions qui fonctionnent. Vous m'enlevez une belle épine du pied!
Merci à tous les deux pour vos propositions qui fonctionnent. Vous m'enlevez une belle épine du pied!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mike-31
Messages postés
18351
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 décembre 2024
5 110
7 févr. 2011 à 13:44
7 févr. 2011 à 13:44
Re,
Un exemple avec liste déroulante
https://www.cjoint.com/?0chnSqmrRo8
Un exemple avec liste déroulante
https://www.cjoint.com/?0chnSqmrRo8