Faits :
A.
B._ avec siège à U._, qui exploite en ce lieu l'aérodrome..., ainsi que les infrastructures (notamment des immeubles) nécessaires à cet effet, a envisagé, pour rentabiliser ses constructions, de faire installer sur leurs toits une installation photovoltaïque en 2014.
Un projet a été élaboré par la société L._ SA, qui devait ensuite réaliser l'ouvrage pour le compte d'un investisseur, futur exploitant, qui paierait le prix convenu au constructeur (L._ SA) et un loyer à B._.
Par le biais d'un intermédiaire (X._), B._ a été mise en contact avec A._ AG (ci-après : A._). Cette dernière société, qui a d'emblée décidé de faire réaliser l'installation par une société tierce plutôt que par L._ SA, a sollicité des offres auprès de M._ SA.
En fin d'année 2013, les pourparlers entre les parties étaient déjà bien avancés. Celles-ci envisageaient la collaboration suivante : B._ céderait à A._ un droit distinct et permanent (DDP) portant sur l'utilisation des toits de ses immeubles, en contrepartie du versement d'un loyer annuel de 2'500 fr. dans la phase initiale d'exploitation, puis de 5'000 fr. dès l'obtention du tarif de " Rétribution à prix coûtant du courant injecté " (RPC) Swissgrid. Certains points importants restaient à régler, soit notamment la validation du projet par l'Office fédéral de l'aviation civile (OFAC), l'obtention du permis de construire, la constitution du DDP dont la durée faisait encore l'objet de discussions, tout comme la possibilité pour B._ de reprendre l'installation à son compte à l'échéance du DDP pour un franc symbolique.
Le 12 décembre 2013, Y._, administrateur et vice-président de B._, a sollicité une offre finale de la part de A._. Par courriel adressé le même jour à Z._, administrateur de A._ chargé de la gestion du projet, il a précisé les conditions auxquelles un accord pouvait être envisagé : B._ devait avoir la possibilité de reprendre l'installation pour 1 fr. après trente ans d'exploitation; A._ se chargeait des frais de mise à l'enquête publique; un loyer annuel de 2'500 fr., respectivement de 5'000 fr. dès l'obtention du tarif RPC Swissgrid, serait versé à B._. Cette dernière a indiqué qu'elle ne souhaitait pas transiger en dehors de ce cadre.
Le 13 décembre 2013, A._ a transmis sa proposition de convention, aménagée conformément aux dernières exigences posées par B._. A._ a toutefois ajouté laisser le soin à celle-ci de " finaliser la durée du DDP ", des divergences subsistant sur cette question, considérée par chacune des parties comme un " élément essentiel des pourparlers ".
Le Conseil d'administration de B._ s'est réuni le 18 décembre 2013. Il résulte de la partie " Commentaires " du ch. 2.3 de son procès-verbal (qui n'a pas été transmis à A._) qu'une convention est en pourparlers avec A._. Dans les " tractations en cours ", il est mentionné : " à l'échéance du contrat, soit après 30 ans, B._ devrait avoir l'option de reprendre ou non les installations pour 1.- ". Il est précisé que les autorisations de construire définitives ne sont pas arrivées. Dans la partie " Propositions/décisions " du procès-verbal, il est ajouté : " A finaliser si dans cette ligne (...). Avant signature, s'assurer auprès de l'OFAC que tout est conforme ! (...) ".
Par courriel du 19 décembre 2013, A._ a demandé à B._ si la séance du conseil d'administration avait eu lieu et si la question de la centrale solaire avait pu être abordée. Par courriel du même jour, Y._ lui a répondu que B._ avait approuvé son projet, sous réserve de quelques modifications mineures du texte de la convention, précisant qu'elle devait encore obtenir l'approbation de l'OFAC.
A la suite de conversations téléphoniques avec A._, la société N._ Ltd (ci-après: N._) a transmis à celle-ci, par courrier du 23 décembre 2013, une offre portant sur le projet de U._. Pour un montant de 23'520 USD, N._ s'engageait à sélectionner des fournisseurs et à effectuer des contrôles de qualité des équipements. Par signature du 27 décembre 2013, A._ a approuvé cette offre.
Le 29 janvier 2014, A._ a adressé à B._ un projet de convention, remanié conformément aux demandes de B._.
Par courriel du 3 février 2014, X._ a fait savoir à A._ que Y._ lui avait " communiqué une proposition de convention avec B._ " et, le 6 février 2014, il a rappelé qu'il avait " apporté cette affaire qui, si elle se conclut, justifierait une modeste commission d'apport ".
Le 11 février 2014, B._ a communiqué à A._ que le projet rencontrait de l'intérêt de la part d'autres investisseurs, qu'une offre alternative sur 25 ans avec un paiement à l'avance et en une fois de la somme des locations lui avait été faite, qu'il informerait son conseil d'administration de cette nouvelle offre et que celui-ci prendrait la décision finale " ces prochains jours ".
Par courrier recommandé du 13 février 2014, A._ a indiqué au conseil d'administration de B._ que la confirmation qui lui avait été donnée le 19 décembre 2013 était claire et que cela l'avait convaincu que, sous la réserve de l'approbation de l'OFAC, les parties étaient liées contractuellement. A._ a relevé qu'elle avait pris, sur la base des assurances données, un nombre important d'engagements. Elle a prié B._ de cesser toute négociation éventuelle avec des tiers.
Le 18 février 2014, B._ a invité A._ à lui communiquer une nouvelle offre " tenant compte des modifications communiquées par téléphone ".
A._ a refusé de renégocier les termes d'un accord qu'elle estimait d'ores et déjà conclu. Le même jour, B._ a rappelé à A._ que son conseil d'administration avait accepté son offre sous réserve de modifications à la convention et de l'approbation de l'OFAC. Elle a relevé qu'aucun engagement ne pouvait se faire sans la signature conjointe et écrite de deux membres autorisés du conseil d'administration, de sorte qu'en l'état, aucun engagement ne liait les deux sociétés. B._ a alors évoqué les modifications qui devaient être apportées à la convention.
Par courrier recommandé du 20 février 2014, B._ a informé A._ que son conseil d'administration avait décidé de rompre définitivement toute relation avec elle, le lien de confiance étant rompu.
Le 13 mars 2014, le conseil de A._ a imparti à B._ un délai au 31 mars 2014 pour entreprendre l'exécution de la convention acceptée le 19 décembre 2013.
B._ n'a pas donné suite à cette mise en demeure.
Par courrier du 29 décembre 2014, l'administrateur de A._ a facturé à B._ un montant total de 31'644 fr. correspondant aux frais engagés pour le projet de U._.
B.
Le 28 avril 2015, A._ a ouvert action contre B._ devant le Tribunal civil de l'arrondissement de l'Est vaudois. Elle a conclu à ce que sa partie adverse lui paie le montant de 41'891 fr.50, intérêts en sus, et de 23'520 USD, intérêts en sus et, subsidiairement, à ce que la défenderesse lui verse le montant de 41'891 fr.50, intérêts en sus, et de 21'449 fr.10, intérêts en sus. Ces sommes englobaient le coût inhérent au temps consacré à diverses séances (y compris avec des partenaires), aux frais de déplacements, à des honoraires d'avocat, à la participation à un congrès sur l'énergie à Abu Dhabi, aux frais liés à ce voyage, ainsi qu'à une facture (en USD) de la société N._ chargée de sélectionner les fournisseurs et d'effectuer des contrôles de qualité.
La défenderesse a conclu au rejet des conclusions de la demande.
Par jugement du 25 avril 2018, le Tribunal civil a rejeté les conclusions prises par la demanderesse, mis les frais judiciaires (7'949 fr.) et les dépens (15'000 fr.) à sa charge.
Les premiers magistrats ont jugé que la culpa in contrahendo n'était, sur le principe, pas réalisée. Ils ont constaté que les pourparlers étaient certes bien avancés, mais que l'OFAC n'avait pas encore donné son aval et que le permis de construire définitif n'avait pas encore été délivré. Il s'agissait d'un point essentiel du contrat, de sorte qu'aucun accord n'existait entre les parties. La défenderesse était libre d'examiner d'autres offres en toute bonne foi, dès lors qu'à aucun moment elle n'avait affirmé vouloir négocier exclusivement avec la demanderesse, celle-ci n'ayant d'ailleurs jamais posé cette exigence. Dans une motivation subsidiaire, les premiers juges ont également retenu que les conditions de la responsabilité (preuve du dommage et du lien de causalité) n'étaient pas non plus réalisées.
Par arrêt du 26 décembre 2018, la Cour d'appel du Tribunal cantonal vaudois a admis partiellement (sur la seule question des dépens) l'appel interjeté par la demanderesse et réduit le montant des dépens à sa charge (6'000 fr.). Pour le reste, elle a entièrement confirmé le jugement entrepris.
En substance, la cour cantonale a considéré qu'au vu des circonstances, " on ne peut pas exclure que [la défenderesse] ait suscité [auprès de la demanderesse] par son attitude, singulièrement par le courriel du 19 décembre 2013, l'espoir infondé qu'un contrat serait certainement conclu avec elle, espoir qu'elle n'a pas dissipé par la suite (...). Partant, on ne saurait d'emblée exclure une responsabilité découlant d'une culpa in contrahendo, même si une telle responsabilité ne peut être retenue que restrictivement selon la jurisprudence ". La cour cantonale a toutefois fini par rejeter l'appel en retenant que les autres conditions de la responsabilité (dommage et lien de causalité) n'étaient pas réalisées.
C.

Contre cet arrêt cantonal, la demanderesse exerce un recours en matière civile au Tribunal fédéral. Elle conclut, principalement, à sa réforme en ce sens que la défenderesse soit condamnée à lui verser le montant de 9'807 fr.50, intérêts en sus, et celui de 23'520 USD (subsidiairement : 21'449 fr.10), intérêts en sus, et à ce que les frais de la procédure cantonale soient mis à la charge de la défenderesse. Subsidiairement, elle conclut à l'annulation de l'arrêt entrepris et au renvoi de la cause à l'autorité cantonale pour nouvelle décision (plus subsidiairement : au renvoi au Tribunal d'arrondissement de l'Est vaudois). La recourante considère que la cour cantonale a établi arbitrairement les faits (art. 9 Cst.) et, relevant qu'il convient de reconnaître clairement (sur le principe) la responsabilité de la défenderesse fondée sur la culpa in contrahendo, que l'autorité précédente a violé le droit fédéral en retenant que le dommage et le lien de causalité n'ont pas été prouvés.
L'intimée conclu au rejet du recours dans la mesure de sa recevabilité.
Chacune des parties a encore déposé des observations.
Considérant en droit :
1.
1.1. Formé en temps utile (art. 100 al. 1 et 45 al. 1 LTF), dirigé contre une décision finale (<ref-law>), rendue sur appel de la demanderesse par le tribunal supérieur du canton (<ref-law>) dans une affaire relevant de la responsabilité fondée sur la culpa in contrahendo (<ref-law>), dont la valeur litigieuse excède 30'000 fr. (<ref-law>), le recours en matière civile est recevable au regard de ces dispositions.
1.2. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (<ref-law>). 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. (<ref-ruling> consid. 4.1.2; <ref-ruling> consid. 5.1) - ou en violation du droit au sens de l'<ref-law> (<ref-law>), et si la correction du vice est susceptible d'influer sur le sort de la cause (<ref-law>).
1.3. Sous réserve de la violation des droits constitutionnels (<ref-law>), le Tribunal fédéral applique le droit d'office (<ref-law>) à l'état de fait constaté dans l'arrêt cantonal ou, cas échéant, à l'état de fait qu'il aura rectifié. Il n'est toutefois 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 (<ref-ruling> consid. 1.4 et l'arrêt cité).
2.
2.1. On relèvera d'emblée que la cour cantonale a retenu qu'elle ne pouvait pas écarter d'emblée une responsabilité découlant de la culpa in contrahendo au motif qu'elle ne pouvait exclure que le comportement de la défenderesse ait éveillé la confiance de la demanderesse. Or, si la formulation négative employée par la cour cantonale fait état d'une possibilité (l'attitude de la défenderesse a pu générer une attente auprès de la demanderesse), elle ne répond pas à la question (déterminante) qui est de savoir si la confiance de la demanderesse a effectivement été éveillée en l'espèce.
La recourante soutient que, malgré la formulation inadéquate employée par la cour cantonale, la responsabilité de la défenderesse est, sur le principe, clairement engagée. A cet égard, la recourante reconnaît d'emblée que la convention litigieuse était un acte soumis à l'exigence de la forme authentique, et que la question de la culpa in contrahendo doit être examinée dans cette perspective. Elle ne prétend alors pas avoir reçu la garantie que le contrat serait conclu avec elle, ni qu'elle bénéficierait d'une exclusivité sur le projet de U._. Elle insiste plutôt sur le fait qu'un accord avait été trouvé " sur tous les points [du] contrat " et que la défenderesse ne pouvait ensuite refuser, sans aucune raison, de signer la convention devant le notaire. La culpa in contrahendo serait dès lors engagée sur le principe, malgré l'exigence de forme du contrat visé par les parties.
Dans la suite de son argumentation, la recourante soutient que les juges cantonaux auraient dû se prononcer sur le dommage qu'elle a subi. Selon elle, ils auraient violé le droit fédéral en refusant d'admettre qu'elle avait bien apporté la preuve de l'existence d'un dommage en lien de causalité avec la faute de la défenderesse.
2.2.
2.2.1. En vertu du principe de la liberté contractuelle, chacun est libre d'entamer une négociation et de l'interrompre quand il le veut, même sans justification. L'exercice de cette liberté est toutefois limité par les règles de la bonne foi. La culpa in contrahendo repose sur l'idée que l'ouverture de pourparlers crée déjà une relation juridique entre partenaires et leur impose des devoirs réciproques, soit en particulier celui de négocier sérieusement, conformément à leurs véritables intentions (<ref-ruling> consid. 6c p. 354). Une partie ne peut pas, par une attitude contraire à ses véritables intentions, éveiller chez l'autre l'espoir illusoire qu'une affaire sera conclue et l'amener ainsi à prendre des dispositions dans cette vue (<ref-ruling> consid. 5.2 p. 203; 77 II 135 consid. 2a p. 137; arrêt 4A_229/2014 du 19 septembre 2014 consid. 4.1). Celui qui engage des pourparlers ne doit pas faire croire que sa volonté de conclure est plus forte qu'en réalité (arrêts 4A_615/2010 du 14 janvier 2011 consid. 4.1.1; 4C.247/2005 du 17 novembre 2005 consid. 3.1 publié in JdT 2006 I 163).
La partie qui ne respecte pas ces obligations répond non seulement lorsqu'elle a fait preuve d'astuce au cours des pourparlers, mais déjà lorsque son attitude a été de quelque manière fautive, qu'il s'agisse de dol ou de négligence, dans les limites tout au moins de la responsabilité qu'elle encourt sous l'empire du contrat envisagé par les parties (<ref-ruling> consid. 4b p. 432; arrêts 4A_229/2014 déjà cité consid. 4.1; 4C.373/2002 du 18 mars 2003 consid. 4.1).
Toutefois, ce n'est que dans des situations exceptionnelles qu'une culpa in contrahendo sera retenue en cas de rupture des pourparlers. Il ne suffit pas que les négociations aient duré longtemps, ni que la partie à l'origine de la rupture ait été au courant des investissements effectués par l'autre; la partie qui engage des frais avant la conclusion du contrat le fait en principe à ses risques et périls (arrêt 4C.247/2005 déjà cité consid. 3.1). Le comportement contraire aux règles de la bonne foi ne consiste pas tant à avoir rompu les pourparlers qu'à avoir maintenu l'autre partie dans l'idée que le contrat serait certainement conclu ou à n'avoir pas dissipé cette illusion à temps (<ref-ruling> consid. 5.2 p. 203; arrêt 4C.152/2001 du 29 octobre 2001 consid. 3a publié in SJ 2002 I 164). Ainsi, le Tribunal fédéral a admis qu'une banque engageait sa responsabilité précontractuelle pour avoir laissé une succursale négocier un contrat jusqu'au texte définitif pendant des mois, comme si ladite entité était compétente pour conclure (ce qui n'était pas le cas), la convention n'étant finalement pas signée sur refus du siège principal (<ref-ruling>, cité dans l'arrêt 4C.152/2001 déjà cité consid. 3a).
2.2.2. Lorsque le contrat en vue est soumis à des exigences de forme, une culpa in contrahendo pour rupture des pourparlers sera d'autant moins facilement admise que les prescriptions de forme ont précisément pour but de préserver les parties d'un engagement. Les parties ont un devoir accru d'envisager la possibilité d'un échec jusqu'à la conclusion du contrat (arrêt 4A_615/2010 déjà cité consid. 4.1 et les auteurs cités).
L'échec des négociations n'entraînera donc en principe pas de responsabilité, sauf si des éléments particuliers tels qu'un accord oral ou écrit ont nourri la confiance légitime que le contrat serait certainement conclu. Il est en effet contraire aux règles de la bonne foi de donner sans réserve son accord de principe à la conclusion d'un contrat formel et de refuser in extremis, sans raison, de le traduire dans la forme requise. La partie qui refuse de traduire dans la forme légale l'accord auquel elle est parvenue avec son partenaire engage sa responsabilité autant qu'elle pouvait prévoir le dommage causé à celui-ci (<ref-ruling> consid. 5.2 p. 203 s.; arrêts 4A_229/2014 déjà cité consid. 4.1; 4A_615/2010 déjà cité consid. 4.1 et les auteurs cités).
L'accord entre les parties (qui permet, le cas échéant, de fonder la culpa in contrahendo même lorsqu'une exigence de forme est prévue) est valable lorsque les parties se sont mises d'accord (manifestation réciproque et concordante de leur volonté) sur tous les points essentiels du contrat (art. 1 al. 1 et 2 al. 1 CO). Cela n'est pas le cas si les parties négocient un contrat visant à constituer un droit de superficie (qui nécessite la forme authentique) et qu'elles ne se sont pas encore mises d'accord sur la durée de ce droit (arrêt 4C.152/2001 déjà cité consid. 3b).
2.3. S'agissant de l'objet des pourparlers, les juges cantonaux désignent exclusivement la création d'un DDP, dont l'acte constitutif est soumis à la forme authentique (<ref-law> et <ref-law>). Ils omettent de signaler que si la servitude portant sur un immeuble est établie pour moins de trente ans, elle ne peut être immatriculée comme DDP (cf. <ref-law>). Cette imprécision n'a toutefois aucune incidence sur l'issue de la présente cause, puisque, si les parties prévoient de constituer une " simple " servitude, son acte constitutif doit aussi être passé en la forme authentique (<ref-law>). Cela étant, la demanderesse devait, dans tous les cas, faire preuve d'une circonspection particulière quant à ses chances de conclure un contrat soumis à la forme authentique. En d'autres termes, il lui incombait d'établir l'existence d'éléments spéciaux propres à susciter sa confiance légitime que le contrat serait certainement conclu. Or, au regard de la jurisprudence précitée, le comportement de la défenderesse n'était pas, dans les circonstances de l'espèce, de nature à fonder une telle confiance.
2.3.1. On ne saurait s'arrêter au fait que, dans son courriel du 19 décembre 2013, Y._ a, de manière générale, confirmé à la demanderesse que la défenderesse avait approuvé son projet. Cela reviendrait à ignorer deux points de fait auxquels la cour cantonale fait pourtant explicitement référence.
Premièrement, la confirmation de Y._ n'a pas été donnée sans réserve, puisqu'il a rappelé que l'OFAC devait encore valider le projet. Il a aussi explicitement relevé que des " modifications mineures du texte de la convention " devaient encore intervenir. On ne saurait, sur la base de cette formulation, en inférer que les pourparlers avaient abouti et en conclure - comme le soutient la recourante - que seules des adaptations purement rédactionnelles étaient encore nécessaires. Il résulte en effet de l'arrêt entrepris que le projet a ensuite fait l'objet d'un "remaniement " par la demanderesse (" remanié conformément aux demandes de B._ "), le projet adapté n'étant renvoyé que le 29 janvier 2014 à la défenderesse.
Secondement, et cela est déterminant, les magistrats cantonaux ont retenu que les parties étaient toujours en désaccord au sujet du DDP (sa durée), qui était le principal objet des discussions. En l'absence d'échange de consentement entre les parties sur ce point, on ne saurait en conclure que celles-ci se sont bien mises d'accord sur tous les points essentiels de la convention.
La recourante tire argument du fait que, le 13 décembre 2013, elle a communiqué à la défenderesse qu'elle lui laissait le soin " de finaliser la durée du DDP ". Ce faisant, elle se limite à reprendre un passage de l'arrêt attaqué qu'elle estime favorable à sa thèse. Elle n'explique par contre pas, en se conformant aux exigences strictes de la LTF, en quoi le contenu de ce passage aurait dû conduire la cour cantonale à retenir, sous peine de sombrer dans l'arbitraire (art. 9 Cst.), qu'il n'existait plus aucune divergence entre les parties quant à la durée du DDP. Le Tribunal fédéral ne saurait dès lors entrer en matière sur cette question.
Quoi qu'il en soit, on voit mal comment la sollicitation de la demanderesse figurant dans son envoi du 13 décembre 2013 (tendant à ce que la défenderesse finalise la durée du DDP) permettrait de convaincre du caractère arbitraire de la constatation cantonale (selon laquelle des divergences persistaient entre les parties quant à la durée du DDP). Dans les circonstances de l'espèce, cette sollicitation semble plutôt résonner comme une invitation (faite à la défenderesse) à rechercher une solution (nouvelle proposition) concernant la durée du DDP, susceptible de mettre un terme aux discussions. Force est toutefois de constater qu'elle n'a pas conduit à un accord entre les parties sur la question litigieuse.
2.3.2. En conclusion, les pourparlers étaient certes déjà bien avancés, mais les parties n'avaient pas encore atteint le stade où il ne restait plus qu'à formaliser leur accord par un contrat en la forme authentique. La demanderesse n'ayant été assurée (par oral ou par écrit) d'aucune exclusivité sur le projet de U._, chaque interlocuteur pouvait encore renoncer à concrétiser la constitution du DDP. On ajoutera que l'éventualité de la signature d'un contrat devant notaire était d'autant plus incertaine que, préalablement, deux autorisations devaient encore nécessairement être délivrées (ce que la demanderesse savait). Si l'aval de l'OFAC semblait acquis (selon la recourante), celle-ci ne démontre pas que le permis de construire aurait été obtenu avec la même facilité. Dans ces conditions, la demanderesse devait, malgré l'avancement des pourparlers, d'autant plus envisager la possibilité d'un échec et savoir que les dépenses qu'elle engagerait pour l'exécution du (futur) contrat resteraient à sa charge.
Il en résulte que la responsabilité fondée sur la culpa in contrahendo doit être niée sur le principe.
Cela étant, il est superflu d'examiner les conditions du dommage et de la causalité. De même, la question de la représentation de la société défenderesse peut rester ouverte. Il n'y a en particulier pas lieu d'examiner si les communications de Y._ - qui ne disposait pas de la signature individuelle - pouvaient vraiment engager la responsabilité précontractuelle de la défenderesse.
2.4. Les autres arguments soulevés par la recourante ne permettent pas de revenir sur la conclusion qui précède.
C'est en vain qu'elle insiste sur le fait que, dans son courriel du 12 décembre 2013, Y._ lui avait demandé une " offre finale ", de façon à pouvoir obtenir un document définitif sur lequel le conseil d'administration pourrait se prononcer lors de sa séance du 18 décembre 2013. Il demeure que des divergences subsistaient entre les parties sur le contenu de l'accord.
On ne saurait pas non plus suivre la recourante lorsque, se fondant sur le constat que X._ a évoqué le versement d'une commission d'apporteurs d'affaires, elle en infère que la " conclusion de l'accord avec la recourante n'était plus remise en cause " et que X._ partait " donc du principe que l'accord [était] conclu ". La recourante se base en réalité sur une version des faits étrangère à celle figurant dans l'arrêt attaqué. Il résulte en effet de celui-ci que X._ a eu connaissance de l'existence de la " proposition de convention avec B._ " et qu'il a explicitement indiqué, après avoir rappelé qu'il avait apporté cette affaire, qu'une modeste commission se justifierait " si [l'affaire] se conclut ".
Enfin, la recourante soutient que Y._ se savait lié par l'offre de la demanderesse; la preuve en serait fournie par le fait qu'il n'a, dans son courriel du 11 février 2014, pas proposé à la demanderesse de renégocier. Force est toutefois de constater qu'une proposition de renégociation lui a été faite une semaine plus tard, le 18 février 2014. L'argument se révèle sans consistance.
Quant au grief tiré de l'arbitraire dans l'établissement des faits (art. 9 Cst.), également soulevé par la recourante, il porte sur un point de fait dont l'éventuelle correction n'aurait aucune incidence sur l'issue de la cause. Il n'y a donc pas lieu de s'y attarder.
En conclusion, l'arrêt attaqué peut être confirmé, par substitution des motifs qui précèdent.
3.
Il résulte des considérations qui précèdent que le recours en matière civile doit être rejeté dans la mesure où il est recevable.
Les frais et les dépens sont mis à la charge de la recourante, qui succombe (art. 66 al. 1 et 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 à 2'000 fr., sont mis à la charge de la recourante.
3.
La recourante versera à l'intimée une indemnité de 2'500 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux parties et au Tribunal cantonal du canton de Vaud, Cour d'appel civile.
Lausanne, le 4 septembre 2019
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
Le Greffier : Piaget