bger · 4A_505/2023 · 2024-07-29 · fr
contrat de maintenance informatique,
Droit des obligations (en général)


Bundesgericht

Tribunal fédéral

Tribunale federale

Tribunal federal

4A_505/2023

Arrêt du 29 juillet 2024

I

Composition

Mmes les Juges fédérales

Kiss, Juge présidant, Hohl et May Canellas.

Greffière : Mme Fournier.

Participants à la procédure

A.________ SA,

représentée par Me Mathieu Simona, avocat,

demanderesse et recourante,

contre

B.________ Sàrl,

représentée par Me Shahram Dini, avocat,

défenderesse et intimée.

Objet

contrat de maintenance informatique,

recours contre l'arrêt rendu le 19 septembre 2023 par la Chambre civile de la Cour de justice du canton de Genève (C/23597/2016, ACJC/1208/2023).

Faits :

A.

A.a.
Par contrat de travail conclu à une date inconnue, A.________ SA (ci-après: A.________) a employé C.________ en tant qu'"ingénieur système IT" dès le 1er juin 2006. Dans le cadre de cette collaboration, le supérieur hiérarchique de C.________ était D.________, lequel était notamment en charge du budget informatique de A.________. La collaboration entre les deux hommes se déroulait très bien, le second étant satisfait du travail du premier. Les certificats de travail remis à C.________ en 2012 et janvier 2014 relevaient notamment que ses compétences techniques et ses connaissances avaient joué un rôle stratégique dans l'amélioration de la structure informatique de l'entreprise, permettant à celle-ci de s'aligner sur les exigences informatiques d'une société internationale.

Le 31 octobre 2013, A.________ a fait part à C.________ de sa décision d'externaliser la gestion de son infrastructure informatique pour des raisons économiques. A.________ a alors résilié son contrat de travail pour le 31 décembre 2013.

A.b.
A partir du 1er janvier 2014, C.________ a fourni ses services en matière informatique à A.________ par le biais de B.________ Sàrl (ci-après: B.________), dont il a été l'associé-gérant de janvier 2014 à décembre 2016. Le contrat entre les deux sociétés a été conclu pour une durée d'une année. En substance, B.________ devait fournir à A.________, contre rémunération, les services suivants: maintenance du serveur "

hardware
" et "

software
"; maintenance et support des postes de travail; maintenance des infrastructures de stockage; maintenance de l'équipement du réseau (interrupteur, pare-feu et autres dispositifs du réseau existants); maintenance de la reproduction/copie entre la production et le site distant; maintenance de l'infrastructure du site distant; assistance pour tout autre service lié à l'infrastructure maintenue par des sociétés tierces, incluant notamment la communication (fax, voix, vidéos), l'impression, le scanner, la gestion des droits d'accès et la protection de l'infrastructure physique tant interne qu'externe. Elle devait, en outre, fournir un centre d'assistance et remettre à A.________ des rapports mensuels la première semaine de chaque mois. B.________ n'a pas systématiquement respecté cette dernière obligation.

A.c.
Le 5 janvier 2015, D.________ s'étant déclaré satisfait du travail effectué par B.________, les deux sociétés ont conclu un nouveau contrat intitulé "

Enterprise Agreement for Operations and Maintenance
". En substance, B.________ continuerait de procurer les mêmes services, sous réserve du centre d'assistance et des rapports mensuels qui devraient désormais être fournis sur demande uniquement, au vu de la communication fluide entre les parties. En contrepartie, A.________ s'engageait à verser à B.________ des honoraires mensuels de 20'500 fr., TVA en sus. Une réduction de 15% était convenue pour l'année 2015.

Le contrat, conclu pour une durée de trois ans courant du 1er janvier 2015 au 31 décembre 2017, prévoyait sa reconduction automatique pour une durée d'un an, sauf dénonciation par l'une des parties moyennant un préavis écrit donné trois mois à l'avance.

Le contrat prévoyait également un régime de résiliation anticipée. Ainsi, si une partie en enfreignait une "condition importante" et n'y remédiait pas dans un délai de trente jours suivant la réception de la mise en demeure, l'autre partie pouvait résilier le contrat par écrit. En cas d'impossibilité de remédier à la violation dans le délai de trente jours, un délai raisonnable supplémentaire, n'excédant pas soixante jours dès réception de l'avis, devait être octroyé à la partie responsable afin de lui permettre de remédier à la violation de manière prompte et diligente. En outre, chaque partie pouvait résilier le contrat avec effet immédiat en cas d'inexécution des obligations contractuelles ou en cas d'entrave à la bonne exécution desdites obligations en raison d'un comportement fautif intentionnel ou d'une négligence grave.

