Pb code sumif

Signaler
Messages postés
4
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
27 novembre 2009
-
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
-
Bonjour,

J'ai un pb avec mon code ci-dessous. Je veux faire une boucle avec la foction sumif.


x = Sheets("Sales_Order_with_Project_Number").Cells(65535, 4).End(xlUp)(1).Row

For i = 2 To x

Worksheets("Summary_Project_Num_List").Cells(i, 18).Formula = "=SUMIF(Sales_Order_with_Project_Number!$D$6:$D$" & x & ";Summary_Project_Num_List!a" & i & ";Sales_Order_with_Project_Number!$X$6:$X$" & x & ")"
Next

Merci de votre aide

7 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
78
Salut
Et quel est ton problème ?
Qu'est ce qui ne fonctionne pas ?
As-tu une erreur ? laquelle ?
As-tu tapé à la main cette formule avant de voiloir la paramétrer ?
Quel est le texte de ta Formula après que ton programme ait tourné ?

Rappel : Quand tu insères un chiffre dans une chaine, la conversion chiffre-texte est implicite (c'est le compilateur qui s'en occupe) mais ce chiffre converti présente alors un espace devant le chiffre, exemple :
si x = 32 : "$D$" & x & "toto" donnera "$D$ 32toto" ce qui peut poser problème dans ce genre de fonction !
Ecrit toi même la convertion pour ne pas avoir de surprise : Utilise CStr(x) à la place de x pour ne pas avoir d'espace.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonsoir,

As-tu lu au moins ma réponse sur ta 1ere question ?

Pour ton code, je reste dubitatif. Tu écris 2 fois une formule dans la même cellule ! La première formule sera remplacée par la deuxième ?!
Qu'est-ce que tu veux faire vraiment ?

Amicalement,
Us.
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
oupsss... tu pourras me lire qu'à ta prochaine connexion...

Us.
Messages postés
4
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
27 novembre 2009

En fait j'ai un dossier avec plusieurs onglets et je voudrais faire la somme de mes valeurs se trouvant dans l'onglet "Sales_Order_with_Project_Number" sur une plage qui est variable (c'est pour cela que je le defini de D6 jusqu'à la fin du dernier enregistrement. Je veux mettre le resultat dans l'onglet "Summary_Project_Num_List".
ex mon "Projet K" qui est ds l'onglet "Summary_Project_Num_List", je le rcherche dans l'onglet "Sales_Order_with_Project_Number" (colonne D) et je somme les valeurs correspondantes (colonne X.

j'espere que je suis clair!
Merci d'avance
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Oui, un peu près du moins... et je vois pas trop l'intérêt alors de passer par du VBA... Ce qui tu décris se résume par l'emploi de la fonction SOMME.SI du tableur et une seule fois...

En formule du tableur, cela vaudrait donc à :
=SOMME.SI(Sales_Order_with_Project_Number!D:D;"=projet k";Sales_Order_with_Project_Number!X:X)

en mettant cette dernière dans Summary_Project_Num_List

Amicalement,
Us.
Messages postés
4
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
27 novembre 2009

Oui Us, mais mon probleme c'est mes donnees qui sont ds l'onglet "Sales_Order_with_Project_Number" sont le resultat d'une importation de données et donc le nombre de lignes va continuer d'augmenter. En plus en mettant directement la sommesi dans les cellules, le temps des calculs est long.

Merci!
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonjour,

En mettant "D:D" ou "X:X", la somme se fait sur toute la colonne quelle que soit le nombre de ligne... Excel se débrouille tout seul comme un grand... Le temps de calcul est instantané ou quasi-instantané... Essayes donc la formule, et tu verras...

Ensuite, rien n'empêche de retranscrire en VBA en macro, cette formule... mais il faudrait que cela apporte quelque chose de plus que le tableur...

Amicalement,
Us.