{"id":15559,"date":"2026-06-09T13:30:16","date_gmt":"2026-06-09T13:30:16","guid":{"rendered":"https:\/\/www.milleniumproperties.ch\/vente-france\/"},"modified":"2026-10-15T13:16:28","modified_gmt":"2026-10-15T13:16:28","slug":"international-real-estate","status":"publish","type":"page","link":"https:\/\/www.milleniumproperties.ch\/en\/international-real-estate\/","title":{"rendered":"VENTE FRANCE"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"15559\" class=\"elementor elementor-15559 elementor-3352\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8b23d54 e-con-full e-flex e-con e-parent\" data-id=\"8b23d54\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-075aaca e-con-full e-flex e-con e-child\" data-id=\"075aaca\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e5b2a47 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"e5b2a47\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">International<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2f34431 e-con-full e-flex e-con e-parent\" data-id=\"2f34431\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f4522de elementor-widget elementor-widget-shortcode\" data-id=\"f4522de\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div id=\"carte-biens-filtres-overlay\"><\/div>\n\n    <div id=\"carte-biens-filtres\">\n        <button type=\"button\" id=\"btn-fermer-filtres-croix\" aria-label=\"Close\">\n            <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"5\" y1=\"5\" x2=\"19\" y2=\"19\"\/><line x1=\"19\" y1=\"5\" x2=\"5\" y2=\"19\"\/><\/svg>\n        <\/button>\n        <div class=\"filtre-champ\">\n            <label for=\"filtre-recherche\">Search<\/label>\n            <input type=\"text\" id=\"filtre-recherche\" placeholder=\"e.g. 1292, Chamb\u00e9sy or a reference\">\n        <\/div>\n                <div class=\"filtre-champ\">\n            <label for=\"filtre-transaction\">Transaction<\/label>\n            <select id=\"filtre-transaction\"><option value=\"\">All<\/option><\/select>\n        <\/div>\n                <div class=\"filtre-champ\">\n            <label for=\"filtre-type-bien\">Property type<\/label>\n            <select id=\"filtre-type-bien\">\n                <option value=\"\">All<\/option>\n                <option value=\"Appartement\">Apartment<\/option>\n                <option value=\"Maison\">House<\/option>\n                <option value=\"Commercial\">Commercial<\/option>\n            <\/select>\n        <\/div>\n        <div class=\"filtre-champ\">\n            <label for=\"filtre-pieces\">Rooms<\/label>\n            <select id=\"filtre-pieces\">\n                <option value=\"\">All<\/option>\n                <option value=\"1\">1<\/option>\n                <option value=\"2\">2<\/option>\n                <option value=\"3\">3<\/option>\n                <option value=\"4\">4<\/option>\n                <option value=\"5\">5<\/option>\n                <option value=\"6\">6+<\/option>\n            <\/select>\n        <\/div>\n        <div class=\"filtre-champ\">\n            <label for=\"filtre-prix-min\">Min price (CHF)<\/label>\n            <input type=\"number\" id=\"filtre-prix-min\" placeholder=\"0\" min=\"0\" step=\"10000\">\n        <\/div>\n        <div class=\"filtre-champ\">\n            <label for=\"filtre-prix-max\">Max price (CHF)<\/label>\n            <input type=\"number\" id=\"filtre-prix-max\" placeholder=\"No max\" min=\"0\" step=\"10000\">\n        <\/div>\n        <button type=\"button\" id=\"btn-fermer-filtres\">View results<\/button>\n        <button type=\"button\" id=\"btn-reset-filtres\">Reset search<\/button>\n    <\/div>\n\n    <div id=\"carte-biens-topbar\">\n        <button type=\"button\" id=\"btn-ouvrir-filtres\">\n            <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\"\/><circle cx=\"9\" cy=\"6\" r=\"2\" fill=\"currentColor\" stroke=\"none\"\/><line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"\/><circle cx=\"15\" cy=\"12\" r=\"2\" fill=\"currentColor\" stroke=\"none\"\/><line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\"\/><circle cx=\"7\" cy=\"18\" r=\"2\" fill=\"currentColor\" stroke=\"none\"\/><\/svg>\n            Filters            <span id=\"badge-filtres-actifs\" class=\"filtres-badge\"><\/span>\n        <\/button>\n\n        <div id=\"carte-biens-ligne-resultats\">\n            <div id=\"carte-biens-compteur\"><\/div>\n            <button type=\"button\" id=\"btn-toggle-vue\">\n                <span id=\"icone-vue-carte\">\n                    <svg viewBox=\"0 0 24 24\" width=\"15\" height=\"15\" fill=\"currentColor\"><path d=\"M15 5.1L9 3 3 5.1v15.8l6-2.1 6 2.1 6-2.1V3l-6 2.1zM9 5.2l6-1.9v15.5l-6 1.9V5.2z\"\/><\/svg>\n                <\/span>\n                <span id=\"icone-vue-liste\">\n                    <svg viewBox=\"0 0 24 24\" width=\"15\" height=\"15\" fill=\"currentColor\"><rect x=\"3\" y=\"4\" width=\"4\" height=\"4\"\/><rect x=\"9\" y=\"4\" width=\"12\" height=\"4\"\/><rect x=\"3\" y=\"10\" width=\"4\" height=\"4\"\/><rect x=\"9\" y=\"10\" width=\"12\" height=\"4\"\/><rect x=\"3\" y=\"16\" width=\"4\" height=\"4\"\/><rect x=\"9\" y=\"16\" width=\"12\" height=\"4\"\/><\/svg>\n                <\/span>\n                <span id=\"btn-toggle-vue-texte\">Map<\/span>\n            <\/button>\n        <\/div>\n    <\/div>\n    <div id=\"carte-biens-topbar-spacer\"><\/div>\n\n    <div id=\"carte-biens-wrapper\">\n        <div id=\"liste-biens\"><\/div>\n\n        <div id=\"carte-biens-zone\">\n            <div id=\"carte-biens\"><\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n    window.biensData = [{\"titre\":\"HAB\\u00c8RE-LULLIN \\u2014 LAND WITH DEVELOPMENT POTENTIAL\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/land\\\/habere-lullin\\\/sch-2607\\\/\",\"lat\":46.226512136464855,\"lng\":6.446391952965042,\"prix\":325000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/c0441\\\/1435\\\/pictures\\\/objects\\\/1435_6ab4daf9a77f51.49085518.jpg\",\"commune\":\"Hab\\u00e8re-Lullin\",\"transaction\":\"vente\",\"type_bien\":\"terrain\",\"reference\":\"SCH 2607\",\"npa\":\"74420\",\"surface\":\"\",\"pieces\":0,\"chambres\":\"\",\"nouveau\":true,\"statut_label\":\"\"},{\"titre\":\"Real Estate Investment - Set of 6 Apartments (with basements and parki\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/building\\\/habere-lullin\\\/sch-2605\\\/\",\"lat\":46.227524779966096,\"lng\":6.448002724372674,\"prix\":1250000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/ef268\\\/1435\\\/pictures\\\/objects\\\/1435_6acdfba30261b5.43032689.jpg\",\"commune\":\"Hab\\u00e8re-Lullin\",\"transaction\":\"vente\",\"type_bien\":\"immeuble\",\"reference\":\"SCH 2605\",\"npa\":\"74420\",\"surface\":\"487\",\"pieces\":0,\"chambres\":\"\",\"nouveau\":true,\"statut_label\":\"\"},{\"titre\":\"Apartment with an exceptional ocean view in Villefranche-sur-Mer\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/apartment\\\/villefranche-sur-mer\\\/bp-2609\\\/\",\"lat\":43.706153736974485,\"lng\":7.310662,\"prix\":890000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/95ebf\\\/1435\\\/pictures\\\/objects\\\/1435_6ab52edcc27c43.73141744.jpg\",\"commune\":\"Villefranche-sur-Mer\",\"transaction\":\"vente\",\"type_bien\":\"appartement\",\"reference\":\"BP 2609\",\"npa\":\"06230\",\"surface\":\"63\",\"pieces\":3,\"chambres\":\"2\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Top-floor 3-room apartment with private yard\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/apartment\\\/collonges-sous-saleve\\\/km-sch-2606\\\/\",\"lat\":46.13975376610258,\"lng\":6.1473846185837555,\"prix\":349000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/180bc\\\/1435\\\/pictures\\\/objects\\\/1435_6ab3d9307e8530.54654092.jpg\",\"commune\":\"Collonges-sous-Sal\\u00e8ve\",\"transaction\":\"vente\",\"type_bien\":\"appartement\",\"reference\":\"KM\\\/SCH 2606\",\"npa\":\"74160\",\"surface\":\"72\",\"pieces\":3,\"chambres\":\"2\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Stunning duplex with a terrace in a residence with a pool\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/apartment\\\/cannes\\\/bp-2608\\\/\",\"lat\":43.55373332865582,\"lng\":6.969792814949969,\"prix\":0,\"prix_affiche\":false,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/ae3bc\\\/1435\\\/pictures\\\/objects\\\/1435_6ab79acac20e62.64524762.jpg\",\"commune\":\"Cannes\",\"transaction\":\"vente\",\"type_bien\":\"appartement\",\"reference\":\"BP 2608\",\"npa\":\"06150\",\"surface\":\"138\",\"pieces\":4,\"chambres\":\"3\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Panoramic view of Lake Geneva and Mont Blanc - Gex (FRANCE)\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/gex\\\/km-2589\\\/\",\"lat\":46.350390045961646,\"lng\":6.051422370120259,\"prix\":1180000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/f50f2\\\/1435\\\/pictures\\\/objects\\\/1435_6aa43180c8f405.42809628.jpg\",\"commune\":\"Gex\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"KM 2589\",\"npa\":\"01170\",\"surface\":\"203.2\",\"pieces\":9,\"chambres\":\"4\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Authentic Provencal farmhouse with elegance near Uz\\u00e8s\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/uzes\\\/sch-2551\\\/\",\"lat\":43.96265270176852,\"lng\":4.369863274716125,\"prix\":1995000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/00c98\\\/1435\\\/pictures\\\/objects\\\/1435_6a563a65744691.88995596.jpg\",\"commune\":\"Uz\\u00e8s\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"SCH 2551\",\"npa\":\"30700\",\"surface\":\"360\",\"pieces\":11,\"chambres\":\"6\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Magnificent Villa in Divonne les Bains\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/divonne-les-bains\\\/sh-mc-2159-3\\\/\",\"lat\":46.34754057609251,\"lng\":6.134873429603727,\"prix\":2990000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/7bb5f\\\/1435\\\/pictures\\\/objects\\\/1435_6a6255ed7b5037.40252219.jpg\",\"commune\":\"Divonne-les-Bains\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"SH\\\/MC- 2159\\\/3\",\"npa\":\"01220\",\"surface\":\"\",\"pieces\":7,\"chambres\":\"5\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Superb Chalet in Meg\\u00e8ve, close to village on foot\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/megeve\\\/mc-2266-3\\\/\",\"lat\":45.85974505420607,\"lng\":6.632384181327988,\"prix\":3550000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/f46a4\\\/1435\\\/pictures\\\/objects\\\/1435_6924265f69c984.69318912.jpg\",\"commune\":\"Meg\\u00e8ve\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"MC- 2266\\\/3\",\"npa\":\"74120\",\"surface\":\"243.7\",\"pieces\":7,\"chambres\":\"4\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Superb Apartment in Meg\\u00e8ve- Mont-d\\u2019Arbois\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/apartment\\\/megeve\\\/mc-2260-2\\\/\",\"lat\":45.860016408628475,\"lng\":6.635725090348938,\"prix\":3290000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/611a1\\\/1435\\\/pictures\\\/objects\\\/1435_69243b23a98391.05547637.jpg\",\"commune\":\"Meg\\u00e8ve\",\"transaction\":\"vente\",\"type_bien\":\"appartement\",\"reference\":\"MC- 2260\\\/2\",\"npa\":\"74120\",\"surface\":\"190.4\",\"pieces\":6,\"chambres\":\"6\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Superb new chalet in Meg\\u00e8ve, close to the slopes of the Rochebrune sector\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/megeve\\\/mc-2282-3\\\/\",\"lat\":45.8472228576226,\"lng\":6.6061889718010915,\"prix\":2300000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/8ac47\\\/1435\\\/pictures\\\/objects\\\/1435_69724d055fbe99.66918034.jpg\",\"commune\":\"Meg\\u00e8ve\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"MC- 2282\\\/3\",\"npa\":\"74120\",\"surface\":\"142\",\"pieces\":5,\"chambres\":\"4\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Superb Contemporary Villa in Annecy\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/pringy\\\/mc-2299-3\\\/\",\"lat\":45.960419568784474,\"lng\":6.1142225166700825,\"prix\":2650000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/83987\\\/1435\\\/pictures\\\/objects\\\/1435_692729bda20402.79976953.jpg\",\"commune\":\"Pringy\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"MC- 2299\\\/3\",\"npa\":\"74370\",\"surface\":\"355\",\"pieces\":6,\"chambres\":\"5\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Superb Chalet a few minutes walk from the village of Meg\\u00e8ve\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/megeve\\\/mc-2293-3\\\/\",\"lat\":45.86173945628192,\"lng\":6.62483254538447,\"prix\":5300000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/1d9ff\\\/1435\\\/pictures\\\/objects\\\/1435_691dacd5dc8271.49177627.jpg\",\"commune\":\"Meg\\u00e8ve\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"MC 2293\\\/3\",\"npa\":\"74120\",\"surface\":\"270\",\"pieces\":7,\"chambres\":\"6\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Authentic 1749 farmhouse completely renovated\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/sallanches\\\/mc-2298-6\\\/\",\"lat\":45.91058562173195,\"lng\":6.615522757314207,\"prix\":1950000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/5982d\\\/1435\\\/pictures\\\/objects\\\/1435_69774d11a8a016.71370046.jpg\",\"commune\":\"Sallanches\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"MC 2298\\\/6\",\"npa\":\"74700\",\"surface\":\"310\",\"pieces\":5,\"chambres\":\"4\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Exceptional new chalet in VEFA \\u2013 Meg\\u00e8ve center &amp; ski slopes within walking distance\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/megeve\\\/mc-2297-6\\\/\",\"lat\":45.8562186909168,\"lng\":6.614301258279096,\"prix\":3150000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/10d94\\\/1435\\\/pictures\\\/objects\\\/1435_69d76f07e1ac42.19719482.jpg\",\"commune\":\"Meg\\u00e8ve\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"MC 2297\\\/6\",\"npa\":\"74120\",\"surface\":\"205.9\",\"pieces\":6,\"chambres\":\"5\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Unique property for sale in Nernier\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/nernier\\\/sh-mc-2359\\\/\",\"lat\":46.35707231318135,\"lng\":6.298518112056981,\"prix\":12000000,\"prix_affiche\":false,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/60a04\\\/1435\\\/pictures\\\/objects\\\/1435_698b14d6ef6758.06571046.jpg\",\"commune\":\"Nernier\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"SH\\\/MC 2359\",\"npa\":\"74140\",\"surface\":\"600\",\"pieces\":5,\"chambres\":\"4\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Superb Villa in a quiet area near Geneva\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/monnetier-mornex\\\/mp-mc-2389\\\/\",\"lat\":46.1489145442441,\"lng\":6.219339203716573,\"prix\":1360000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/a44dd\\\/1435\\\/pictures\\\/objects\\\/1435_69f46f969f6881.55138893.jpg\",\"commune\":\"Monnetier-Mornex\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"MP\\\/MC 2389\",\"npa\":\"74560\",\"surface\":\"313\",\"pieces\":5,\"chambres\":\"3\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Exceptional Apartment \\u2013 Panoramic View of Lake Geneva\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/apartment\\\/evian-les-bains\\\/mp-mc-2407\\\/\",\"lat\":46.3997929193231,\"lng\":6.6055576185419,\"prix\":1390000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/24f85\\\/1435\\\/pictures\\\/objects\\\/1435_69a6f68ef391b4.99053808.jpg\",\"commune\":\"Evian-les-Bains\",\"transaction\":\"vente\",\"type_bien\":\"appartement\",\"reference\":\"MP\\\/MC 2407\",\"npa\":\"74500\",\"surface\":\"231\",\"pieces\":6,\"chambres\":\"3\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Terraced house in the heart of Beaumont (20 min from Geneva)\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/beaumont\\\/sch-2428\\\/\",\"lat\":46.098161148825405,\"lng\":6.099102662321739,\"prix\":550000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/3a742\\\/1435\\\/pictures\\\/objects\\\/1435_69ce74ec6f1809.09779957.jpg\",\"commune\":\"Beaumont\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"SCH 2428\",\"npa\":\"74160\",\"surface\":\"100.2\",\"pieces\":4,\"chambres\":\"3\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Magnificent Villa in Menthon Saint Bernard, immediate proximity to Annecy\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/menthon-saint-bernard\\\/km-mc-2435\\\/\",\"lat\":45.861320289053104,\"lng\":6.194933302799912,\"prix\":2800000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/9f076\\\/1435\\\/pictures\\\/objects\\\/1435_69d7a263d228a3.03691875.jpg\",\"commune\":\"Menthon-Saint-Bernard\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"KM\\\/MC 2435\",\"npa\":\"74290\",\"surface\":\"295\",\"pieces\":8,\"chambres\":\"7\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Superb Villa 10 minutes from the center of Annecy\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/chapeiry\\\/mc-mp-2434\\\/\",\"lat\":45.84621707815549,\"lng\":6.03620196125406,\"prix\":3144000,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/b76cd\\\/1435\\\/pictures\\\/objects\\\/1435_69d7712a773fb5.65690582.jpg\",\"commune\":\"Chapeiry\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"MC\\\/MP 2434\",\"npa\":\"74540\",\"surface\":\"525\",\"pieces\":7,\"chambres\":\"6\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Family property with pool at the gates of Geneva\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-rent\\\/house\\\/saint-julien-en-genevois\\\/km-2497-1\\\/\",\"lat\":46.14568711355016,\"lng\":6.079657138531214,\"prix\":5500,\"prix_affiche\":true,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/0bf8c\\\/1435\\\/pictures\\\/objects\\\/1435_6a06fa0fd80551.54063921.jpg\",\"commune\":\"Saint-Julien-en-Genevois\",\"transaction\":\"location\",\"type_bien\":\"maison\",\"reference\":\"KM- 2497\\\/4\",\"npa\":\"74160\",\"surface\":\"400\",\"pieces\":9,\"chambres\":\"7\",\"nouveau\":false,\"statut_label\":\"\"},{\"titre\":\"Exceptional villa\",\"lien\":\"https:\\\/\\\/www.milleniumproperties.ch\\\/en\\\/for-sale\\\/house\\\/nernier\\\/jd-2507\\\/\",\"lat\":46.350630139730626,\"lng\":6.278292948395542,\"prix\":0,\"prix_affiche\":false,\"image\":\"https:\\\/\\\/www.immomigimg.ch\\\/s\\\/b9ae6\\\/1435\\\/pictures\\\/objects\\\/1435_6a17f292c56545.14735675.jpg\",\"commune\":\"Nernier\",\"transaction\":\"vente\",\"type_bien\":\"maison\",\"reference\":\"JD 2507\\\/1\",\"npa\":\"74140\",\"surface\":\"1000\",\"pieces\":12.5,\"chambres\":\"7\",\"nouveau\":false,\"statut_label\":\"\"}];\n    window.carteBiensCategorie = \"international\";\n    window.carteBiensI18n = {\"prixSurDemande\":\"Price on request\",\"surDemande\":\"On request\",\"parMois\":\" \\\/ month\",\"nouveau\":\"New\",\"aucunResultat\":\"No property matches these criteria.\",\"vueCarte\":\"Map\",\"vueListe\":\"List\",\"pieceUn\":\"room\",\"piecePlus\":\"rooms\",\"chambreUn\":\"bedroom\",\"chambrePlus\":\"bedrooms\",\"transactions\":{\"vente\":\"For sale\",\"location\":\"For rent\"},\"compteur\":{\"vente\":{\"un\":\"property for sale\",\"plus\":\"properties for sale\"},\"location\":{\"un\":\"property for rent\",\"plus\":\"properties for rent\"},\"international\":{\"un\":\"international property\",\"plus\":\"international properties\"},\"neuf\":{\"un\":\"new property\",\"plus\":\"new properties\"},\"vendus\":{\"un\":\"property sold\",\"plus\":\"properties sold\"},\"loues\":{\"un\":\"property rented\",\"plus\":\"properties rented\"},\"defaut\":{\"un\":\"property found\",\"plus\":\"properties found\"}}};\n\n    const STYLE_CARTE_CLAIR = [\n        { elementType: \"geometry\", stylers: [{ color: \"#f5f5f3\" }] },\n        { elementType: \"labels.icon\", stylers: [{ visibility: \"off\" }] },\n        { elementType: \"labels.text.fill\", stylers: [{ color: \"#6b7280\" }] },\n        { elementType: \"labels.text.stroke\", stylers: [{ color: \"#ffffff\" }] },\n        { featureType: \"administrative\", elementType: \"geometry\", stylers: [{ color: \"#dcdcd8\" }] },\n        { featureType: \"administrative.land_parcel\", stylers: [{ visibility: \"off\" }] },\n        { featureType: \"landscape\", elementType: \"geometry\", stylers: [{ color: \"#f5f5f3\" }] },\n        { featureType: \"poi\", stylers: [{ visibility: \"off\" }] },\n        { featureType: \"road\", elementType: \"geometry\", stylers: [{ color: \"#ffffff\" }] },\n        { featureType: \"road\", elementType: \"geometry.stroke\", stylers: [{ color: \"#e5e5e2\" }] },\n        { featureType: \"road.highway\", elementType: \"geometry\", stylers: [{ color: \"#f0ebe0\" }] },\n        { featureType: \"road.highway\", elementType: \"geometry.stroke\", stylers: [{ color: \"#e3dbc8\" }] },\n        { featureType: \"road.arterial\", elementType: \"labels\", stylers: [{ visibility: \"off\" }] },\n        { featureType: \"road.local\", elementType: \"labels\", stylers: [{ visibility: \"off\" }] },\n        { featureType: \"transit\", stylers: [{ visibility: \"off\" }] },\n        { featureType: \"water\", elementType: \"geometry\", stylers: [{ color: \"#cfe3ec\" }] },\n    ];\n\n    const ICONES = {\n        surface: '<svg viewBox=\"0 0 16 16\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M14.5.125h-13C.742.125.125.742.125 1.5v13c0 .758.617 1.375 1.375 1.375h13c.758 0 1.375-.617 1.375-1.375v-13c0-.758-.617-1.375-1.375-1.375zm.625 14.375c0 .345-.28.625-.625.625h-13a.626.626 0 0 1-.625-.625v-13c0-.345.28-.625.625-.625h13c.345 0 .625.28.625.625z\"\/><path d=\"M13.5 2.125h-3a.375.375 0 0 0 0 .75h2.094l-9.719 9.719V10.5a.375.375 0 0 0-.75 0v3c0 .207.168.375.375.375h3a.375.375 0 0 0 0-.75H3.406l9.719-9.719V5.5a.375.375 0 0 0 .75 0v-3a.375.375 0 0 0-.375-.375z\"\/><\/svg>',\n        pieces: '<svg viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M511.55 497.93H.45V227.32L256 14.07l255.55 213.25zM38 460.34h436V244.91L256 63 38 244.91z\"\/><\/svg>',\n        chambres: '<svg viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M440 188h-8v-64c-.026-22.08-17.92-39.974-40-40H120c-22.08.026-39.974 17.92-40 40v64h-8c-39.744.048-71.952 32.256-72 72v112h16v56h40v-56h400v56h40v-56h16V260c-.048-39.744-32.256-71.952-72-72zM96 124c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v64h-24v-32c0-13.255-10.745-24-24-24h-72c-13.255 0-24 10.745-24 24v32h-32v-32c0-13.255-10.745-24-24-24h-72c-13.255 0-24 10.745-24 24v32H96v-64zm280 32v32h-88v-32a8 8 0 0 1 8-8h72a8 8 0 0 1 8 8zm-152 0v32h-88v-32a8 8 0 0 1 8-8h72a8 8 0 0 1 8 8zM40 412h-8v-40h8v40zm440 0h-8v-40h8v40zm16-56H16v-40h480v40zm0-56H16v-40c.035-30.913 25.087-55.965 56-56h368c30.913.035 55.965 25.087 56 56v40z\"\/><\/svg>',\n    };\n\n    const T = window.carteBiensI18n;\n\n    function normaliser(texte) {\n        return (texte || '').toString().toLowerCase().normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, '');\n    }\n\n    function formaterPrix(bien) {\n        if (!bien.prix || !bien.prix_affiche) return T.prixSurDemande;\n        const formatted = Math.round(bien.prix).toString().replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, \"'\");\n        const estLocation = (bien.transaction || '').toLowerCase().includes('location');\n        return `CHF ${formatted}.-${estLocation ? T.parMois : ''}`;\n    }\n\n    function formaterPrixCourt(bien) {\n        if (!bien.prix || !bien.prix_affiche) return T.surDemande;\n        return Math.round(bien.prix).toString().replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, \"'\") + '.-';\n    }\n\n    function libelleCompteur(compteur) {\n        const pluriel = compteur > 1;\n        const cle = T.compteur[window.carteBiensCategorie] ? window.carteBiensCategorie : 'defaut';\n        return pluriel ? T.compteur[cle].plus : T.compteur[cle].un;\n    }\n\n    \/\/ Libelle affiche pour une valeur de transaction, la valeur brute restant inchangee.\n    function libelleTransaction(valeur) {\n        const cle = (valeur || '').toString().toLowerCase();\n        return T.transactions[cle] || valeur;\n    }\n\n    function construireIconePrix(texte) {\n        const largeur = Math.max(56, texte.length * 7 + 24);\n        const hauteur = 26;\n        const svg = `<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"${largeur}\" height=\"${hauteur}\">\n            <rect x=\"1\" y=\"1\" width=\"${largeur - 2}\" height=\"${hauteur - 2}\" rx=\"${hauteur \/ 2}\" ry=\"${hauteur \/ 2}\"\n                  fill=\"#C7171B\" fill-opacity=\"0.6\" stroke=\"#C7171B\" stroke-width=\"2\" stroke-opacity=\"1\"\/>\n            <text x=\"50%\" y=\"52%\" dominant-baseline=\"central\" text-anchor=\"middle\" font-family=\"Arial, sans-serif\" font-size=\"12\" font-weight=\"400\" fill=\"#ffffff\">${texte}<\/text>\n        <\/svg>`;\n        return {\n            url: 'data:image\/svg+xml;charset=UTF-8,' + encodeURIComponent(svg),\n            scaledSize: new google.maps.Size(largeur, hauteur),\n            anchor: new google.maps.Point(largeur \/ 2, hauteur \/ 2),\n        };\n    }\n\n    function construireContenuBien(bien) {\n        const specs = [];\n        if (bien.surface) specs.push(`<li>${ICONES.surface}<span>${bien.surface} m\u00b2<\/span><\/li>`);\n        if (bien.pieces) specs.push(`<li>${ICONES.pieces}<span>${bien.pieces} ${bien.pieces > 1 ? T.piecePlus : T.pieceUn}<\/span><\/li>`);\n        if (bien.chambres) specs.push(`<li>${ICONES.chambres}<span>${bien.chambres} ${bien.chambres > 1 ? T.chambrePlus : T.chambreUn}<\/span><\/li>`);\n\n        \/\/ Sur les pages Vendus\/Lou\u00e9s, le badge indique le statut ; ailleurs, \"Nouveau\" si r\u00e9cent.\n        let badgeHtml = '';\n        if (bien.statut_label) {\n            badgeHtml = `<span class=\"carte-biens-badge carte-biens-badge-statut\">${bien.statut_label}<\/span>`;\n        } else if (bien.nouveau) {\n            badgeHtml = `<span class=\"carte-biens-badge\">${T.nouveau}<\/span>`;\n        }\n\n        return `\n            <div class=\"carte-biens-image-wrap\">\n                <img decoding=\"async\" src=\"${bien.image || ''}\" alt=\"\">\n                <div class=\"carte-biens-watermark\"><\/div>\n                ${badgeHtml}\n            <\/div>\n            <div class=\"carte-biens-body\">\n                <div class=\"carte-biens-meta-row\">\n                    ${bien.commune ? `<p class=\"carte-biens-commune\">${bien.commune}<\/p>` : '<span><\/span>'}\n                    <p class=\"carte-biens-prix\">${formaterPrix(bien)}<\/p>\n                <\/div>\n                <h4 class=\"carte-biens-titre\">${bien.titre}<\/h4>\n                ${specs.length ? `<ul class=\"carte-biens-specs\">${specs.join('')}<\/ul>` : ''}\n            <\/div>\n        `;\n    }\n\n    function creerCarteBien(bien) {\n        const card = document.createElement('div');\n        card.className = 'carte-biens-card';\n        card.innerHTML = construireContenuBien(bien);\n        card.addEventListener('click', () => { window.open(bien.lien, '_blank'); });\n        return card;\n    }\n\n    function largeurPopupSelonEcran() {\n        return window.innerWidth <= 480 ? Math.round(window.innerWidth * 0.9) : 320;\n    }\n\n    function hauteurHeaderFixe() {\n        let maxBas = 0;\n        document.querySelectorAll('body > *, header, #masthead, .site-header').forEach(el => {\n            if (el.id === 'carte-biens-topbar' || el.closest('#carte-biens-topbar')) return;\n            const cs = getComputedStyle(el);\n            if ((cs.position === 'fixed' || cs.position === 'sticky') && el.offsetHeight > 0) {\n                const rect = el.getBoundingClientRect();\n                if (rect.top <= 5 && rect.bottom > maxBas) maxBas = rect.bottom;\n            }\n        });\n        return Math.max(0, Math.round(maxBas));\n    }\n\n    function initCarteBiens() {\n        const data = window.biensData;\n        const listeEl = document.getElementById('liste-biens');\n        const compteurEl = document.getElementById('carte-biens-compteur');\n\n        const selTransaction = document.getElementById('filtre-transaction');\n        const selTypeBien   = document.getElementById('filtre-type-bien');\n        const selPieces     = document.getElementById('filtre-pieces');\n        const inputRecherche = document.getElementById('filtre-recherche');\n        const inputPrixMin  = document.getElementById('filtre-prix-min');\n        const inputPrixMax  = document.getElementById('filtre-prix-max');\n        const badgeFiltres  = document.getElementById('badge-filtres-actifs');\n\n        function remplirSelect(selectEl, valeurs) {\n            if (!selectEl) return;\n            [...new Set(valeurs)].filter(Boolean).sort().forEach(v => {\n                const opt = document.createElement('option');\n                opt.value = v;\n                opt.textContent = libelleTransaction(v);\n                selectEl.appendChild(opt);\n            });\n        }\n        remplirSelect(selTransaction, data.map(b => b.transaction));\n\n        const map = new google.maps.Map(document.getElementById('carte-biens'), {\n            zoom: 10,\n            center: { lat: 46.2044, lng: 6.1432 },\n            gestureHandling: 'greedy',\n            styles: STYLE_CARTE_CLAIR,\n        });\n\n        \/\/ autoPan d\u00e9sactiv\u00e9 : on g\u00e8re nous-m\u00eames le recentrage avant d'ouvrir le popup (voir plus bas),\n        \/\/ pour \u00e9viter le conflit avec notre CSS personnalis\u00e9 qui faisait dispara\u00eetre le popup au premier clic.\n        const popupPartage = new google.maps.InfoWindow({ disableAutoPan: true });\n\n        const markers = data.map(bien => {\n            const marker = new google.maps.Marker({\n                position: { lat: bien.lat, lng: bien.lng },\n                title: bien.titre,\n                icon: construireIconePrix(formaterPrixCourt(bien)),\n            });\n            marker.addListener('click', () => {\n                map.panTo(marker.getPosition());\n                google.maps.event.addListenerOnce(map, 'idle', () => {\n                    popupPartage.setOptions({ maxWidth: largeurPopupSelonEcran() });\n                    popupPartage.setContent(`<div class=\\\"carte-biens-card carte-biens-card-popup\\\" style=\\\"cursor:pointer;\\\" onclick=\\\"window.open('${bien.lien}', '_blank')\\\">${construireContenuBien(bien)}<\/div>`);\n                    popupPartage.open({ map, anchor: marker, shouldFocus: false });\n                });\n            });\n            return marker;\n        });\n\n        google.maps.event.addListener(popupPartage, 'domready', () => {\n            const btn = document.querySelector('.gm-ui-hover-effect');\n            if (btn) btn.style.display = 'none';\n        });\n\n        map.addListener('click', () => popupPartage.close());\n\n        const clusterer = new markerClusterer.MarkerClusterer({\n            map, markers,\n            renderer: {\n                render: ({ count, position }) => new google.maps.Marker({\n                    position,\n                    label: { text: String(count), color: '#ffffff', fontSize: '12px', fontWeight: '600' },\n                    icon: {\n                        path: google.maps.SymbolPath.CIRCLE,\n                        fillColor: '#C7171B',\n                        fillOpacity: 0.6,\n                        strokeColor: '#C7171B',\n                        strokeWeight: 2,\n                        scale: Math.min(18 + count \/ 3, 32),\n                    },\n                    zIndex: 1000 + count,\n                }),\n            },\n        });\n        clusterer.addListener('clusteringend', () => popupPartage.close());\n\n        function bienEstVisible(bien) {\n            if (selTransaction && selTransaction.value && bien.transaction !== selTransaction.value) return false;\n            if (selTypeBien.value && normaliser(bien.type_bien) !== normaliser(selTypeBien.value)) return false;\n\n            \/\/ Pi\u00e8ces : nombre exact, sauf pour \"6\" qui reste \"6 et plus\"\n            if (selPieces.value) {\n                const val = parseFloat(selPieces.value);\n                const piecesArrondi = Math.floor(bien.pieces);\n                if (val === 6) {\n                    if (piecesArrondi < 6) return false;\n                } else {\n                    if (piecesArrondi !== val) return false;\n                }\n            }\n\n            const recherche = normaliser(inputRecherche.value.trim());\n            if (recherche) {\n                const reference = normaliser(bien.reference);\n                const npa       = normaliser(bien.npa);\n                const commune   = normaliser(bien.commune);\n                if (!reference.includes(recherche) && !npa.includes(recherche) && !commune.includes(recherche)) return false;\n            }\n\n            const prixMin = parseFloat(inputPrixMin.value);\n            const prixMax = parseFloat(inputPrixMax.value);\n            if (!isNaN(prixMin) && bien.prix < prixMin) return false;\n            if (!isNaN(prixMax) && bien.prix > prixMax) return false;\n\n            return true;\n        }\n\n        function compterFiltresActifs() {\n            let n = 0;\n            if (selTransaction && selTransaction.value) n++;\n            if (selTypeBien.value) n++;\n            if (selPieces.value) n++;\n            if (inputRecherche.value.trim()) n++;\n            if (inputPrixMin.value) n++;\n            if (inputPrixMax.value) n++;\n            return n;\n        }\n\n        function appliquerFiltres() {\n            listeEl.innerHTML = '';\n            let compteur = 0;\n\n            markers.forEach((marker, i) => {\n                const bien = data[i];\n                const visible = bienEstVisible(bien);\n                marker.setVisible(visible);\n                if (visible) {\n                    compteur++;\n                    listeEl.appendChild(creerCarteBien(bien));\n                }\n            });\n\n            clusterer.clearMarkers();\n            clusterer.addMarkers(markers.filter(m => m.getVisible()));\n\n            compteurEl.innerHTML = `<span class=\"compteur-nombre\">${compteur}<\/span> ${libelleCompteur(compteur)}`;\n\n            const nbActifs = compterFiltresActifs();\n            if (nbActifs > 0) {\n                badgeFiltres.textContent = nbActifs;\n                badgeFiltres.style.display = 'inline-block';\n            } else {\n                badgeFiltres.style.display = 'none';\n            }\n\n            if (compteur === 0) {\n                listeEl.innerHTML = '<p style=\"padding:20px;\">' + T.aucunResultat + '<\/p>';\n            }\n        }\n\n        [selTransaction, selTypeBien, selPieces, inputPrixMin, inputPrixMax].forEach(el => {\n            if (el) el.addEventListener('change', appliquerFiltres);\n        });\n        inputPrixMin.addEventListener('input', appliquerFiltres);\n        inputPrixMax.addEventListener('input', appliquerFiltres);\n        inputRecherche.addEventListener('input', appliquerFiltres);\n\n        appliquerFiltres();\n\n        \/\/ --- R\u00e9initialiser la recherche ---\n        const btnReset = document.getElementById('btn-reset-filtres');\n        btnReset.addEventListener('click', () => {\n            if (selTransaction) selTransaction.value = '';\n            selTypeBien.value = '';\n            selPieces.value = '';\n            inputRecherche.value = '';\n            inputPrixMin.value = '';\n            inputPrixMax.value = '';\n            appliquerFiltres();\n        });\n\n        \/\/ --- Panel de filtres mobile (plein \u00e9cran) ---\n        const btnOuvrirFiltres = document.getElementById('btn-ouvrir-filtres');\n        const btnFermerFiltres = document.getElementById('btn-fermer-filtres');\n        const btnFermerFiltresCroix = document.getElementById('btn-fermer-filtres-croix');\n        const filtresPanel     = document.getElementById('carte-biens-filtres');\n        const filtresOverlay   = document.getElementById('carte-biens-filtres-overlay');\n\n        function ouvrirPanelFiltres() {\n            filtresPanel.classList.add('ouvert');\n            filtresOverlay.classList.add('ouvert');\n        }\n        function fermerPanelFiltres() {\n            filtresPanel.classList.remove('ouvert');\n            filtresOverlay.classList.remove('ouvert');\n        }\n        btnOuvrirFiltres.addEventListener('click', ouvrirPanelFiltres);\n        btnFermerFiltres.addEventListener('click', fermerPanelFiltres);\n        btnFermerFiltresCroix.addEventListener('click', fermerPanelFiltres);\n        filtresOverlay.addEventListener('click', fermerPanelFiltres);\n\n        \/\/ --- Bascule Liste \/ Carte mobile ---\n        const wrapperEl         = document.getElementById('carte-biens-wrapper');\n        const btnToggleVue      = document.getElementById('btn-toggle-vue');\n        const btnToggleVueTexte = document.getElementById('btn-toggle-vue-texte');\n\n        btnToggleVue.addEventListener('click', () => {\n            const enModeCarte = wrapperEl.classList.toggle('vue-carte');\n            btnToggleVueTexte.textContent = enModeCarte ? T.vueListe : T.vueCarte;\n            if (enModeCarte) {\n                setTimeout(() => {\n                    google.maps.event.trigger(map, 'resize');\n                    map.setCenter({ lat: 46.2044, lng: 6.1432 });\n                }, 50);\n            }\n        });\n\n        \/\/ --- Ancrage du bandeau (Filtres + compteur\/vue) en JS, sous le header sticky du th\u00e8me ---\n        const topbarEl = document.getElementById('carte-biens-topbar');\n        const spacerEl = document.getElementById('carte-biens-topbar-spacer');\n        let topbarOffset = null;\n\n        function calculerOffset() {\n            if (topbarEl.classList.contains('fixe-mobile')) return;\n            topbarOffset = topbarEl.getBoundingClientRect().top + window.scrollY;\n        }\n        calculerOffset();\n\n        window.addEventListener('resize', () => {\n            topbarEl.classList.remove('fixe-mobile');\n            spacerEl.style.display = 'none';\n            calculerOffset();\n        });\n\n        window.addEventListener('scroll', () => {\n            if (window.innerWidth > 768 || topbarOffset === null) return;\n            const decalageHeader = hauteurHeaderFixe();\n\n            if (window.scrollY >= topbarOffset - decalageHeader) {\n                if (!topbarEl.classList.contains('fixe-mobile')) {\n                    spacerEl.style.height = topbarEl.offsetHeight + 'px';\n                    spacerEl.style.display = 'block';\n                    topbarEl.classList.add('fixe-mobile');\n                }\n                topbarEl.style.top = decalageHeader + 'px';\n            } else {\n                topbarEl.classList.remove('fixe-mobile');\n                spacerEl.style.display = 'none';\n            }\n        }, { passive: true });\n    }\n    <\/script>\n    <script src=\"https:\/\/unpkg.com\/@googlemaps\/markerclusterer\/dist\/index.min.js\"><\/script>\n    <script async src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyCU4OaRqNqpmK0sp_ziCROsnpSQByTskCc&callback=initCarteBiens\"><\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fd095a6 e-con-full e-flex e-con e-parent\" data-id=\"fd095a6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-5251802 e-con-full e-flex e-con e-child\" data-id=\"5251802\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-89b2abe e-con-full e-flex e-con e-child\" data-id=\"89b2abe\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-196cdcd elementor-widget elementor-widget-heading\" data-id=\"196cdcd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Apartments and houses for sale in France<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-940df44 elementor-widget elementor-widget-heading\" data-id=\"940df44\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Our houses and apartments for sale in France<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6574e8c elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"6574e8c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>To stay close to our international clientele, we are actively expanding abroad. Millenium Properties estate agency offers a selection of properties in France. For confidentiality reasons, some international properties are not publicly listed. To discover our off-market properties, <a href=\"https:\/\/www.milleniumproperties.ch\/p18-contact.html\">get in touch!<\/a><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-06962af e-con-full e-flex e-con e-parent\" data-id=\"06962af\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-72dd5fb e-con-full e-flex e-con e-child\" data-id=\"72dd5fb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ead5b6b elementor-widget elementor-widget-heading\" data-id=\"ead5b6b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">France property sales<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bd9e68b elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"bd9e68b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Looking to buy a property in France? Browse our selection of properties for sale. Whether you are after modern apartments in the Geneva area, picturesque country houses in Provence or luxury villas on the C\u00f4te d\u2019Azur, you can count on our expertise to help you find the property that meets your needs. Our selection includes a wide variety of properties!<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fcbc715 elementor-widget elementor-widget-heading\" data-id=\"fcbc715\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Why buy an apartment or house in France?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f388dce elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"f388dce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>There are several reasons why you might consider buying an apartment or house in France. The French property market is one of the most dynamic in Europe. Every year, thousands of people buy or sell properties, whether houses, apartments, land or residential buildings. Buying property in France can be a sound investment. French property prices tend to rise over time, which means a property bought now could be worth more in a few years. If you decide to rent out your property, you could also generate additional income. Property prices in Switzerland, and in Geneva in particular, can be very high. By comparison, prices in France, even in regions close to the Swiss border, can be considerably more affordable. This means you could get more space for your money by buying in France.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-53a929c elementor-widget elementor-widget-heading\" data-id=\"53a929c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Buying an apartment or house in the Genevois area<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d4340f5 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"d4340f5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p dir=\"ltr\">The Genevois area offers a wide variety of properties for sale. You can find houses in very different architectural styles: modern villas with landscaped gardens, traditional country houses with exposed wooden beams and stonework, historic properties and more. Apartments for sale in the Genevois area are also very popular, particularly with buyers looking to live in a lively urban setting.<\/p>\n<p><\/p>\n<p dir=\"ltr\">The property market in the Genevois area is competitive, and properties here are often in high demand because of the proximity to the Swiss border and the city of Geneva. If you are looking to buy a house or an apartment in the area, it is important to be ready to act quickly when you find a property you like. Houses and apartments for sale here can be snapped up fast, so it is essential to stay alert and respond promptly to new listings.<\/p>\n<p><\/p>\n<p dir=\"ltr\">When searching for a house or an apartment for sale in the Genevois area, it is also important to understand the legal and financial aspects of buying property in France. French property laws and regulations can differ from those in Switzerland, so it is essential to consult a real estate professional to make sure you understand the legal and financial implications of buying a property in France.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6387124 elementor-widget elementor-widget-heading\" data-id=\"6387124\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Millenium Properties will help you buy your property in France<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2db280c elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"2db280c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<div id=\"\" class=\"\" data-dve-widget=\"\" data-dve-slug=\"html\" data-dve-unique=\"html_192afb02db4\">We understand that buying an apartment or house in France can be a complex and sometimes difficult process. That is why we do everything we can to make it easier for you. Our team of highly qualified professionals can help you find the ideal property. Whether you are looking for a house or an apartment for sale in France, it is important to work with a reputable estate agency. Our real estate professionals can support you throughout the buying process, providing information on neighbourhoods, local schools, amenities and property market trends. They can also help you negotiate offers and finalise transactions, making sure you get the best possible deal.<\/div>\n<p><\/p>\n<div id=\"\" class=\"\" data-dve-widget=\"\" data-dve-slug=\"spacer\"><\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5772c51 e-con-full e-flex e-con e-parent\" data-id=\"5772c51\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-68ec70c e-con-full e-flex e-con e-child\" data-id=\"68ec70c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-6caf25c e-con-full e-flex e-con e-child\" data-id=\"6caf25c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-763f776 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"763f776\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Address<\/p>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ea7f397 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"ea7f397\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>5 Boulevard du Th\u00e9\u00e2tre<br \/>1204 Geneva<\/p>\n<p>Monday \u2013 Friday<br \/>9:00 am \u2013 5:00 pm<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b8dd34a e-con-full e-flex e-con e-child\" data-id=\"b8dd34a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-95df588 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"95df588\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Contact<\/p>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6c3578e elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"6c3578e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"text-decoration: underline\"><a href=\"mailto:info@milleniumproperties.ch\">info@milleniumproperties.ch<\/a><\/span><\/p>\n<p><span style=\"text-decoration: underline\"><a href=\"tel:+41223424412\">+41 22 342 44 12<\/a><\/span><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-98335a6 e-con-full e-flex e-con e-child\" data-id=\"98335a6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-9a82ca1 e-con-full e-flex e-con e-child\" data-id=\"9a82ca1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-15b7d15 elementor-widget elementor-widget-heading\" data-id=\"15b7d15\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Contact<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6916618 elementor-widget elementor-widget-heading\" data-id=\"6916618\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Let's talk about your project.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c140bd0 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"c140bd0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Sales, rentals, property management or search: a single point of contact, from first conversation to signing.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0f0b117 elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-button-align-start elementor-widget elementor-widget-form\" data-id=\"0f0b117\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;step_next_label&quot;:&quot;Next&quot;,&quot;step_previous_label&quot;:&quot;Previous&quot;,&quot;button_width&quot;:&quot;100&quot;,&quot;step_type&quot;:&quot;number_text&quot;,&quot;step_icon_shape&quot;:&quot;circle&quot;}\" data-widget_type=\"form.default\">\n\t\t\t\t\t\t\t<form class=\"elementor-form\" method=\"post\" name=\"Nouveau formulaire\" aria-label=\"Nouveau formulaire\">\n\t\t\t<input type=\"hidden\" name=\"post_id\" value=\"15559\"\/>\n\t\t\t<input type=\"hidden\" name=\"form_id\" value=\"0f0b117\"\/>\n\t\t\t<input type=\"hidden\" name=\"referer_title\" value=\"International real estate | Millenium Properties\" \/>\n\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"queried_id\" value=\"15559\"\/>\n\t\t\t\n\t\t\t<div class=\"elementor-form-fields-wrapper elementor-labels-above\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-field_13a790e elementor-col-50 elementor-sm-50 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-field_13a790e\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tFirst name*\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[field_13a790e]\" id=\"form-field-field_13a790e\" class=\"elementor-field elementor-size-md  elementor-field-textual\" placeholder=\"Jean\" required=\"required\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-name elementor-col-50 elementor-sm-50 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-name\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tLast name*\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[name]\" id=\"form-field-name\" class=\"elementor-field elementor-size-md  elementor-field-textual\" placeholder=\"Dupond\" required=\"required\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-email elementor-field-group elementor-column elementor-field-group-email elementor-col-50 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-email\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tEmail*\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"email\" name=\"form_fields[email]\" id=\"form-field-email\" class=\"elementor-field elementor-size-md  elementor-field-textual\" placeholder=\"dupont@email.ch\" required=\"required\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-tel elementor-field-group elementor-column elementor-field-group-field_141286d elementor-col-50 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-field_141286d\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tPhone*\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t<input size=\"1\" type=\"tel\" name=\"form_fields[field_141286d]\" id=\"form-field-field_141286d\" class=\"elementor-field elementor-size-md  elementor-field-textual\" placeholder=\"+41 00 000 00 00\" required=\"required\" pattern=\"[0-9()#&amp;+*-=.]+\" title=\"Only numbers and phone characters (#, -, *, etc) are accepted.\">\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-textarea elementor-field-group elementor-column elementor-field-group-message elementor-col-100 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-message\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tMessage\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t<textarea class=\"elementor-field-textual elementor-field  elementor-size-md\" name=\"form_fields[message]\" id=\"form-field-message\" rows=\"4\" placeholder=\"Tell us about your project in a few lines (optional)...\" required=\"required\"><\/textarea>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-recaptcha_v3 elementor-field-group elementor-column elementor-field-group-field_5a6a405 elementor-col-100 recaptcha_v3-bottomleft\">\n\t\t\t\t\t<div class=\"elementor-field\" id=\"form-field-field_5a6a405\"><div class=\"elementor-g-recaptcha\" data-sitekey=\"6LdJOyQtAAAAAFZDDIhF5v_VznKZDJ_j9ryAMLCC\" data-type=\"v3\" data-action=\"Form\" data-badge=\"bottomleft\" data-size=\"invisible\"><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-group elementor-column elementor-field-type-submit elementor-col-100 e-form__buttons\">\n\t\t\t\t\t<button class=\"elementor-button elementor-size-sm\" type=\"submit\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Send my message<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<input type='hidden' name='lang' value='en-gb' \/><\/form>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c7425b2 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"c7425b2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Reply within 24 to 48 hours<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>International Apartments and houses for sale in France Our houses and apartments for sale in France To stay close to our international clientele, we are actively expanding abroad. Millenium Properties estate agency offers a selection of properties in France. For confidentiality reasons, some international properties are not publicly listed. To discover our off-market properties, get [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-15559","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.milleniumproperties.ch\/en\/wp-json\/wp\/v2\/pages\/15559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.milleniumproperties.ch\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.milleniumproperties.ch\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.milleniumproperties.ch\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.milleniumproperties.ch\/en\/wp-json\/wp\/v2\/comments?post=15559"}],"version-history":[{"count":3,"href":"https:\/\/www.milleniumproperties.ch\/en\/wp-json\/wp\/v2\/pages\/15559\/revisions"}],"predecessor-version":[{"id":15562,"href":"https:\/\/www.milleniumproperties.ch\/en\/wp-json\/wp\/v2\/pages\/15559\/revisions\/15562"}],"wp:attachment":[{"href":"https:\/\/www.milleniumproperties.ch\/en\/wp-json\/wp\/v2\/media?parent=15559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}