A.d.
Par courriel du 26 mars 2015 adressé à l'administrateur-président de A.________, C.________ s'est plaint du retard dans le renouvellement de certains contrats, D.________ n'ayant pas validé l'offre qui lui avait été soumise. Il s'est dit préoccupé par ce retard qui impactait considérablement "l'ensemble des fonctions du département". Il a précisé qu'il continuerait à faire le maximum d'efforts pour fournir un service de qualité dans les conditions données, tout en spécifiant qu'il refuserait d'endosser une quelconque responsabilité causée par un retard, une négligence ou un manque de gestion, non seulement en ce qui concernait l'aspect administratif, mais aussi l'aspect opérationnel de l'infrastructure informatique.

A.e.
Le 19 mars 2015, D.________ a résilié le contrat qui le liait à A.________ pour la fin du mois. Quelques mois plus tard, il a fondé la société E.________ SA (ci-après: E.________), active dans la commercialisation de logiciels et produits informatiques. Cette dernière a conclu, le 1er juillet 2015, un contrat de services avec A.________.

D.________ était chargé de superviser l'activité de C.________, y compris après la création de E.________.

Dès la fin de l'année 2015, la relation entre C.________ et D.________ s'est dégradée. C.________ s'est opposé à rendre des comptes à E.________; il communiquait alors directement avec l'administrateur-président de A.________.

A.f.
A.________ faisait chaque année l'objet d'un audit externe et d'un audit interne, lesquels portaient notamment sur son service informatique. Ces audits ont rarement relevé des problèmes concernant ce service, sous réserve de quelques recommandations qui ont toujours été suivies. Aucun incident, problème de sécurité ou panne due à une attaque du réseau informatique ne sont survenus durant la collaboration avec C.________ puis B.________.

A.g.
Par courriel envoyé courant novembre 2015, A.________ a demandé à ses employés, sur une base volontaire, de réduire leur temps de travail de 20% en raison des difficultés financières de la société.

A.________ n'a pas versé à B.________ les honoraires du mois de mars 2016.

A.h.
Le 1er avril 2016, A.________ a engagé F.________ en qualité de chef du département informatique. A ce titre, il devait superviser les activités menées par ce département, notamment celles effectuées par B.________. La relation entre F.________ et B.________ a immédiatement été tendue.

Par courriel du 12 avril 2016, B.________ a répondu à la requête de F.________ relative au statut actuel de l'infrastructure informatique. B.________ lui a notamment transmis une liste des problèmes du moment, dont l'obsolescence du matériel.

Au vu des éléments constatés par F.________, A.________ a confié à la société G.________ SA (ci-après: G.________) la mission d'effectuer une analyse rapide de son système informatique. Dans son rapport remis le 29 avril 2016, G.________ lui a fait part de divers prétendus problèmes affectant son système informatique, les performances de celui-ci ne correspondant pas aux standards actuels. Selon G.________, il était ainsi recommandé de discuter des possibilités d'amélioration. Le rapport indiquait également de prétendues failles de sécurité. Concernant l'équipement, il faisait état d'une grande disparité dans les appareils utilisés, ce qui aurait augmenté la complexité du réseau et aurait pu conduire à des problèmes. Globalement, d'après G.________, le matériel était désuet et aurait dû être remplacé. Enfin, toujours selon son rapport, certains produits n'étaient plus commercialisés, voire étaient "en fin de vie" de sorte qu'ils devraient être remplacés prochainement.

A.i.
Par courrier du 29 avril 2016, soit le jour même de la réception du rapport précité, A.________ a résilié le contrat qui la liait à B.________ avec effet immédiat pour négligence grave. En substance, A.________ reprochait à B.________ de nombreuses violations du contrat et des bonnes pratiques admises dans le domaine de l'informatique, lesquelles auraient selon elle entraîné des brèches de sécurité majeures. Il se serait notamment agi du non-respect des standards et normes de sécurité, de lacunes et omissions en relation avec les services et la maintenance et d'une absence caractérisée d'informations sur les lacunes qui avaient été ou auraient dû être constatées.

