|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 85 ![]() |
bonjour à tous,
je fouille un peu partout mais en vain une fonction existante ou à composer pour réaliser les instructions suivantes: Rechercher dans une colonne ( exemple : B) toutes les cellules qui ont une valeur prédéfinies ( pas de msgbox quoi ) , ex: 4014, récuperer les coordonnées des lignes, et sommer les valeurs contenues dans ces meme lignes mais en colonne D par exemple, Je me doute qu'une fonction ne fait pas toute cela, mais je cherche si il existe une fonction pour la recherche, et egalement une qui recherche et qui somme tout sa en une seule fonction. ou autres... merci beaucoup de votre aide |
|
|
00
|
|
|
#2 | |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2008 Messages : 5 848 ![]() |
Citation:
__________________
Cordialement. |
|
|
|
20
|
|
|
#3 |
|
Invité de passage
![]() Contrôleur de gestion Inscription : novembre 2011 Messages : 1 ![]() |
Sommprod peut aussi marcher
|
|
|
01
|
|
|
#4 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 872 ![]() |
Bonjour Bueno3. Je ne pense pas que SommeProd puisse faire ce que kyros21 souhaite. A part en se compliquant la vie en rajoutant une colonne qui fait des 0 ou des 1 si la valeur en B est 4014. Ou en mettant un IF et en faisant une formule matricielle.
Ce que suggérait Mercatog est exactement ce qu'il voulait faire. Ou alors, il y a peut-être une utilisation de SommeProd que je ne connais pas ? Je serais ravi de l'apprendre dans ce cas. A+ |
|
|
00
|
|
|
#5 |
![]() ![]() |
oui l'on peu avec les deux .. les valeurs à testé de b1..b25 , les valeurs à sommer D1..D25
avec Somme.SI : Avec sommeprod
__________________
page à bbil : dernières entrées : Débuter en VB6 Mes contributions en téléchargement Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 85 ![]() |
merci à tous pour votre aide, mais je viens de tester le Somme.Si et il semble correspondre parfaitement à ce que je cherche,
autant que le Somme.prod d'ailleur. merci beaucoup de votre aide |
|
|
00
|
|
|
#7 | ||
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 85 ![]() |
bonjour, maintenant que j'ai trouvé la fonction, la transcrire en VBA n'est pas si facile,
en fait ma fonction doit regarder dans la colonne Q ( en excluant Q2) les lignes qui ont les valeurs 4014, et sommer les valeurs contenues dans ces memes lignes mais dans la colonne G ( en excluant G2), tout sa sur une feuille qui change de nom et d'index, mais dont l'index est contenue dans une variable nommé : variable 3. sachant que je veux insérer cette formule dans une cellule d'une feuille nommé Top20 répartition h MO je travaille sur la formulation, mais j'avou que je bloque un petit peu ... voyez vous l'erreur que je fais ? Code :
|
||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 872 ![]() |
Désolé pour le SOMMEPROD, ça ne me semblait pas le plus logique.
Pour ton VBA, je n'ai pas regardé en détail, mais première remarque, dans ta formule, tu rentres en dur variable3, remplace Code :
"=SUMIF(variable3!Q:Q,4014,variable3!G:G)"
Code :
"=SUMIF(" & variable3 & "!Q:Q,4014," & variable3 & "!G:G)" |
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 85 ![]() |
en faisance ceci, il cherche en fait un fichier nommé "Variable 3" et non pas une feuille de calcul ,
comment faire? pourquoi ? c'est plus simple en vba que plutot faire appel à une formule existante? merci |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 872 ![]() |
Normalement, dans le code que tu as fourni, variable3 vaut 8. Donc il écrit dans la cellule H4 de la feuille "Top20 répartition h MO" la formule suivante"
Qui ne doit pas fonctionner si tu n'as pas de feuille qui s'appelle "8" Je suppose que le code que tu as donné n'est pas celui que tu utilises (tu ne te sers pas de la moitié des variables et les initialisations sont bizarres), donc peut-être que l'erreur vient d'autre part. Si 8 n'est pas le nom de la feuille mais son index (dans ce cas, ce n'est pas très propre, il suffit que quelqu'un déplace une feuille et ça ne marche plus), utilise à la place de variable3 : |
|
|
00
|
|
|
#11 | ||
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 85 ![]() |
c'est effectivement son index, et oui je suis d'accord les feuilles peuvent etre deplacées, mais en l'occurence, c'est le but, car ces feuilles sont utilisé juste pour extraire les données via la formule somme.Si, et quelques autres dans ma macro, et ensuite elle peuvent etre supprimé et remplacé par d'autre, donc je pense que cela suffit pour mon utilisation.
En fait ma macro, possede 3 feuilles fixes, qui ne bouge jamais, et ensuite les utilisateurs ajoute à la suite ( donc toujours un index suppérieur à 3) des feuilles qui contiennent des données à extraire, que la macro analyse y récupere ce qui l'interesse et voila. la seule vérif qu'elle effectue, est que ces données n'existe pas déja dans les feuilles fixes. voici la macro au complet, avec toutes les variables utilisées ( ou casiment car elle n'est pas finie): Code :
|
||
|
|
00
|
|
|
#12 | ||
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 872 ![]() |
J'ai fait quelques modifs en espérant que j'ai bien compris ce que tu voulais faire. Ca a l'air de marcher comme il faut chez moi.
Code :
|
||
|
|
00
|
|
|
#13 |
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 85 ![]() |
merci beaucoup pour cette simplification de macro
il me reste un dernier petit souci sur cette formule, la formule somme.si ne donne pas d'erreur dans le vba, mais sur la feuille de calcul elle afiche : #NOM?, mais si je rentre dans la formule et que j'appui sur entree, et bien la , la bonne valeur s'affiche, y a-t-il quelques choses que j'ai loupé ? merci |
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 872 ![]() |
Essaie de remplacer
par |
|
|
00
|
|
|
#15 |
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 85 ![]() |
un grand merci sa marche nikel,
derniere question, pourquoi une ligne comme celle ci, me renvoie la variable 2 brute dans la formule et ne va pas chercher sa valeur: Code :
Sheets("Top20 répartition h MO").Cells(18, variable3).Formula = "=SUM(Range(Cells(4, variable3):Cells(17, variable3)))" |
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 872 ![]() |
Comme la dernière fois, tu mélanges du code VBA et des formules Excel. Tout ce qui est entre guillemets va être mis dans la cellule sans interprétation et Excel ne connait pas Range ou Cell. Essaie :
Code :
"=SUM(" & Range(Cells(4, variable3), Cells(17, variable3)).Address & ")" |
|
|
00
|
|
|
#17 | ||
|
Invité régulier
![]() Inscription : novembre 2011 Messages : 85 ![]() |
ok donc pour cela, on ajoute & et " pour cibler ce qui est a interpréter, et on ajoute .Adress à la fin du range?
j'avais pas tilté et comme je suis un peu dur de la feuille, pour une formule comme celle ci?quelle est la syntaxe a adopter? Code :
|
||
|
|
00
|
|
|
#18 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 872 ![]() |
Soit
Code :
"=PRODUCT(" & Cells(4, 6).Address & ":" & Cells(4, variable3).Address & ")" Code :
"=PRODUCT(" & Range(Cells(4, 6),Cells(4, variable3)).Address & ")" |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com