• Initiateur de la discussion Initiateur de la discussion kheldar
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

kheldar

XLDnaute Nouveau
Bonjour au forum,

Afin de finaliser un de mes projets, je souhaiterais obtenir de l'aide sur un problème qui me prend la tête depuis ce matin.

Grâce à une macro et une certaine mise en forme de cellules, j'effectue une somme produit de 2 plages de ces cellules, seulement la longueur de la plage n'est pas unitaire.
Je m'explique, le nombre de lignes peut varier dans la formule suivante:
ACTIVECELL.FORMULAR1C1="=IF(COUNT(R[1]C:R[17]C)<>0,SUMPRODUCT(R[1]C:R[17],R[1]C[4]:R[17]C[4],""-"")

Dans la partie apparaissant en rouge, je souhaiterais pouvoir intégrer une variable me permettant ainsi d'effectuer les sommes produit quelque soit le nombre de lignes en compte.

Merci d'avance pour votre aide en espérant avoir été assez explicite dans ma demande.
Cordialement.
 
Re : Sommeproduit en vba

Bonjour kheldar, le forum,
Il te suffit de nommer tes plages à sommer de façon dynamique avec la fonction DECALER et de modifier ta macro en remplaçant les adresses de cellules par le nom de tes plages nommées.
Avec une recherche sur le forum, tu devrais pouvoir y arriver tout seul sinon postes un fichier et on t'aidera.
Bonne journée.

Oups : belle collision à 3. Salut Dan et JC.
Dis donc kheldar, 3 réponses en moins de 2 minutes : pas mal, hein ?
 
Dernière édition:
Re : Sommeproduit en vba

Bonjour à tous,

Souvent en utilisant SOMMEPROD, les plages sont limités par des références absolues, par exemple ici essayer :

Code:
ActiveCell.FormulaR1C1 = "=IF(COUNT(R[1]C:[COLOR="Red"]R1000[/COLOR]C)<>0,SUMPRODUCT(R[1]C:[COLOR="Red"]R1000[/COLOR],R[1]C[4]:[COLOR="Red"]R1000[/COLOR]C[4]),""-"")"

A+
 
Re : Sommeproduit en vba

Bonjour et déjà merci pour ces premières réponses, mais le problème reste entier.

Voici un fichier, une partie du fichier initiale qui pourra certainement vous aider à comprendre ce que je recherche.

En fait, par une macro, je peux insérer à l'intérieur des familles de produits des nouveaux articles. lorsque j'insère une ligne au début ou au milieu de la famille, il n'y a aucun problème, la formule de la casse et de la commande se recalcule en prenant en compte le décalage créé par l'insertion*.
Seulement lorsque j'insère une nouvelle ligne à la fin d'une famille, c'est à dire à la dernière ligne afin la prochaine famille, ces formules casse et commande ne prennent en compte la nouvelle ligne insérée.

Alors soit vous avez une solution pour moi par macro, soit il est possible de réactualiser ces formules casse et commande automatiquement.

Précision : j'utilise Excel2007 et je ne souhaite pas modifier mon tableau par des ajouts de colonnes par exemple si posible

En espérant cette fois-ci avoir été plus clair, merci d'avance pour vos solutions.
Cordialement.
 

Pièces jointes

Re : Sommeproduit en vba

Bonjour kheldar, le fil,

"En fait, par une macro, je peux insérer à l'intérieur des familles de produits des nouveaux articles. lorsque j'insère une ligne au début ou au milieu de la famille, il n'y a aucun problème"

Elle est où ta macro dans le fichier joint ?

Pour ta version d'Excel, plutôt que d'écrire en gros caractères, précise là dans ton Profil, ce sera fait une fois pour toutes.....

Bon dimanche.

Jean-Pierre
 
Re : Sommeproduit en vba

Re,
kheldar : quand tu insères une ligne entre la ligne 4 et la ligne 18 (qui sont tes lignes de départ), les formules en colonne F et G se mettent à jour.


Bon après-midi.

Oups, je n'avais pas bien lu : désolé. Je viens de comprendre ton problème. Je regarde s'il y a une parade hormis de mettre ta ligne Total actuellement en ligne 3 à la fin de ta dernière ligne de la famille.
 
Dernière édition:
Re : Sommeproduit en vba

Re,

A mon avis, pas besoin de macro.

1) Onglet Formules, groupe Noms définis et définir les noms :

PlageC par la formule :

=INDIRECT("C"&LIGNE()+1&":C10000")

PlageF PlageG PlageI par les 3 formules similaires :

=INDIRECT("F"&LIGNE()+1&":F"&LIGNE()-1+EQUIV(VRAI;ESTVIDE(PlageC);0))

=INDIRECT("G"&LIGNE()+1&":G"&LIGNE()-1+EQUIV(VRAI;ESTVIDE(PlageC);0))

=INDIRECT("I"&LIGNE()+1&":I"&LIGNE()-1+EQUIV(VRAI;ESTVIDE(PlageC);0))

2) Ensuite entrer en cellules F3 et G3 les formules :

=SI(NB(PlageF)<>0;SOMMEPROD(PlageF;PlageI);"-")

=SI(NB(PlageG)<>0;SOMMEPROD(PlageG;PlageI);"-")

3) Copier la plage F3:G3 vers F19:G19 et F29:G29

Fichier joint.

Edit 1 : le principe est de définir les plages à prendre en compte en recherchant (avec EQUIV) la 1ère cellule vide qui suit en colonne C.

Edit 2 : pour entrer les formules des noms, les copier par Ctrl+C et les coller par Ctrl+V dans la boîte de dialogue.

Edit 3 : on peut bien sûr simplifier les 3 formules en définissant le nom derligne par :

=LIGNE()-1+EQUIV(VRAI;ESTVIDE(PlageC);0)

A+
 

Pièces jointes

Dernière édition:
Re : Sommeproduit en vba

Bonjour,

Premièrement : merci à toutes personnes qui ont répondu à mon appel, vraiment sympa tout ça

Deuxièmement : job75 me donne une solution sans macro, c'est parfait, j'ai fait le test avec le fichier Excel qu'il a renvoyé, seulement je ne comprends pas comment définir les noms qu'il a fournit.
Désolé, je suis peut être neuneu mais je n'ai pas compris comment on définit les noms.
Serait-il possible de m'expliquer un peu plus cette action de nommer des plages ?


Merci encore au forum.
Cordialement.
 
Re : Sommeproduit en vba

Re,

Désolé, je suis peut être neuneu mais je n'ai pas compris comment on définit les noms.

Les 4 noms ne définissent pas des plages directement, ils définissent 4 formules, qui elles déterminent 4 plages.

Copiez la formule, et comme je l'ai dit, pour Excel 2007, onglet Formules, groupe Noms définis ==> Gestionnaire de noms.

Dans la boîte de dialogue en haut vous tapez le nom, et plus bas vous collez (Ctrl+V) la formule.

A+
 
Re : Sommeproduit en vba

Bonjour au forum.

Merci à toutes les personnes qui m'ont répondues.

Mon problème est résolu grâce aux infos que vous m'avez fournies en particulier les formules de job75.

Je constate que j'ai vraiment encore énormément à apprendre pour utiliser Excel au mieux de ses possibilités.

Merci encore et à bientôt.
Cordialement.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
176
Réponses
4
Affichages
146
Retour