Le 12 mai 2016, B.________, qui avait proposé ses services à A.________ malgré la résiliation, a contesté celle-ci. Elle a mis A.________ en demeure de lui verser les deux mensualités de 20'500 fr. dues pour les mois de mars et avril 2016, TVA en sus. Elle a, en outre, "réservé tous ses droits découlant de cette résiliation".

Le 10 juin 2016, B.________ a à nouveau mis A.________ en demeure de lui payer les honoraires de mars et avril 2016, auxquels s'ajoutaient 143'000 fr. équivalant au solde des mensualités de l'année 2016, 246'000 fr. correspondant au solde des mensualités pour l'année 2017 et 39'900 fr. à titre de remboursement du rabais de 15% octroyé à la prétendue condition que le contrat dure trois ans.

Le 27 octobre 2016, B.________ a fait notifier à A.________ un commandement de payer portant sur un montant de 526'932 fr., lequel a été frappé d'opposition.

A.j.
Suite à la résiliation du contrat, A.________ a fait intervenir plusieurs sociétés, d'une part pour effectuer de nouvelles expertises de son système informatique, d'autre part pour procéder à des modifications et au remplacement d'une partie de son matériel informatique. Les sociétés mandatées ont fait état de divers problèmes affectant l'infrastructure informatique.

B.

B.a.
Après une tentative de conciliation infructueuse, A.________, par demande du 16 mai 2017, a assigné B.________ devant le Tribunal de première instance du canton de Genève en vue notamment d'obtenir le paiement d'un montant de 258'462 fr. 45 avec intérêts, l'annulation et la radiation de la poursuite introduite à son encontre. En bref, la demanderesse réclamait une indemnisation pour les frais d'audit et d'analyse des dysfonctionnements confiés à diverses sociétés, pour les coûts occasionnés par la remise en conformité du système informatique effectuée par une entreprise tierce, pour le temps consacré par ses employés à la résolution des problèmes causés par les manquements de B.________ et pour des frais d'avocat avant procès.

B.________ a conclu au rejet de la demande. Reconventionnellement, elle a conclu au paiement par A.________ de la somme de 487'080 fr. avec intérêts, à titre des mensualités de mars 2016 à décembre 2017, ainsi qu'au prononcé de la mainlevée définitive de l'opposition formée par A.________ dans la poursuite en cours.

Par jugement du 13 septembre 2022, le tribunal de première instance a rejeté la demande principale et admis la demande reconventionnelle, condamnant A.________ à payer à B.________ la somme de 487'080 fr. avec intérêts et prononçant la mainlevée de l'opposition de A.________ à concurrence du même montant.

B.b.
Statuant le 19 septembre 2023, la Chambre civile de la Cour de justice du canton de Genève a rejeté l'appel de A.________ et confirmé le jugement de première instance. Ses motifs seront évoqués dans les considérants en droit du présent arrêt, dans la mesure utile à la discussion des griefs.

C.

A.________ forme un recours en matière civile à l'encontre de cet arrêt, assorti d'une requête d'effet suspensif. A titre principal, elle conclut au paiement par B.________ de la somme de 258'462 fr. 45 avec intérêts ainsi qu'au renvoi de la cause à l'autorité précédente "afin qu'elle statue dans le sens des considérants s'agissant du montant de l'indemnité due par [A.________] à [B.________]". Subsidiairement, elle sollicite le renvoi de la cause à l'autorité précédente pour nouvelle décision dans le sens des considérants.

Dans sa réponse, l'intimée a conclu au rejet du recours, suscitant une réplique de la recourante à laquelle elle a dupliqué.

La cour cantonale s'est référée aux considérants de son arrêt.

La demande d'effet suspensif a été admise par ordonnance présidentielle du 8 novembre 2023.

Considérant en droit :

1.

Interjeté en temps utile (
art. 100 al. 1 LTF
) par la demanderesse qui a succombé dans ses conclusions (
art. 76 al. 1 LTF
) et dirigé contre un arrêt final (
art. 90 LTF
) rendu en matière civile (
art. 72 al. 1 LTF
) par un tribunal cantonal supérieur (
art. 75 LTF
) dans une affaire pécuniaire dont la valeur litigieuse est supérieure à 30'000 fr. (
art. 74 al. 1 let. b LTF
), le recours en matière civile est recevable au regard de ces dispositions. Demeure réservée, à ce stade, la recevabilité des griefs soulevés par la recourante.

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 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
).

