[] L’Estonie et la Lituanie notifient à l’ONU leur retrait du traité sur les mines antipersonnel
L’Estonie et la Lituanie ont annoncé, vendredi soir, avoir notifié formellement à l’ONU leur retrait de la Convention sur l’interdiction des mines antipersonnel, en vue de renforcer leur défense à la suite de l’agression russe en Ukraine.
Les Parlements des trois pays baltes – Lituanie, Lettonie, Estonie – ainsi que celui de la Finlande ont donné leur autorisation à la sortie de la convention dite d’Ottawa. Varsovie, où la même décision a été prise par la Chambre basse du Parlement, attend encore le vote du Sénat.
« Le 27 juin à New York, l’Estonie a présenté aux Nations Unies les instruments de retrait de la convention d’Ottawa », annonce un communiqué publié sur le site du ministère des affaires étrangères estonien. Selon ce texte, « le retrait de la convention découle de la situation sécuritaire dans la région, qui s’est détériorée en raison de l’agression de la Russie contre l’Ukraine, et est fondé sur des considérations impérieuses de sécurité nationale ».
Un communiqué annonçant « le retrait de la Lituanie » de la convention d’Ottawa a été publié peu après par le chef de la diplomatie de ce pays, Kestutis Budrys. « La Russie de [Vladimir] Poutine est la plus grande menace existentielle à long terme pour l’Europe (…). Face à de telles menaces, la Lituanie prendra toutes les mesures nécessaires pour défendre son Etat, sa population et chaque centimètre du territoire de l’OTAN », a-t-il expliqué.
La convention d’Ottawa (1997) interdit l’emploi, le stockage, la production et le transfert des mines antipersonnel, conçues pour être enterrées ou dissimulées sur le sol. Déclenchées au contact ou à proximité d’une personne, elles peuvent tuer ou provoquer de graves blessures. Ces engins restent souvent actifs après un conflit, empêchant ainsi le retour des populations.
La décision prendra effet six mois après sa notification à l’ONU.
[] L’armée russe pilonne l’oblast de Zaporijia
Les forces russes ont attaqué 12 localités de l’oblast de Zaporijia au cours des dernières vingt-quatre heures, a signalé sur Telegram samedi le chef de l’administration militaire de l’oblast de Zaporijia, Ivan Fedorov.
Dans le détail, les Russes ont mené 12 bombardements aériens, lancé 312 drones de différents types, ont mené 14 attaques avec des systèmes de lance-roquettes multiples et 121 attaques avec l’artillerie.
Ces attaques n’ont fait que deux blessés, « un homme et une femme »,et vingt messages concernant la destruction de logements, de bâtiments agricoles et d’infrastructures ont été reçus, selon M. Fedorov.
Le 27/06 à 21:00 À retenir
[] L’essentiel du 27 juin à 21 heures
- Le commandant en chef de l’armée ukrainienne estime que le front de Pokrovsk est stabilisé. « Pas moins de 50 affrontements ont lieu ici chaque jour, a écrit Oleksandr Syrsky, dans un message sur Telegram, vendredi. C’est dans cette direction que les Russes ont concentré leur plus grand groupe : environ 111 000 hommes. »
- La Russie convoque l’ambassadeur d’Allemagne, Berlin ayant refusé début juin de prolonger le titre de séjour de Sergueï Feoktistov, chef du bureau local du groupe médiatique public Rossia Segodnia, et lui a ordonné de quitter son territoire avant le 19 août.
- La Corée du Nord a déployé 20 % des forces d’élite de Kim Jong-un pour combattre aux côtés des Russes, estime l’Ukraine. Les Nord-Coréens ont perdu plus de 6 000 hommes dans l’oblast de Koursk, selon les renseignements militaires britanniques.
- Le débat sur le budget de la défense met en lumière les divisions républicaines sur l’Ukraine. Le sénateur Mitch McConnell, président du sous-comité des crédits de la défense du Sénat, a critiqué l’administration Trump pour avoir envisagé une réduction de l’aide militaire à l’Ukraine dans le budget de 2026.
- L’approche de Donald Trump vis-à-vis de l’Europe signifie que les « vacances militaires » de l’Europe sont terminées, a déclaré le premier ministre polonais, Donald Tusk.
- La Russie a lancé une nouvelle attaque massive contre l’Ukraine, dans la nuit du 26 au 27 juin, avec 363 drones de type Shahed et des drones leurres, deux missiles hypersoniques Kinjal et six missiles de croisière Kalibr lancés depuis la mer Caspienne. La frappe visait la ville de Starokostiantyniv dans l’oblast de Khmelnytsky qui abrite une base aérienne.
- Les dirigeants des 27 pays membres de l’Union européenne (UE), réunis en sommet à Bruxelles, ont donné leur accord pour prolonger de six mois leurs sanctions contre la Russie, a annoncé, jeudi soir, le président du Conseil européen, Antonio Costa. L’UE a déjà adopté 17 « paquets » de sanctions depuis l’invasion russe de l’Ukraine, le 24 février 2022.
[] Le bilan du bombardement russe dans l’oblast de Dnipropetrovsk monte à cinq morts et 25 blessés, selon les autorités
Un bombardement russe a provoqué, vendredi, la mort d’au moins cinq personnes et fait 25 blessés sur la ville ukrainienne de Samar (), à moins de 150 kilomètres du front, dans l’oblast de Dnipropetrovsk, qui est sous la pression des forces adverses.
Cette nouvelle frappe meurtrière de l’armée russe est intervenue deux jours après que le président ukrainien, Volodymyr Zelensky, a répété à son homologue américain, Donald Trump, en marge d’un sommet de l’OTAN à La Haye (Pays-Bas), être « prêt » à acheter des systèmes américains de défense antiaérienne Patriot, essentiels pour intercepter les missiles tirés par la Russie.
[] L’Allemagne réagit à la convocation de son ambassadeur par la Russie, qui dénonce le traitement de ses journalistes
Berlin a réagi avec fermeté après l’entretien de son ambassadeur au ministère des affaires étrangères russe. « Nous rejetons les accusations sans fondement faites par le ministère des affaires étrangères russe », a déclaré une source diplomatique allemande à l’Agence France-Presse, ajoutant que l’ambassadeur allemand, Graf Lambsdorff, l’avait « signifié (…) dans des termes non équivoques » lors de son entretien à Moscou. « Contrastant avec les répressions de plus en plus dures de journalistes en Russie, l’Etat de droit et la liberté de la presse sont en vigueur en Allemagne », a ajouté la même source.
Plus tôt dans la journée, la Russie a convoqué l’ambassadeur d’Allemagne pour dénoncer le traitement de ses journalistes dans ce pays, y voyant de la « persécution », et informer le diplomate de « mesures de représailles ». La diplomatie russe a affirmé dans un communiqué avoir transmis à l’ambassadeur « une note de vive protestation » en raison de « pressions sur les médias russes en Allemagne ».
Le 27/06 à 18:20 Pour approfondir
La guerre aérienne entre la République islamique et l’Etat hébreu a créé une forte tension sur les arsenaux et la production de missiles sol-air, dont l’Ukraine manque déjà pour défendre son espace aérien.
Table des matières
L’Ukraine craint de voir les livraisons d’armes américaines détournées vers Israël
Par Emmanuel Grynszpan
A Kiev, la « guerre de douze jours » entre l’Iran d’un côté, Israël rejoint par les Etats-Unis de l’autre, a été observée avec anxiété. Et si les prix du pétrole s’envolaient, déversant une pluie de pétrodollars sur le complexe militaro-industriel russe ? Et si une guerre aérienne se prolongeant tarissait, au profit d’Israël, les arsenaux de missiles antiaériens américains puis occidentaux, dont l’Ukraine manque déjà cruellement ?
[]
[]Le contexte
Territoire occupé par la Russie
Zone de combats
Incursion ukrainienne
Ville contrôlée par les Ukrainiens
Ville contrôlée par les Russes
Ville au statut disputé
{ const script = document.createElement(« script »); script.src = src; // Ajoutez un gestionnaire d’événements pour l’événement ‘load’ script.onload = () => { scriptsLoaded++; if (scriptsLoaded === scripts.length) { lancerCarte(); } }; document.head.appendChild(script); }); function lancerCarte() { var largeur = document.getElementById(« cartukraine »).offsetWidth, modenuit = false, mobileDec = false, parseFichier = d3.timeParse(« %Y-%m-%d »), dicoVilles = {}, dicoTempVilles = {}, listeDates = [], tableauGlissiere = [], mois = [« jan. », « fév. », « mar. », « avr. », « mai », « juin », « juil. », « aoû. », « sep. », « oct. », « nov. », « déc. »], lecturepause = « », moisLongs = [« janvier », « février », « mars », « avril », « mai », « juin », « juillet », « août », « septembre », « octobre », « novembre », « décembre »]; d3.selection.prototype.moveToFront = function () { return this.each(function () { this.parentNode.appendChild(this); }); }; // ensuite on va le faire pour toutes les dates qu’on a for (const [i, d] of files_list.control.entries()) { e = d.split(« / »); dateT = e[e.length – 1].split(« . »)[0]; listeDates.push(dateT); } listeDates.sort((a, b) => parseFichier(a) – parseFichier(b)); // mon astuce pour mapper les changements de main des villes function dateProche(dateprecise, arr) { dup_array = arr.slice(); dup_array.sort(function (a, b) { var distancea = Math.abs(parseFichier(dateprecise) – parseFichier(a)); var distanceb = Math.abs(parseFichier(dateprecise) – parseFichier(b)); return distancea – distanceb; // sort a before b when the distance is smaller }); return dup_array[0]; } // on range bien les villes avec les dates et les // camps qui contrôlent var villes = {}; for (const [i, d] of listeVilles.entries()) { if (!villes[d.ville]) { villes[d.ville] = {}; dicoTempVilles[d.ville] = d.p1; dicoVilles[d.ville] = {}; } for (const [key, value] of Object.entries(d)) { k = key.slice(0, 1); l = key.slice(1, 2); if (k == « d » && value) { dateVal = value.split(« / »); dateFich = String(dateVal[2] + « – » + dateVal[1] + « – » + dateVal[0]); dimancheDate = dateProche(dateFich, listeDates); if (!villes[d.ville][dimancheDate]) { villes[d.ville][dimancheDate] = {}; } villes[d.ville][dimancheDate] = d[« p » + l]; } } } // on checke pour chaque date toutes les villes for (const [i, date] of listeDates.entries()) { for (const [cetteVille, value] of Object.entries(dicoTempVilles)) { if (villes[cetteVille][date]) { dicoVilles[cetteVille][date] = villes[cetteVille][date]; dicoTempVilles[cetteVille] = villes[cetteVille][date]; } else { dicoVilles[cetteVille][date] = dicoTempVilles[cetteVille]; } } } // on vérifie si on est en mobile ou non if (largeur < 600) { mobileDec = true; selecteurGliss = d3.select(".contenant_glissiere.mobile"); } else { selecteurGliss = d3.select(".contenant_glissiere.pasmobile"); } if (largeur [d.lon, d.lat]), // [longitude, latitude] }; // pour afficher pour les villes coucheVilles .selectAll("rect.ville") .data(listeVilles) .enter() .append("rect") .attr("class", "carre_ville") .attr("width", (d) => (d.ville == « Kiev » ? largeurCarre * 1.5 : largeurCarre)) .attr(« height », (d) => (d.ville == « Kiev » ? largeurCarre * 1.5 : largeurCarre)) .attr(« data-ville », (d) => d.ville) .attr(« x », (d) => projection([+d[« lon »], +d[« lat »]])[0] – largeurCarre / 2) .attr(« y », (d) => projection([+d[« lon »], +d[« lat »]])[1] – largeurCarre / 2); // ici le nom des villes coucheVilles .selectAll(« text.texte_ville.blanc, text.capitale.blanc ») .data(listeVilles) .enter() .append(« text ») .attr(« class », function (d) { classeTemp = « texte_ville blanc »; if (d.ville == « Kiev ») { classeTemp = « capitale blanc »; } classeTemp += » » + d.emplacement; return classeTemp; }) .attr(« x », (d) => projection([+d[« lon »], +d[« lat »]])[0] + (d.ville == « Kiev » ? largeurCarre * 1.8 : decalXY[d.emplacement][0])) .attr(« y », (d) => projection([+d[« lon »], +d[« lat »]])[1] + (d.ville == « Kiev » ? largeurCarre * 1 : decalXY[d.emplacement][1])) .text((d) => d.ville); coucheVilles .selectAll(« text.texte_ville:not(.blanc), text.capitale:not(.blanc) ») .data(listeVilles) .enter() .append(« text ») .attr(« data-ville », (d) => d.ville) .attr(« class », function (d) { classeTemp = « texte_ville »; if (d.ville == « Kiev ») { classeTemp = « capitale »; } classeTemp += » » + d.emplacement; return classeTemp; }) .attr(« x », (d) => projection([+d[« lon »], +d[« lat »]])[0] + (d.ville == « Kiev » ? largeurCarre * 1.8 : decalXY[d.emplacement][0])) .attr(« y », (d) => projection([+d[« lon »], +d[« lat »]])[1] + (d.ville == « Kiev » ? largeurCarre * 1 : decalXY[d.emplacement][1])) .text((d) => d.ville); // les pays d3.json(« https://assets-decodeurs.lemonde.fr/decodeurs/assets/topojson/peco.json »).then(function (data) { couchePays .selectAll(« .etat ») .data(topojson.feature(data, data.objects.peco).features) .enter() .append(« path ») .attr(« d », geoGenerator) .attr(« class », (d) => « etat » + d.properties.SOV_A3.toLowerCase()) .attr(« data-pays », (d) => d.properties.SOV_A3); coucheFrontieres .selectAll(« .frontiere ») .data(topojson.feature(data, data.objects.peco).features) .enter() .append(« path ») .attr(« d », geoGenerator) .attr(« class », (d) => « frontiere » + d.properties.SOV_A3.toLowerCase()) .attr(« data-pays », (d) => d.properties.SOV_A3); // on fait passer l’Ukraine devant couchePays.selectAll(« .etat.ukr, .frontiere.ukr »).moveToFront(); }); // les cours d’eau d3.json(« https://assets-decodeurs.lemonde.fr/decodeurs/assets/topojson/coursdeau.json »).then(function (data) { coursdeau.selectAll(« .riviere »).data(topojson.feature(data, data.objects.coursdeau).features).enter().append(« path »).attr(« d », geoGenerator).attr(« class », « riviere »); }); // les réservoirs sur le Dniepr d3.json(« https://assets-decodeurs.lemonde.fr/decodeurs/assets/topojson/reservoirs.json »).then(function (data) { coucheLacs .selectAll(« .reservoirs ») .data(topojson.feature(data, data.objects.reservoirs).features) .enter() .append(« path ») .attr(« d », geoGenerator) .attr(« class », « reservoirs ») .attr(« data-pays », (d) => d.properties.SOV_A3); }); // les régions ukrainiennes d3.json(« https://assets-decodeurs.lemonde.fr/decodeurs/assets/topojson/oblasts.json »).then(function (data) { coucheOblasts .selectAll(« .oblasts ») .data(topojson.feature(data, data.objects.oblasts).features) .enter() .append(« path ») .attr(« d », geoGenerator) .attr(« class », « oblasts ») .attr(« data-oblast », (d) => d.properties.name); }); // les zones « disputées » d3.json(« https://assets-decodeurs.lemonde.fr/decodeurs/assets/topojson/disputes_ukr.json »).then(function (data) { coucheDisputes .selectAll(« .dispute ») .data(topojson.feature(data, data.objects.disputes).features) .enter() .filter(function (d) { return d.properties.SOV_A3 == « RUS »; }) .append(« path ») .attr(« id », « crimee_occupee ») .attr(« d », geoGenerator) .attr(« class », (d) => « dispute » + d.properties.SOV_A3.toLowerCase()) .attr(« data-pays », (d) => d.properties.name); svgCarte.select(« #crimee_occupee »).attr(« fill », t.url()); }); // les lignes pointillées des zones occupées avant 2022 d3.json(« https://assets-decodeurs.lemonde.fr/decodeurs/assets/topojson/pre2022.json »).then(function (data) { coucheFrontieres .selectAll(« .pointilles ») .data(topojson.feature(data, data.objects.pre2022).features) .enter() .append(« path ») .attr(« d », geoGenerator) .attr(« class », (d) => « pointilles »); }); function milliers(num) { resultat = 0; if (num < 1000) { resultat = num; } else if (num = 1000000 && num = 2000000 ? "s" : ""); } else if (num >= 1000000000) { resultat = String((num / 1000000000).toFixed(1)) .replace(« . », « , ») .replace(« ,0 », « ») + » milliard » + (num >= 2000000000 ? « s » : « »); } return String(resultat).replace(« . », « , »); } // les dates pour les humains function dateHumaine(date) { // la date pour les humains dateCoupee = date.split(« -« ); jour = +dateCoupee[2] == 1 ? « 1er » : +dateCoupee[2]; return « » + jour + » » + moisLongs[+dateCoupee[1] – 1] + » » + dateCoupee[0] + « ]]> »; } // la fonction pour mettre à jour les zones function creerPath(date) { d3.selectAll(« #date_carte, #date_desk .contenu »).html(dateHumaine(date)); Promise.all([d3.json(« https://assets-decodeurs.lemonde.fr/decodeurs/medias/UkraineControlMap/ » + date + « .topojson »).catch(() => null), d3.json(« https://assets-decodeurs.lemonde.fr/decodeurs/assets/AssessedRussianAdvancesinUkraine/ » + date + « .topojson »).catch(() => null), d3.json(« https://assets-decodeurs.lemonde.fr/decodeurs/medias/Kursk_Incursion_Claimed_Limit_of_Ukrainian_Advance/ » + date + « .topojson »).catch(() => null)]) .then(function ([occupation, revendique, incur_ukr]) { avance.html(null); incursion.html(null); if (occupation) { const cle = Object.keys(occupation.objects)[0]; avance.selectAll(« path.occupe »).data(topojson.feature(occupation, occupation.objects[cle]).features).enter().append(« path »).attr(« d », geoGenerator).attr(« class », « occupe »); } else { console.warn(« Pas de zone d’occupation au », date); } if (revendique) { const cle = Object.keys(revendique.objects)[0]; avance.selectAll(« path.revendique »).data(topojson.feature(revendique, revendique.objects[cle]).features).enter().append(« path »).attr(« d », geoGenerator).attr(« class », « revendique »); } else { console.warn(« Pas de zone revendiquée au », date); } if (incur_ukr) { const cle = Object.keys(incur_ukr.objects)[0]; incursion.selectAll(« path.uaf »).data(topojson.feature(incur_ukr, incur_ukr.objects[cle]).features).enter().append(« path »).attr(« d », geoGenerator).attr(« class », « uaf »).style(« fill », contreattaque.url()); } else { console.warn(« Pas d’incursion ukrainienne au », date); } }) .catch(function (error) { console.error(« Error fetching data: », error); }); } // la fonction qui vérifie qui tient les villes function verifierVilles(date) { coucheVilles.selectAll(« rect.carre_ville »).classed(« rouge », function () { ville = d3.select(this).attr(« data-ville »); if (ville) { if (dicoVilles[ville][date] == « ua ») { return false; } if (dicoVilles[ville][date] == « ru ») { return true; } } }); coucheVilles.selectAll(« text.texte_ville, text.capitale »).classed(« rouge », function () { ville = d3.select(this).attr(« data-ville »); if (ville) { if (dicoVilles[ville][date] == « ua ») { return false; } if (dicoVilles[ville][date] == « ru ») { return true; } } coucheVilles.selectAll(« rect.carre_ville »).classed(« dispute », function () { ville = d3.select(this).attr(« data-ville »); if (ville) { if (dicoVilles[ville][date] == « ua ») { return false; } if (dicoVilles[ville][date] == « ru ») { return false; } if (dicoVilles[ville][date] == « dispute ») { return true; } } }); }); } // /██ /██ /██ /██ // | ██|__/ |__/ __██ // /██████ | ██ /██ /███████ /███████ /██ /██████ /██████ /██████ // /██__ ██| ██| ██ /██_____//██_____/| ██ /██__ ██ /██__ ██ /██__ ██ // | ██ ██| ██| ██| ██████| ██████ | ██| ████████| ██ __/| ████████ // | ██ | ██| ██| ██ ____ ██____ ██| ██| ██_____/| ██ | ██_____/ // | ███████| ██| ██ /███████//███████/| ██| ███████| ██ | ███████ // ____ ██|__/|__/|_______/|_______/ |__/ _______/|__/ _______/ // /██ ██ // | ██████/ // ______/ let width = largeur, combien = files_list.control.length, easement = d3.easeLinear, height = mobileDec ? 90 : 80, range = [0, combien – 1], step = 1, indexCarte = 0, monIntervale, anneeEnCours = 2022; // on prépare les divs de la glissière selecteurGliss.append(« div »).attr(« class », « lecturepause »).html(lecturepause); selecteurGliss.append(« div »).attr(« class », « glissiere »).attr(« id », « glissou »); tooltipDate = d3.select(« #glissou »).append(« div »).attr(« class », « tt_date passelect »).attr(« id », « date_desk »); tooltipDate.append(« div »).attr(« class », « contenu »); tooltipDate.append(« div »).attr(« class », « arrow »); // on ajoute les svg des boutons lecture/pause selecteurGliss.select(« .lecturepause svg »).style(« height », height * (mobileDec ? 0.6 : 0.7) + « px »); const svg = d3 .select(« #glissou ») .append(« svg ») .attr(« width », « 100% ») .attr(« viewBox », « 0 0 » + width + » » + height), glissiere = svg .append(« g ») .classed(« glissiere », true) .attr(« transform », « translate( » + margin.left + « , » + height / 4 + « ) »); var xScale = d3 .scaleLinear() .domain(range) .range([0, width – margin.left – margin.right]); var moisPrec = 1, rangeValues = d3.range(range[0], range[1], step || 1).concat(range[1]), xAxis = d3 .axisBottom(xScale) .tickValues(rangeValues) .tickSize(12) .tickFormat(function (d, i) { anneeAffichage = « »; tableauGlissiere[d] = xScale(d); dateGliss = parseFichier(listeDates[d]); anneeTemp = dateGliss.getFullYear(); moisEnCours = dateGliss.getMonth(); if (moisPrec != moisEnCours) { moisPrec = moisEnCours; ceTick = mois[dateGliss.getMonth()]; if (anneeEnCours != anneeTemp) { ceTick = anneeTemp; } return ceTick; } anneeEnCours = anneeTemp; }); xScale.clamp(true); var drag = d3 .drag() .on(« start.interrupt », function () { glissiere.interrupt(); }) .on(« start drag », function (event) { dragged(event.x); }); var track = glissiere.append(« line »).attr(« class », « track »).attr(« x1 », xScale.range()[0]).attr(« x2 », xScale.range()[1]), trackInset = d3.select(glissiere.node().appendChild(track.node().cloneNode())).attr(« class », « track-inset »), trackColor = d3.select(glissiere.node().appendChild(track.node().cloneNode())).attr(« class », « track-color »); var ticks = glissiere .append(« g ») .attr(« class », « ticks ») .attr(« transform », « translate(0, 4) ») .call(xAxis) .selectAll(« text ») .attr(« dx », mobileDec ? « -.8em » : « -1em ») .attr(« dy », mobileDec ? « .15em » : « .2em ») .attr(« transform », « rotate(-65) translate(-6, -5) »); // le bouton var handle = glissiere.append(« circle »).classed(« handle », true).attr(« r », 10), trackOverlay = d3.select(glissiere.node().appendChild(track.node().cloneNode())).attr(« class », « track-overlay »).call(drag); // la fonction quand on déplace la glissière function dragged(value) { var x = xScale.invert(value), index = null, midPoint, cx, xVal; if (step) { for (var i = 0; i = rangeValues[i] && x = combien – 1) { indexCarte = 0; } monIntervale = setInterval(function () { if (indexCarte
Ce live a été animé par Pierre Bouvier, Jean-Philippe Lefief, Jacky Goldberg, Glenn Cloarec, Marie Pouzadoux, Agnès Gautheron, Romain Del Bello, Grégor Brandy, Minh Dréan ainsi que par Olivier Touron, Etienne Laurent, Christophe Sales et Ramzy Bensaadi (service photo).
Lire tous nos articles, analyses et reportages sur la guerre en Ukraine.
No comment yet, add your voice below!