Bundesgericht
Tribunal fédéral
Tribunale federale
Tribunal federal
4A_268/2021
Arrêt du 18 mai 2022
Ire Cour de droit civil
Composition
Mmes les Juges fédérales
Hohl, Présidente, Kiss et May Canellas.
Greffière : Mme Godat Zimmermann.
Participants à la procédure
A.________ SA,
représentée par Me Jérôme Bénédict, avocat,
recourante,
contre
B.________ Sàrl,
représentée par Me Jean-Claude Mathey, avocat,
intimée.
Objet
contrat d'entreprise,
recours contre l'arrêt rendu le 30 mars 2021 par la Cour d'appel civile du Tribunal cantonal du canton de Vaud (PT12.027243-200654, 160).
Faits :
A.
A.a. A.________, titulaire d'une entreprise individuelle, avait déjà collaboré avec B.________ Sàrl avant 2010 (ci-après: la demanderesse). Il lui avait sous-traité certains travaux sur un chantier sis... à U.________, en lui versant 90 % de la valeur des travaux facturés au maître de l'ouvrage.
A.b. En juillet 2010, ces entreprises ont toutes deux déposé des soumissions pour un autre chantier.
L'appel d'offres émanait de C.________ Sàrl (ci-après: le bureau d'architectes), directeur des travaux et représentant du maître de l'ouvrage; il concernait des travaux de plâtrerie dans un immeuble de 23 logements, sis... à U.________.
La soumission complétée par A.________ le 6 septembre 2010 totalisait 259'961 fr.60 nets, après déduction d'un rabais de 5 %. Elle était nettement supérieure à celle des autres soumissionnaires, y compris celle de la demanderesse. Le prénommé a proposé un rabais substantiel de 25,5 %, ce qui lui a permis de remporter l'adjudication pour un prix net de 215'000 fr., toutes taxes comprises.
Par contrat du 7 octobre 2010, les travaux de plâtrerie ont été adjugés à A.________ pour un montant net de 215'000 fr. selon le détail suivant:
" Total brut: 277'303.05
Rabais - 25,5 % - 70'712.30
Escompte - 2,0 % - 5'268.75
Prorata-Assurances - 1,0 % - 2'581.70
Panneau de chantier - - 200.00
Arrondi - - 420.25
TVA 7,6 % 19'408.50
Arrondi
0.05
Total net 215'000.00 "
A.c. Le 31 mai 2011, A.________ SA (ci-après: la défenderesse) a été inscrite au registre du commerce. Cette société a repris les actifs et passifs de l'entreprise individuelle éponyme par contrat du 19 mai 2011.
A.d. Le ch. 16 de la soumission du 6 septembre 2010 indique que si l'entreprise désire sous-traiter des travaux adjugés, elle devra en aviser le bureau d'architectes avant le début des travaux et celui-ci sera libre d'accepter ou de refuser l'entreprise proposée.
La défenderesse a sous-traité à la demanderesse l'intégralité des travaux de plâtrerie.
A.e. Le 23 septembre 2011, la demanderesse a envoyé à la défenderesse deux factures relatives au chantier en question:
- l'une d'un montant de 7'900 fr. hors taxe libellée " Travaux Régies divers ";
- l'autre de 268'135 fr.35 hors taxe, rabais, escompte et autres déductions (soit 116'652 fr. TTC, en tenant compte de la TVA, de l'ensemble des déductions et des acomptes payés de 150'000 fr.).
Ces deux factures, retransmises telles quelles par la défenderesse au bureau d'architectes, ont été corrigées par ce dernier; la première a été ramenée à 6'042 fr. et la seconde à 264'713 fr.55; elles comportent toutes deux le sceau et la signature de ce bureau ainsi que la mention " vérifié le 21 nov. 2011 ".
A.f. Insatisfaite du travail de la demanderesse, la défenderesse a mandaté l'entreprise de plâtrerie-peinture E.________ Sàrl, à laquelle elle sous-traitait régulièrement des travaux, afin d'y remédier.
Le 17 octobre 2011, E.________ Sàrl a envoyé à la défenderesse une facture de 30'240 fr. libellée comme suit: " rhabillage et lissage des plafondsen plâtre, prêts à recevoir la peinture. Rattrapage de toutes les pièces. ".
Le 3 décembre suivant, elle lui adressera une nouvelle facture de 30'000 fr. pour des prestations de rhabillage et de lissage.
A.g. Par courrier du 10 novembre 2011, l'entreprise de peinture et rénovation F.________ Sàrl a informé A.________ qu'elle avait dû reprendre les murs en plâtre de l'immeuble en question, ce qui avait nécessité 100 heures de travail pour tout l'immeuble.
A.h. Le 21 novembre 2011, la direction des travaux a établi un décompte final pour la plâtrerie de l'immeuble en question, lequel - sur la base des factures (corrigées; supra let. Ae) de la demanderesse - et après déduction d'une facture du carreleur et d'un rabais de 25,5 % - laissait subsister un montant net de 207'000 fr. Le calcul se présente ainsi:
" Facture finale 264'713.55
Régie 6'042.00
Régie carreleur - 4'656.00
266'099.55
Rabais 25,5 - 67'855.40
Escompte 2 - 3'964.90
Prorata & assurances 1 - 1'942.80
Panneau de chantier - 200.00
Arrondi - 469.80
191'666.65
TVA 8 15'333.35
Total net 207'000.00 "
A.i. Par courriel du 11 janvier 2012, un représentant du bureau d'architectes a indiqué à la défenderesse avoir constaté que les travaux de plâtrerie de l'immeuble n'avaient pas été exécutés dans les règles de l'art.
B.
B.a. Par requête de conciliation du 15 mai 2012, la demanderesse a ouvert action contre la défenderesse, concluant au paiement par cette dernière de 237'461 fr.85 avec intérêts et à la levée définitive de l'opposition formée au commandement de payer qu'elle lui avait fait notifier. La conciliation n'ayant pas abouti, elle a porté sa demande devant la Chambre patrimoniale cantonale du canton de Vaud.
Dans sa réponse, la défenderesse a soulevé l'exception
non adimpleti contractuset l'objection de compensation. Elle a conclu au rejet de la demande et, reconventionnellement, au paiement par la demanderesse de 6'940 fr. plus intérêts, représentant le solde dont elle estimait être encore créancière (47'000 fr. [207'000 fr. - 160'000 fr. d'acomptes versés à la défenderesse] sous déduction de 20'700 fr. de " rétrocession (qui lui serait) due ", de 30'240 fr. de " travaux de remise en état " et de 3'000 fr. d' " avance " (qu'elle aurait) accordée à la demanderesse.
La demanderesse a conclu au rejet des conclusions reconventionnelles.
Une expertise judiciaire a été confiée à G.________, architecte SIA, lequel a déposé un rapport le 1er avril 2014 et un rapport complémentaire en novembre 2016.
Une seconde expertise a été confiée à H.________, architecte EPFZ-SIA, afin de déterminer si la facture de la demanderesse relative aux travaux effectués sur le chantier en cause était justifiée. L'expert a délivré son rapport le 15 juin 2018 et l'a assorti d'une lettre explicative le 23 novembre suivant.
Par jugement du 17 septembre 2019, la Chambre patrimoniale cantonale a dit que la défenderesse devait payer à la demanderesse 87'459 fr.80 plus intérêts. Elle a rejeté la conclusion reconventionnelle. En substance, elle a raisonné comme suit. Le litige portait sur le prix dû par la défenderesse pour les travaux réalisés par la demanderesse. En application de l'art. 374 CO, le prix devait être déterminé sur la base des coûts effectifs. L'expertise judiciaire H.________ estimait la valeur totale des travaux réalisés par la demanderesse à 270'755 fr.55 bruts (soit le montant des factures adressées par la demanderesse à la défenderesse, après correction par la direction des travaux). Ce montant avait été accepté par les parties, à tout le moins par actes concluants, aucune d'entre elles n'ayant contesté le décompte du bureau d'architectes représentant le maître de l'ouvrage. La problématique résidait dans les déductions (un rabais de 25,5 %, plus une ristourne de 10 %) auxquelles la défenderesse prétendait. Aucun élément n'indiquait que les parties se seraient entendues sur un rabais de 25,5 % (à part les déclarations de la défenderesse elle-même). S'agissant d'une hypothétique « rétrocession » supplémentaire de 10 %, un accord dans ce sens n'était pas établi, même si les parties avaient procédé ainsi lors d'un précédent chantier (cf.
supra let. Aa). Dès lors, le montant correspondant au travail effectué par la demanderesse devait être arrêté à 255'115 fr.80 nets, toutes taxes comprises. La défenderesse excipant de la compensation, les premiers juges ont admis une déduction non contestée de 4'656 fr. et une autre de 3'000 fr. au titre d'un versement de la défenderesse à une entreprise tierce; en revanche, ils ont écarté une facture de 30'240 fr. relative à des travaux effectués par un tiers, que la défenderesse entendait également porter en déduction, celle-ci n'ayant pas démontré avoir donné l'avis des défauts ni s'être acquittée de ce montant.
B.b. Par arrêt du 30 mars 2021, la Cour d'appel civile du Tribunal cantonal du canton de Vaud a partiellement admis l'appel de la défenderesse sur le point du montant dû par cette dernière à la demanderesse, lequel s'élevait à 42'944 fr., plus intérêts à 5 % l'an dès le 12 janvier 2012. Elle a confirmé le rejet de la conclusion reconventionnelle.
Ses motifs seront évoqués dans les considérants en droit du présent arrêt, dans la mesure utile à la discussion des griefs.
Par arrêt du 26 avril 2021, la cour cantonale a rectifié le dispositif de son arrêt précédent sur le point des dépens, pour corriger une interversion malencontreuse dans le texte entre la demanderesse et la défenderesse.
C.
La défenderesse interjette un recours en matière civile, reprenant principalement les conclusions tendant au rejet de la demande et au paiement par la demanderesse de 6'796 fr. à son profit.
Par ordonnance présidentielle du 7 juin 2021, la requête d'effet suspensif dont était assorti le recours a été admise.
La cour cantonale se réfère à son arrêt.
Au terme de sa réponse, l'intimée conclut au rejet du recours.
La demanderesse s'est fendue d'une réplique, suscitant le dépôt d'une duplique de son adverse partie.
Considérant en droit :
1.
Interjeté en temps utile (art. 100 al. 1 LTF) par la défenderesse qui a succombé partiellement dans ses conclusions (art. 76 al. 1 let. b LTF) et dirigé contre un arrêt final (art. 90 LTF) rendu sur appel par le tribunal supérieur du canton de Vaud (art. 75 LTF) dans une affaire civile (art. 72 al. 1 LTF) dont la valeur litigieuse dépasse 30'000 fr. (art. 74 al. 1 let. b LTF), le recours en matière civile est recevable au regard de ces dispositions.
2.
2.1. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (art. 105 al. 1 LTF). Il ne peut s'en écarter que si ces faits ont été établis de façon manifestement inexacte - ce qui correspond à la notion d'arbitraire au sens de l'art. 9 Cst. (ATF 143 I 310 consid. 2.2; 141 IV 249 consid. 1.3.1; 140 III 115 consid. 2; 137 I 58 consid. 4.1.2; 137 II 353 consid. 5.1) - ou en violation du droit au sens de l'art. 95 LTF (art. 105 al. 2 LTF) et si la correction du vice est susceptible d'influer sur le sort de la cause (art. 97 al. 1 LTF).
Le complètement de l'état de fait ne relève pas de l'arbitraire, car un fait non constaté ne peut pas être arbitraire, c'est-à-dire constaté de manière insoutenable. Mais si un fait omis est juridiquement pertinent, autrement dit si son omission a eu pour conséquence qu'une disposition de droit matériel qui aurait dû être appliquée ne l'a pas été, le recourant peut obtenir que le fait soit constaté s'il démontre qu'en vertu des règles de la procédure civile, l'autorité précédente aurait objectivement pu en tenir compte et s'il désigne précisément les allégués et les offres de preuves qu'il lui avait présentés, avec références aux pièces du dossier (art. 106 al. 2 LTF; ATF 140 III 86 consid. 2).
En vertu de ces principes, les faits épars dans le mémoire de recours et qui ne correspondraient pas fidèlement à ceux constatés dans l'arrêt attaqué, sans que le grief d'arbitraire ne soit même articulé, ne seront pas pris en considération.
2.2. Le Tribunal fédéral applique le droit d'office (art. 106 al. 1 LTF). Toutefois, compte tenu de l'obligation de motiver qui incombe au recourant en vertu de l'art. 42 al. 2 LTF, il n'examine pas, comme le ferait un juge de première instance, toutes les questions juridiques qui pourraient se poser, mais uniquement celles qui sont soulevées devant lui (ATF 142 III 364 consid. 2.4; 140 III 86 consid. 2, 115 consid. 2; 137 III 241 consid. 5, 580 consid. 1.3), à moins que la violation du droit ne soit manifeste (ATF 140 III 115 consid. 2; arrêts 5A_621/2013 du 20 novembre 2014 consid. 2.2, non publié aux ATF 141 III 53; 4A_399/2008 du 12 novembre 2011 consid. 2.1, non publié aux ATF 135 III 112). Il n'est en effet saisi que des questions qui sont soulevées devant lui et ne traite donc pas les questions qui ne sont plus discutées par les parties (ATF 140 III 86 consid. 2).
Dès lors qu'une question est discutée, le Tribunal fédéral n'est lié ni par les motifs invoqués par les parties, ni par l'argumentation juridique retenue par l'autorité cantonale; il peut donc admettre le recours pour d'autres motifs que ceux invoqués par le recourant, comme il peut le rejeter en opérant une substitution de motifs (ATF 140 III 86 consid. 2; 135 III 397 consid. 1.4; 134 III 102 consid. 1.1; 133 III 545 consid. 2.2).
3.
Il est constant qu'un contrat d'entreprise (art. 363 ss CO) portant sur l'exécution de travaux de plâtrerie sur l'immeuble querellé a lié les parties. Le litige porte sur le prix de ces travaux. Les juges cantonaux ont constaté que le montant n'avait pas été fixé par avance. Ils ont considéré qu'il devait dès lors l'être sur la base de l'art. 374 CO, d'après la valeur du travail et les dépenses de l'entrepreneur, soit selon les coûts effectifs. Nul ne le conteste.
L'arrêt cantonal se lit comme un triptyque.
Dans un premier volet, la cour cantonale a constaté que la quotité des prestations exécutées par la demanderesse était établie. D'une part, l'expert judiciaire H.________ avait considéré que les quantités, après correction par l'architecte, correspondaient au travail effectivement réalisé par la demanderesse. D'autre part, la défenderesse avait transmis au maître de l'ouvrage les factures établies par la demanderesse comme s'il s'agissait des siennes: elle les avait donc intégralement reprises à son compte et ne saurait remettre en question la quotité des prestations réalisées par son sous-traitant. Quant au prix, l'expert judiciaire avait procédé à une évaluation des prix pratiqués à cette époque sur la base des soumissions déposées, ce qui l'avait conduit à retenir que le prix - corrigé de 6'184 fr. par le maître de l'ouvrage - correspondait à la valeur du travail effectué. D'autant que la défenderesse n'avait pas émis la moindre objection quant aux factures de sa sous-traitante qu'elle avait retransmises telles quelles. Le rabais de 25,5 % sur la valeur brute de l'ouvrage permettait de ramener le montant des prestations au niveau du prix de marché. La valeur des prestations de la demanderesse se montait dès lors à 210'600 fr. nets, toutes taxes comprises.
Sur ce chapitre, la défenderesse ne soulève aucun grief.
Dans ce qui s'apparente à un tableau central, la cour cantonale s'est efforcée de déterminer si les parties avaient convenu que le 10 % du montant de ces prestations demeurerait acquis à la défenderesse, comme celle-ci le prétendait. La demanderesse avait soutenu dans sa demande avoir concédé une réduction de 5 % (qui figurait d'ailleurs dans ses deux factures finales du 23 septembre 2011). Elle avait toutefois avoué, lors de son interrogatoire en qualité de partie, avoir convenu oralement d'un rabais de 10 % au profit de la défenderesse. La cour cantonale a dès lors constaté que les parties s'étaient entendues sur un rabais de 10 %. Cela étant, l'assiette de ce rabais ne pouvait être déterminée. Ni l'interprétation subjective ni l'interprétation objective ne permettait de savoir sur quel montant il pouvait porter. Le fardeau de la preuve étant à cet égard supporté par la défenderesse, les juges cantonaux s'en sont tenus au montant net de 210'600 fr., toutes taxes comprises, résultant de l'expertise judiciaire. Déduction faite des avances versées à la demanderesse (160'000 fr.), du montant crédité à une entreprise tierce pour la correction de malfaçons (4'656 fr.) et de celui (3'000 fr.) payé à I.________ Sàrl pour la demanderesse, la créance de cette dernière s'élevait en définitive à 42'944 fr.
Dans un troisième volet, la cour cantonale a examiné si, comme le prétendait la défenderesse, la facture du 17 octobre 2011 de E.________ Sàrl - concernant des travaux de réfection résultant de malfaçons sur l'ouvrage réalisé par la demanderesse et totalisant 30'240 fr. - devait être portée en déduction de ce montant. Elle a observé que la défenderesse n'avait pas apporté la preuve du paiement de cette facture, qu'elle avait pourtant elle-même allégué. Le témoin J.________, associé gérant de la société E.________ Sàrl, avait certes déclaré lors de son audition devant les premiers juges, que la facture en cause avait été payée. Cela étant, il avait admis que sa société travaillait régulièrement pour le compte de la défenderesse, laquelle représentait dès lors un partenaire commercial d'une importance significative. Ceci a conduit la cour cantonale à écarter les déclarations en question, dès lors qu'aucun autre élément ne les corroborait. A cela s'ajoutait que ladite facture portait la date du 17 octobre 2011 et faisait état d'un montant de 30'240 fr. payable à 30 jours nets. Alors même que le versement devait être enregistré dans sa comptabilité, la défenderesse n'avait pas été en mesure de produire le moindre document à cet égard. En particulier, elle n'avait pas produit de document bancaire, alors qu'elle l'avait fait en relation avec les acomptes payés à la demanderesse. Elle avait par ailleurs été interpellée en vain durant la procédure de première instance par l'expert judiciaire G.________ qui sollicitait une pièce attestant du paiement en question. Dans ces conditions, les juges cantonaux ont estimé que rien ne leur permettait de retenir que la facture invoquée avait été acquittée. De sorte qu'ils n'ont pas admis la compensation - invoquée par la défenderesse - avec cette hypothétique créance. Ils se sont ainsi dispensés d'examiner l'existence des défauts invoqués par la défenderesse ainsi que d'un avis des défauts donné en temps utile.
Le litige se cristallise autour de ces deux éléments.
4.
Premièrement, la recourante soutient qu'elle se serait entendue avec la demanderesse pour conserver le 10 % des sommes facturées au maître de l'ouvrage. Elle fait grief à la cour cantonale d'avoir violé l'art. 18 CO en ne constatant pas l'existence d'un accord des parties portant sur un rabais de 10 % à calculer sur la valeur nette des travaux accomplis par l'intimée (210'600 TTC ou 195'000 hors taxes) et refacturés au maître de l'ouvrage, représentant 19'500 fr. Dans le doute, elle aurait dû - à suivre la recourante - retenir le plus petit de tous les montants susceptibles de constituer l'assiette de ce rabais, sachant que sa quotité (10 %) résultait d'un aveu judiciaire de la demanderesse. Ce serait d'ailleurs sur ce même montant que la demanderesse aurait appliqué un rabais de 5 % dans ses factures, ce qui démontrerait la pertinence de cette base de calcul.
4.1. Un fait doit être allégué pour qu'il fasse partie de la procédure.
En vertu de la maxime des débats, chaque partie doit contester les faits allégués par sa partie adverse, car seuls les faits contestés doivent être prouvés (art. 150 al. 1 CPC). L'art. 222 al. 2 2ème phrase CPC impose ainsi au défendeur d'exposer dans la réponse quels faits allégués dans la demande sont reconnus ou contestés (cf. ATF 144 III 519 consid. 5.2.2.1).
Si un fait allégué est admis, il y a aveu judiciaire, c'est-à-dire la reconnaissance en cours de procès d'un fait défavorable à celui qui le fait, que la partie adverse peut lui opposer. L'aveu judiciaire d'un fait supprime la nécessité de la preuve (FABIENNE HOHL, Procédure civile, tome I, 2e éd. 2016, p. 307 n. 1857, p. 308 n. 1859, p. 210 n. 1277 et p. 214 n. 1293).
Savoir si et dans quelle mesure un fait est contesté est une question qui relève de la constatation des faits, respectivement de l'appréciation des preuves (arrêts 4A_487/2018 du 30 janvier 2019 consid. 4.2.1 et 5A_91/2014 du 29 avril 2014 consid. 3.2). La contestation doit être clairement exprimée (ATF 141 III 433 consid. 2.6). En principe, la partie adverse peut se contenter de contester les faits allégués (ATF 144 III 519 consid. 5.2.2.2; 115 II 1 consid. 4); une contestation en bloc (
pauschale Bestreitung) n'est toutefois pas suffisante (ATF 144 III 519 consid. 5.2.2.1; 141 III 433 consid. 2.6). Selon les circonstances, il peut être exigé de la partie adverse qu'elle concrétise sa contestation (charge de la motivation de la contestation;
Substanziierung der Bestreitungen), de façon que le demandeur puisse savoir quels allégués précis sont contestés et, partant, faire administrer la preuve dont le fardeau lui incombe; plus les allégués du demandeur sont motivés, plus les exigences de contestation de ceux-ci par la partie adverse sont élevées (ATF 144 III 519 consid. 5.2.2.1; 141 III 433 consid. 2.6; arrêt 4A_446/220 du 8 mars 2021 consid. 2.2).
4.2. La recourante a allégué en procédure que la demanderesse " (avait) également admis que 10 % de ses montants facturés au maître de l'ouvrage écherrait à A.________, respectivement à la défenderesse " (cf. allégué 56 de la réponse) et se proposait d'en apporter la preuve par témoins.
La demanderesse a contesté cet allégué dans sa réponse sur la demande reconventionnelle.
Deux personnes ont été entendues sur l'allégué 56, à savoir K.________, employé de la recourante, en qualité de témoin, et A.________, en qualité de partie (cf. ordonnance de preuves du 7 juin 2013; complément d'office sur la base du dossier).
De son côté, l'intimée avait allégué ce qui suit dans son mémoire de demande (complément d'office sur la base du dossier; la détermination de son adverse partie étant évoquée entre crochets, par référence à sa réponse) :
Al. 15: " La Direction des travaux a établi le 21 novembre 2011 un décompte final reprenant le montant de la facture finale de la demanderesse et déduisant soudainement un rabais de 25,5 % " (cf. sa demande) [" Admis indivisiblement qu'il était prévu avec la direction des travaux et avec les sous-traitants, y compris la demanderesse, un rabais de 25,5 % "].
Al. 16: " Or, la soumission du 6 septembre 2010 ne prévoyait qu'un rabais de 5 % " [" Rapport soit à la pièce, qui ne fait pas état de l'entier des accords trouvés "].
Al. 17: " C'est ce rabais de 5 % qui a été admis par la demanderesse dans ses factures du 23 septembre 2011 " [" A tort; le rabais convenu était de 25,5 % "].
Al. 18: " En aucun cas, la demanderesse n'a admis un rabais de 25,5 % " [« contesté »].
L.________, à savoir l'associé gérant président de la société demanderesse, a été interrogé - comme partie (art. 191 CPC) - à la requête de la demanderesse elle-même sur l'allégué 18 lors de l'audience du 11 septembre 2013 (complément d'office sur la base du dossier; cf. ordonnance de preuve du 7 juin 2013). Il a déclaré: " C'est exact. Mon père et M. A.________ sont convenus oralement d'un rabais de 10 %. C'est au stade de la facture finale, corrigée par l'architecte, qu'est apparu le rabais de 25,5 %; la demanderesse n'a jamais consenti à un tel rabais. " (cf. procès-verbal d'interrogatoire du prénommé, p. 13).
Cela étant, L.________ n'était pas interrogé sur l'allégué 56 de la réponse de la recourante, allégué par ailleurs explicitement contesté par l'intimée. La défenderesse ne prétend d'ailleurs pas le contraire. Il n'est donc pas possible de retenir que, par cette déclaration, la demanderesse a reconnu que ce rabais de 10 % vaudrait sur les montants facturés au maître de l'ouvrage. Les allégués de la demanderesse, quant à eux, n'offrent aucune indication sur les contours dudit rabais. L.________ faisait-il référence à celui concédé au maître de l'ouvrage ou à celui dont bénéficiait la défenderesse ? Il est permis d'hésiter. L'intimée avait connaissance de la soumission initiale de la recourante - ceci a été constaté par la cour cantonale - mais pas nécessairement du rabais conséquent (25,5 %) que la recourante a octroyé ultérieurement pour se voir adjuger les travaux. Le rabais de 10 % - à supposer que l'intimée l'ait accordé à la recourante - était-il lié au prix des travaux connu de la demanderesse et vaudrait-il également si sa marge était réduite par le jeu du rabais conséquent octroyé au maître de l'ouvrage? Là également, il est permis d'en douter. Aussi est-il excessivement compliqué de construire une quelconque admission sur le fondement d'une phrase aussi laconique. La cour cantonale y a certes vu un aveu judiciaire, mais elle a souligné parallèlement que la base de calcul demeurait indéterminée. Autant dire que cet aveu n'amène rien de concret (on ne sait pas à combien se monte le rabais) et qu'il est hasardeux de se lancer dans des hypothèses, que la recourante n'appréhende pas exhaustivement, pour reconstituer le chaînon manquant. Dans le doute, c'est à bon droit que la cour cantonale a appliqué les règles sur le fardeau de la preuve et estimé que la recourante n'avait pas démontré les éléments de fait allégués au ch. 56 de sa réponse. Quant à l'expression « rétrocession » utilisée par la cour cantonale, elle ne prête pas à conséquence et c'est d'ailleurs la recourante elle-même qui la lui a soufflée dans ses écritures.
Le Tribunal fédéral ne décèle pas de violation du droit fédéral, singulièrement pas de l'art. 18 CO, dans ce volet de l'arrêt cantonal. Le grief est donc mal fondé.
5.
S'agissant du dernier pan du litige, la recourante estime qu'elle n'avait pas à faire la preuve du paiement de la facture de 30'240 fr. (
supra let. Af) qu'elle invoquait en compensation. Elle soutient avoir fait éliminer le défaut affectant l'ouvrage réalisé par la demanderesse par un tiers, ce qui l'autoriserait à lui réclamer les frais correspondants, par le jeu de l'art. 366 al. 2 CO applicable par analogie. Elle devrait simplement établir les frais en question et non leur paiement. Subsidiairement, elle estime avoir apporté la preuve du règlement de la facture querellée, ce que la cour cantonale aurait méconnu arbitrairement.
5.1. Selon l'art. 366 al. 2 CO, qui sanctionne l'exécution défectueuse de l'ouvrage, lorsqu'il est possible de prévoir avec certitude, pendant le cours des travaux, que, par la faute de l'entrepreneur, l'ouvrage sera exécuté d'une façon défectueuse ou contraire à la convention, le maître peut fixer ou faire fixer à l'entrepreneur un délai convenable pour parer à ces éventualités, en l'avisant que, s'il ne s'exécute pas dans le délai fixé, les réparations ou la continuation des travaux seront confiées à un tiers, aux frais et risques de l'entrepreneur. Cette disposition, à l'instar d'autres règles particulières (cf. l'art. 259b let. b, l'art. 288 al. 1 et l'art. 392 al. 3 CO), se rattache à l'art. 98 al. 2 CO qui régit de façon générale l'exécution par substitution (ou exécution
in rem;
Ersatzvornahme), dans les rapports contractuels relevant du droit privé, en cas de violation d'une obligation de faire. Cette disposition vaut par analogie dans le cadre de l'action en suppression des défauts (ATF 126 III 230 consid. 7ab/bb; 107 II 50 consid. 3).
Il appartient au maître de démontrer la réalisation des conditions d'application de cette disposition. Si ces conditions sont réalisées, le maître peut confier à un tiers, voire exécuter lui-même les réparations ou la continuation des travaux, sans autorisation d'un juge.
L'exécution par substitution, au sens de l'art. 366 al. 2 CO, suppose que le maître renonce à faire réparer l'ouvrage par l'entrepreneur ou à laisser ce dernier continuer les travaux. Cette manifestation de volonté formatrice et irrévocable, qui n'est pas soumise à l'exigence d'une forme spéciale et qui peut intervenir au moment de la fixation ou après l'expiration du délai de grâce prévu par la disposition citée, a pour effet de modifier les droits et obligations des parties relativement à la prestation de l'entrepreneur: le maître renonce définitivement à exiger de celui-ci qu'il procède lui-même à l'exécution des travaux (réparation ou achèvement de l'ouvrage) et il en confie le soin à un tiers (ou le fait lui-même) aux frais et risques de l'entrepreneur; ainsi, l'obligation de faire qui incombait à l'origine à l'entrepreneur en vertu du contrat d'entreprise (art. 363 CO), se transforme en une obligation de payer les frais de l'exécution par substitution (ATF 126 III 230 consid. 7a/aa), à laquelle viendra s'ajouter, suivant les circonstances, l'obligation de payer des dommages-intérêts (art. 98 al. 1
in fine CO).
Cependant, comme l'exécution
in rem n'est qu'un succédané de l'exécution convenue, l'existence du contrat d'entreprise initial n'en est pas affectée, nonobstant le changement de nature de l'obligation à exécuter par l'entrepreneur et la mise en oeuvre par le maître d'un tiers sur la base d'un second contrat d'entreprise. Le maître reste tenu de payer le prix de l'ouvrage, tel qu'il a été fixé dans le contrat d'entreprise, mais il peut exiger de l'entrepreneur qu'il lui rembourse les frais de l'exécution par substitution (
Kostenersatz par opposition au
Schadenersatz ou dommages-intérêts; ATF 141 III 257 consid. 3.3; 126 III 230 consid. 7a/aa; arrêt 4A_556/2011 du 20 janvier 2012 consid. 2.4) et, de surcroît, qu'il assume, en principe, les conséquences, non couvertes par le tiers, d'une mauvaise exécution
in rem, puisque cette exécution se fait non seulement aux frais, mais encore aux risques de l'entrepreneur: les deux créances réciproques pourront être éteintes par voie de compensation.
Lorsque le maître est en droit de faire appel à un tiers aux frais de l'entrepreneur pour remédier à un défaut de l'ouvrage, il a également le droit d'exiger que ce dernier lui avance les frais de réparation (ATF 128 III 416 consid. 4.2.2). Le jugement d'avance des frais n'exclut, dans le procès sur le décompte, ni la restitution d'une avance des coûts trop élevée ni le recouvrement des frais non encore couverts (ATF 141 III 257 consid. 3). Si le maître procède à l'exécution par substitution sans avance, ce qu'il est en droit de faire sans autorisation du juge, il doit après coup dans le procès en remboursement contre l'entrepreneur démontrer tant son droit à l'exécution par substitution que le fondement (
Berechtigung) du temps concrètement consacré.
5.2. En l'espèce, la recourante a opposé à la créance de la demanderesse en paiement de l'ouvrage réalisé, la compensation avec sa créance en remboursement des frais de l'exécution par substitution, laquelle se monterait à 30'240 fr.
Même si la cour cantonale ne l'a pas évoquée en ces termes, la question qui se pose est celle de la réalité des frais qui fondent cette créance compensante. C'est dans cette optique que l'autorité précédente a relevé l'absence de justificatif de règlement de la facture de 30'240 fr. de E.________ Sàrl, une entreprise à laquelle la recourante confiait régulièrement des travaux et pour laquelle elle représentait un partenaire commercial d'une importance significative - selon ses termes -, ce qui l'a conduite à nier l'existence de cette hypothétique créance. La recourante ne soulève aucun grief apte à remettre en cause ce raisonnement. Le parallèle qu'elle tente de tracer avec l'action en réduction du prix dans le contrat de vente est hors de propos, puisque dans le contexte de l'art. 366 al. 2 CO, le maître reste tenu de payer le prix de l'ouvrage tel qu'il a été fixé dans le contrat d'entreprise. C'est en exerçant la compensation qu'il peut opposer sa créance liée au remboursement des frais de l'exécution par substitution (cf.
supra consid. 5.1).
Subsidiairement, la recourante soutient que la cour cantonale serait tombée dans l'arbitraire en retenant qu'elle n'avait pas réglé la facture en cause. Cela étant, sa démonstration ne révèle rien de semblable. Il est d'ailleurs assez étonnant que, dans son mémoire de recours, elle fasse désormais référence à une opération de compensation de dettes réciproques, ce dont il n'a jamais été question auparavant que ce soit dans ses écritures ou dans les déclarations du témoin J.________, de toute manière écartées sans trace d'arbitraire.
Compte tenu de ce qui précède, il est inutile d'examiner les arguments développés par la recourante en relation avec les défauts de l'ouvrage et le respect des incombances corrélatives.
6.
Partant, le recours doit être rejeté aux frais de son auteur (art. 66 al. 1 LTF). La recourante versera à l'intimée une indemnité à titre de dépens ( art. 68 al. 1 et 2 LTF ).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
Les frais judiciaires, arrêtés à 2'500 fr., sont mis à la charge de la recourante.
3.
La recourante versera à l'intimée une indemnité de 3'000 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux mandataires des parties et à la Cour d'appel civile du Tribunal cantonal du canton de Vaud.
Lausanne, le 18 mai 2022
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Hohl
La Greffière : Godat Zimmermann