La critique de l'état de fait retenu est soumise au principe strict de l'allégation énoncé par l'
art. 106 al. 2 LTF
(
ATF 140 III 264
consid. 2.3 et les références citées). La partie qui entend attaquer les faits constatés par l'autorité précédente doit expliquer clairement et de manière circonstanciée en quoi ces conditions seraient réalisées (
ATF 140 III 16
consid. 1.3.1 et les références citées). Si la critique ne satisfait pas à ces exigences, les allégations relatives à un état de fait qui s'écarterait de celui de la décision attaquée ne pourront pas être prises en considération (
ATF 140 III 16
consid. 1.3.1). Les critiques de nature appellatoire sont irrecevables (
ATF 130 I 258
consid. 1.3).

Le complètement de l'état de fait ne relève pas de l'arbitraire; un fait non constaté ne peut pas être arbitraire, c'est-à-dire constaté de manière insoutenable. En revanche, si un fait omis est juridiquement pertinent, le recourant peut obtenir qu'il 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érence aux pièces du dossier (
art. 106 al. 2 LTF
;
ATF 140 III 86
consid. 2).

Concernant l'appréciation des preuves, le Tribunal fédéral n'intervient, du chef de l'
art. 9 Cst.
, que si le juge du fait n'a manifestement pas compris le sens et la portée d'un moyen de preuve, a omis sans raisons objectives de tenir compte des preuves pertinentes ou a effectué, sur la base des éléments recueillis, des déductions insoutenables (
ATF 137 III 226
consid. 4.2;
136 III 552
consid. 4.2;
134 V 53
consid. 4.3).

2.2.
C'est le lieu de relever que les éléments de fait qui ressortent du mémoire de recours, notamment de la partie "introduction" et "rappel des faits", et divergent de ceux retenus par la cour cantonale, sans que l'arbitraire ou le complètement de l'état de fait ne soit invoqué dans les formes prescrites, ne seront pas pris en considération.

2.3.
Le Tribunal fédéral applique le droit d'office (
art. 106 al. 1 LTF
). Compte tenu de l'exigence de motivation contenue à l'
art. 42 al. 1 et 2 LTF
, sous peine d'irrecevabilité (
art. 108 al. 1 let. b LTF
), il n'examine en principe que les griefs invoqués, sauf en cas d'erreurs juridiques manifestes. Il n'est pas tenu de traiter, comme le ferait une autorité de première instance, toutes les questions juridiques qui pourraient se poser, lorsque celles-ci ne sont plus discutées devant lui (
ATF 140 III 86
consid. 2;
137 III 580
consid. 1.3). Par exception à la règle selon laquelle il applique le droit d'office, il n'examine la violation d'un droit constitutionnel que si le grief a été invoqué et motivé de façon détaillée (
art. 106 al. 2 LTF
;
137 III 580
consid. 1.3;
135 III 397
consid. 1.4).

3.

Il est acquis que les parties ont été liées par un contrat de maintenance informatique; sa qualification en tant que contrat innommé n'est par ailleurs plus litigieuse (arrêt attaqué, consid. 2), pas plus que les justes motifs dont la résiliation anticipée immédiate était dépourvue (arrêt attaqué, consid. 3 et consid. 4.1). N'est également pas débattue la date à laquelle le contrat a pris fin, de sorte qu'il n'est pas nécessaire d'examiner les modalités de la résiliation ordinaire du contrat (

supra
let. A.c).

A ce stade, le litige ne porte plus que sur deux objets. D'une part, la recourante reproche à la cour cantonale de n'avoir pas condamné l'intimée, sur la base de la responsabilité contractuelle, à réparer son prétendu dommage, raison pour laquelle elle reprend l'intégralité de ses conclusions en paiement (

infra
consid. 4). D'autre part, elle fait grief à l'autorité précédente de n'avoir pas déduit du montant des conclusions en paiement reconventionnelles de l'intimée, qui lui ont été intégralement allouées, les charges que cette dernière aurait pu épargner du fait de la cessation de son activité pour la recourante suite à la résiliation (injustifiée) du contrat (

infra
consid. 5).

4.

Dans un premier groupe de moyens, la recourante, dénonçant une violation de l'
art. 97 CO
et se plaignant d'un établissement arbitraire des faits, reproche en substance à la cour cantonale d'avoir exclu toute responsabilité contractuelle de l'intimée.

Pour comprendre l'argumentation de la recourante exposée ci-dessous, il convient au préalable de rappeler certains principes juridiques et d'exposer le raisonnement retenu par les juges précédents.

4.1.
En matière contractuelle, les conditions d'une action en responsabilité sont énoncées à l'
art. 97 al. 1 CO
. La responsabilité est engagée lorsque quatre conditions cumulatives sont remplies : un dommage, une violation du contrat (sous la forme de l'inexécution ou de la mauvaise exécution d'une obligation), un rapport de causalité (naturelle et adéquate) et une faute (qui est présumée) (arrêts 4A_30/2020 du 23 mars 2021 consid. 3.2.1; 4A_41/2016 du 20 juin 2016 consid. 3.4; 4A_90/2011 du 22 juin 2011 consid. 2.2.2).

Conformément à l'
art. 8 CC
, le demandeur supporte le fardeau de l'allégation objectif (

objektive Behauptungslast
) et de la preuve

(Beweislast
) des trois premières conditions (
ATF 147 III 463
consid. 4.1 et les arrêts cités); cela signifie que, si le juge ne parvient pas à une conviction, n'est pas à même de déterminer si chacun de ces faits s'est produit ou ne s'est pas produit, il doit statuer au détriment du demandeur (
ATF 132 III 689
consid. 4.5;
129 III 18
consid. 2.6;
126 III 189
consid. 2b). En revanche, la faute est présumée, de sorte qu'il incombe au défendeur d'apporter la preuve du contraire, à savoir qu'aucune faute ne lui est imputable ("

à moins qu'il ne prouve
"); il supporte ainsi le fardeau de la preuve pour le cas où le juge ne serait convaincu ni de l'existence d'une faute, ni de son absence (renversement du fardeau de la preuve;
ATF 115 II 255
consid. 2b).

4.2.
La cour cantonale a considéré que la résiliation immédiate du contrat n'était pas justifiée; ce point n'est plus litigieux. Elle n'en a pas moins examiné les prestations fournies par l'intimée.

En amont de son examen, elle a relevé que dans l'appréciation d'"éventuels manquements au niveau des prestations de maintenance fournies" par l'intimée, il devait être tenu compte de l'infrastructure informatique de la recourante, qui était "en fin de vie" et qui résultait du budget restreint qu'elle allouait à son département informatique. Cela dit, l'instance précédente a constaté qu'aucune paralysie des activités commerciales de la recourante n'était survenue. Les choix opérés par l'intimée, sous la supervision de D.________, semblaient au contraire avoir été favorables au maintien du bon fonctionnement du système informatique. Par ailleurs, il n'était pas démontré que l'intimée, qui détenait les compétences nécessaires à l'exécution du contrat, aurait failli à son devoir d'informer et conseiller la recourante. Au contraire, il était démontré que l'intimée s'était plainte à la recourante, par courriel du 26 mars 2015, de retard dans le renouvellement de certains contrats et qu'elle s'était dite préoccupée par ce retard qui pouvait avoir un impact sur l'ensemble des fonctions du département informatique. La cour cantonale a évoqué le fait que de nombreux patchs et mises à jour n'avaient pas été appliqués ou installés par l'intimée, sans toutefois retenir que ce comportement constituait une violation contractuelle et en précisant que leur installation n'aurait pas eu pour effet d'améliorer le système informatique. Les prétendues négligences en matière de "maintenance logicielle" n'étaient pas démontrées, tout comme le fait que le site distant n'aurait pas été opérationnel. Le fait que le site distant n'aurait pas été testé était en outre "peu plausible" et aurait dans tous les cas été toléré par la recourante, à laquelle il incombait de vérifier si le site fonctionnait correctement. A la lire, la recourante avait également toléré la "mauvaise gestion ainsi que [le] désordre dans les salles informatiques". Cela exposé, aux yeux de la cour cantonale, les faits démontraient que la recourante était satisfaite des services de l'intimée, cette dernière n'ayant jamais fait l'objet d'un avertissement, ni même de simples critiques durant l'ensemble des rapports contractuels, alors même que le département informatique faisait chaque année l'objet d'un audit externe et d'un audit interne. Enfin, aucun élément du dossier n'avait permis d'établir un lien de causalité entre l'état du système informatique de la recourante au moment de la résiliation du contrat et une éventuelle insuffisance des prestations de maintenance que l'intimée s'était engagée à fournir. Compte tenu de ce qui précède, il n'était pas nécessaire "d'examiner si les [autres] conditions posées par l'
art. 97 CO
(notamment l'existence et la quotité du prétendu dommage [...]) seraient remplies".

4.3.

4.3.1.
Selon la recourante, l'état de fait de l'arrêt attaqué serait entaché d'arbitraire en ce qui concerne "la cause de l'état catastrophique du système informatique de la recourante". La cour cantonale aurait donné "un poids manifestement disproportionné aux allégations de l'intimée" en retenant que celle-ci "n'était qu'un bouc émissaire" et avait "toujours agi au mieux de ses compétences". Elle n'aurait par ailleurs "pas du tout [tenu] compte des difficultés pour la recourante d'obtenir des rapports de la part de l'intimée". Selon la recourante, il aurait fallu à cet égard "tenir compte des informations dont [elle] disposait et auxquelles elle avait accès avant de retenir contre elle son inaction". De plus, l'autorité précédente n'aurait pas tenu compte des compétences techniques respectives des parties. Enfin, elle aurait omis "des faits pourtant essentiels pour déterminer les obligations juridiques des parties, soit notamment le devoir de diligence de l'intimée vis-à-vis de la recourante". S'ensuivrait un résultat arbitraire, puisque la recourante serait tenue sur cette base de "récompenser un comportement en violation du contrat".

4.3.2.
La recourante se limite à exposer sa propre appréciation des circonstances factuelles, distincte de celle retenue par la cour cantonale, sans se conformer aux exigences applicables en matière d'arbitraire (
art. 106 al. 2 LTF
). En particulier, elle ne précise pas en quoi les faits constatés - qu'on peine à identifier faute de références précises à l'arrêt entrepris - auraient été arbitrairement établis. Par ailleurs, sa critique ne s'appuie sur aucun moyen de preuve versé à la procédure. En ce qui concerne la remise des rapports notamment, elle ne démontre pas avoir valablement allégué et prouvé qu'elle en aurait exigé la production par l'intimée, alors que le contrat prévoyait que les rapports mensuels ne devaient être fournis que sur demande de la recourante (arrêt attaqué, let. C.i).

Partant, le grief est irrecevable.

4.4.

4.4.1.
La recourante reproche encore à la cour cantonale d'avoir exclu toute indemnisation fondée sur l'
art. 97 CO
sur le seul fondement de l'absence de justes motifs imputables à l'intimée justifiant une résiliation anticipée du contrat. Juste motif et violation contractuelle seraient des notions indépendantes, l'absence de l'un n'excluant pas l'existence de l'autre. D'après la recourante, l'intimée aurait violé ses devoirs contractuels. Il aurait existé une relation de confiance entre les parties, ce qui expliquerait que la recourante ait toléré les prétendues violations de l'intimée sur la durée. L'intimée aurait "renâcl[é] à fournir des rapports sur son activité et l'état du système" et aurait communiqué difficilement avec son supérieur hiérarchique, D.________. Il aurait donc été difficile pour elle de connaître l'état exact de son système informatique, étant donné que D.________ n'aurait pas disposé des connaissances techniques suffisantes et que la communication entre les parties serait devenue difficile. Son budget insuffisant n'expliquerait pas l'ampleur du problème et il aurait été de la responsabilité de l'intimée de l'avertir si son comportement l'empêchait d'effectuer son travail et mettait en danger la sécurité du système informatique.

4.4.2.
L'argumentation développée par la recourante n'emporte nullement la conviction de la cour de céans. Contrairement à ce qu'elle prétend, la cour cantonale n'a pas exclu qu'une violation contractuelle, qui ne constituerait pas un juste motif de résiliation d'un contrat de durée, puisse néanmoins causer un dommage et engager la responsabilité contractuelle de son auteur. En revanche, ladite cour a considéré que les éléments avancés par la recourante ne permettaient pas d'établir l'existence de manquements imputables à l'intimée qui lui auraient causé un dommage.

Puisque c'est elle qui prétend au paiement de dommages-intérêts, la recourante devait prouver les trois conditions mentionnées ci-dessus, dont la violation du contrat. Or, dans son mémoire de recours, qui mêle inextricablement le fait et le droit, on ne perçoit pas par quel comportement l'intimée aurait failli à remplir ses obligations contractuelles. Il aurait notamment fallu alléguer précisément quelles étaient ces obligations contractuelles. La recourante brandit, en vain, que l'intimée n'aurait pas remis les rapports mensuels - feignant d'oublier que ces rapports ne devaient être remis que sur demande et qu'aucune demande dans ce sens ne ressort de l'état de fait. Elle prétend encore que l'intimée n'aurait pas respecté son devoir de l'informer, alors que le contraire ressort des faits souverainement constatés par la cour cantonale (

supra
let. A.d et A.h). Elle ne conteste pas même que les audits annuels n'ont que rarement relevé des problèmes concernant le service informatique, ni que les quelques recommandations qui étaient émises dans ce cadre ont toujours été suivies par l'intimée (

supra
let. A.f). Par ailleurs, la cour cantonale a exclu l'existence d'un lien de causalité naturelle et adéquate entre les prétendus manquements imputables à l'intimée et un éventuel dommage lié à l'état du système informatique. Ce point scelle à lui-seul le sort du recours sur cet aspect, le lien de causalité naturelle entre le fait générateur de responsabilité et le dommage étant une question de fait que la cour de céans n'examine que sous l'angle de l'arbitraire et la recourante n'ayant pas formulé un tel grief à ce propos.

Partant, le raisonnement de l'autorité précédente échappe à toute critique; le grief doit être rejeté.

5.

La recourante s'en prend encore au montant de l'indemnité allouée à l'intimée, lequel devrait, selon elle, être réduit.

5.1.
La cour cantonale a considéré qu'en raison de la résiliation injustifiée, l'intimée devait être placée dans la situation qui aurait été la sienne si le contrat avait été régulièrement exécuté jusqu'au 31 décembre 2017. Ainsi, elle pouvait prétendre au paiement des mensualités prévues contractuellement pour la période courant de mars 2016 à décembre 2017, point qui n'est pas contesté par la recourante. Il n'y avait par ailleurs pas lieu de réduire la quotité de l'indemnité que la recourante devait lui verser. En effet, la recourante n'avait ni allégué, ni démontré quels montants l'intimée aurait épargnés, respectivement gagnés en raison de la résiliation du contrat par la recourante.

5.2.
La recourante reproche à la cour cantonale d'avoir versé dans l'arbitraire en ne tenant pas compte des économies et gains réalisés par l'intimée. Selon elle, la cour cantonale aurait pourtant elle-même retenu, en faits, que l'intimée n'aurait plus exercé d'activité suite à la résiliation du contrat et que C.________, alors employé de l'intimée, aurait perçu des indemnités de chômage. Par ailleurs, conformément à l'
art. 42 al. 2 CO
, il aurait fallu reconnaître qu'elle n'était pas en mesure d'apporter "la preuve stricte de l'étendue de la réduction du dommage" de l'intimée, faute d'avoir obtenu les chiffres financiers de cette dernière malgré une demande formelle. S'ensuivrait une violation des
art. 377,
art. 42,
art. 44 CO
en lien avec l'
art. 99 CO
.

5.3.
Le grief n'est pas fondé. Même en cas d'application de l'
art. 42 al. 2 CO
, la partie qui allègue un dommage doit établir toutes les circonstances qui permettent au juge de procéder à son estimation. Or, la recourante ne démontre pas où les faits en question (dont elle ne serait soi-disant pas en mesure d'apporter la preuve) auraient été valablement allégués en procédure, pas plus qu'elle ne démontre avoir requis des moyens de preuve qui auraient permis de les prouver à satisfaction. Par conséquent, l'autorité inférieure n'a pas violé le droit fédéral en ne déduisant pas les prétendues économies réalisées par l'intimée.

6.

En définitive, le recours doit être rejeté dans la mesure de sa recevabilité. La recourante, qui succombe, supportera les frais de procédure (
art. 66 al. 1 LTF
) et versera des dépens à l'intimée (
art. 68 al. 1 et 2 LTF
).

Par ces motifs, le Tribunal fédéral prononce :

1.

Le recours est rejeté dans la mesure où il est recevable.

2.

Les frais judiciaires, arrêtés à 9'500 fr., sont mis à la charge de la recourante.

3.

La recourante versera à l'intimée une indemnité de 10'500 fr. à titre de dépens.

4.

Le présent arrêt est communiqué aux parties et à la Chambre civile de la Cour de justice du canton de Genève.

Lausanne, le 29 juillet 2024

Au nom de la I re Cour de droit civil

du Tribunal fédéral suisse

La Juge présidant : Kiss

La Greffière : Fournier