Le tournoi de Wimbledon se déroule à Londres du 23juin au 13juillet 2025, date de la finale. Suivez les principaux temps forts sur le gazon britannique durant toute la quinzaine.
DIRECT
14:54 - Kartal renversante (3-2)
La Britannique a clairement pris les commandes de la rencontre face à Pavlyuchenkova. Elle réalise un deuxième break d'affilée pour mener 3-2 dans le 1er set
14:50 - Thomposon abandonne (1-6, 0-3, 0-40)
Blessé à la cuisse et diminué, Jordan Thompson met fin à son calvaire. Il abandonne face à Taylor Friz (1-6, 0-3, 0-40). L'Américain affrontera Khachanov en quarts de finale
14:48 - Débreak blanc pour Kartal (1-2)
Sonay Kartal répond tout de suite à Pavklyuchenko en débreakant dans le 3e jeu. 2-1 pour la Russe
14:45 - Break pour Pavlyuchenkova (2-0)
La Russe mène deux jeux à zéro face à Sonay Kartal avec déjà un break d'avance
14:41 - Fritz impitoyable (6-1, 3-0)
Quatre breaks d'affilée pour Taylor Fritz face à Jordan Thompson, cela permet à l'Américain de mener 6-1, 3-0 dans son huitième de finale
14:36 - Kartal et Pavlyuchenkova sur le Center Court
La première rencontre sur le Center Court va commencer sous un toit fermé, elle mettra aux prises la Britannique Sonay Kartal (51e mondiale) à Anastasia Pavlyuchenkova (50e)
LIRE PLUS
Les matchs en direct
Suivez le tournoi de Wimbledon 2025 en direct avec les scores des matchs en cours en léger différé. Cherchez un joueur ou une joueuse dans le moteur de recherche ci-dessous pour voir son match.
Aucun match en cours
`; attachSearchEvents(); return; } // Parser les données de tennis en utilisant la colonne A comme indicateur const matches = []; const dataRows = data.slice(1); // Ignorer l'en-tête let lastRoundInfo = null; // Pour suivre le dernier tour/date affiché // Parcourir toutes les lignes et utiliser la colonne A pour identifier les matchs for (let i = 0; i < dataRows.length; i++) { const currentRow = dataRows[i]; // Vérifier si cette ligne a une valeur dans la colonne A (case pleine = début de match) if (currentRow.length > 0 && currentRow[0] && currentRow[0].trim() !== '') { // Cette ligne est le premier joueur d'un match const player1Row = currentRow; const roundInfo = currentRow[0].trim(); // Tour/date de la colonne A // Chercher la ligne suivante qui correspond au deuxième joueur (colonne A vide) let player2Row = null; for (let j = i + 1; j < dataRows.length; j++) { const nextRow = dataRows[j]; // Si la colonne A est vide ou ne contient que des espaces, c'est le deuxième joueur if (nextRow.length > 0 && (!nextRow[0] || nextRow[0].trim() === '')) { player2Row = nextRow; break; } } // Si on a trouvé les deux joueurs, créer le match if (player2Row && player1Row.length > 7 && player2Row.length > 7) { const player1Name = player1Row[1]; // Colonne B const player2Name = player2Row[1]; // Colonne B // Scores des sets (colonnes D à H) - garder les valeurs originales const scores = []; for (let setIndex = 3; setIndex <= 7; setIndex++) { // Colonnes D à H (index 3 à 7) const p1Score = player1Row[setIndex] || ''; const p2Score = player2Row[setIndex] || ''; if (p1Score !== '' || p2Score !== '') { scores.push({ player1: p1Score, player2: p2Score }); } } if (player1Name && player2Name && scores.length > 0) { // Déterminer si on doit afficher l'en-tête de tour const showRoundHeader = lastRoundInfo !== roundInfo; matches.push({ player1: player1Name, player2: player2Name, scores: scores, roundInfo: roundInfo, showRoundHeader: showRoundHeader }); // Mettre à jour le dernier tour affiché if (showRoundHeader) { lastRoundInfo = roundInfo; } } } } } // Générer le HTML des matchs let matchesHTML = ''; matches.forEach((match, index) => { const player1Logo = findPlayerLogo(match.player1); const player2Logo = findPlayerLogo(match.player2); // Déterminer le gagnant du match selon les règles du tennis const winner = determineWinner(match.scores); const player1Name = formatPlayerName(match.player1); const player2Name = formatPlayerName(match.player2); // Ajouter l'en-tête de tour si nécessaire if (match.showRoundHeader) { matchesHTML += `
${match.roundInfo}
`; } // Générer les scores du joueur 1 let player1ScoresHTML = ''; if (winner === 1) { player1ScoresHTML += '
'; } else { player1ScoresHTML += '
'; // Espace vide pour l'alignement } match.scores.forEach(setScore => { const setWinner = determineSetWinner(setScore.player1, setScore.player2); const isWinningSet = setWinner === 1; const formattedScore = formatScoreWithSuperscript(setScore.player1); player1ScoresHTML += `
${formattedScore}
`; }); // Générer les scores du joueur 2 let player2ScoresHTML = ''; if (winner === 2) { player2ScoresHTML += '
'; } else { player2ScoresHTML += '
'; // Espace vide pour l'alignement } match.scores.forEach(setScore => { const setWinner = determineSetWinner(setScore.player1, setScore.player2); const isWinningSet = setWinner === 2; const formattedScore = formatScoreWithSuperscript(setScore.player2); player2ScoresHTML += `
${formattedScore}
`; }); matchesHTML += `
${player1Logo ? `` : ''}
${player1Name}
${player1ScoresHTML}
${player2Logo ? `` : ''}
${player2Name}
${player2ScoresHTML}
`; }); // Mettre à jour le contenu du widget container.querySelector('.rw-widget').innerHTML = `
${config.title}
${matchesHTML}
`; // Ajouter l'indicateur de mise à jour const widgetElement = container.querySelector('.rw-widget'); const lastUpdateDiv = document.createElement('div'); lastUpdateDiv.className = 'rw-widget-last-update'; lastUpdateDiv.innerHTML = ` ${formatLastUpdate()} `; widgetElement.appendChild(lastUpdateDiv); // Attacher les événements de recherche attachSearchEvents(); // Appliquer le filtre si il y a un terme de recherche if (currentSearchTerm && currentSearchTerm.trim() !== '') { filterMatches(currentSearchTerm); }}// Variable globale pour stocker l'intervallelet refreshInterval = null;// Fonction pour formater la date de dernière mise à jourfunction formatLastUpdate() { const now = new Date(); return `Dernière mise à jour : ${now.toLocaleTimeString('fr-FR')}`;}// Fonction pour démarrer le rechargement automatiquefunction startAutoRefresh() { if (refreshInterval) { clearInterval(refreshInterval); } if (config.autoRefreshMinutes > 0) { refreshInterval = setInterval(() => { console.log('Rechargement automatique du widget...'); initWidget(); }, config.autoRefreshMinutes * 60 * 1000); }}// Fonction principale d'initialisationasync function initWidget() { const container = document.getElementById(config.widgetId); if (!container) return; // Créer la structure du widget avec entête et recherche container.innerHTML = `
${config.title}
Chargement des données...
`; try { // Charger d'abord les logos des joueurs playerLogos = await loadPlayerLogos(); // Récupérer les données des matchs const response = await fetch(config.dataUrl); if (!response.ok) { throw new Error("Erreur lors du chargement des données"); } const csvText = await response.text(); const parsedData = parseCSV(csvText); // Stocker les données globalement allMatches = parsedData; if (parsedData.length === 0) { container.querySelector('.rw-widget').innerHTML = `
${config.title}
Aucun match en cours
`; attachSearchEvents(); return; } // Afficher les matchs renderMatches(parsedData); // Démarrer le rechargement automatique après le premier chargement if (!refreshInterval) { startAutoRefresh(); } } catch (error) { console.error("Erreur widget:", error); container.querySelector('.rw-widget').innerHTML = `
${config.title}
Aucun match en cours
`; attachSearchEvents(); }}// Initialiser le widgetinitWidget();// Le widget se rechargera automatiquement toutes les 5 minutes})()
(Sont précisés entre parenthèses : "1" = têtes de série, "WC" = wild card, "q" = issu.e des qualifications)
Les résultats des matchs du tableau hommes
Voici tous les résultats du tableau masculin de Wimbledon 2025. Les scores sont actualisés dans les minutes qui suivent la fin de chaque la rencontre. Cherchez un joueur pour découvrir tous ses résultats.
`; attachSearchEvents(); return; } // Parser les données de tennis en utilisant la colonne A comme indicateur const matches = []; const dataRows = data.slice(1); // Ignorer l'en-tête let lastRoundInfo = null; // Pour suivre le dernier tour/date affiché // Parcourir toutes les lignes et utiliser la colonne A pour identifier les matchs for (let i = 0; i < dataRows.length; i++) { const currentRow = dataRows[i]; // Vérifier si cette ligne a une valeur dans la colonne A (case pleine = début de match) if (currentRow.length > 0 && currentRow[0] && currentRow[0].trim() !== '') { // Cette ligne est le premier joueur d'un match const player1Row = currentRow; const roundInfo = currentRow[0].trim(); // Tour/date de la colonne A // Chercher la ligne suivante qui correspond au deuxième joueur (colonne A vide) let player2Row = null; for (let j = i + 1; j < dataRows.length; j++) { const nextRow = dataRows[j]; // Si la colonne A est vide ou ne contient que des espaces, c'est le deuxième joueur if (nextRow.length > 0 && (!nextRow[0] || nextRow[0].trim() === '')) { player2Row = nextRow; break; } } // Si on a trouvé les deux joueurs, créer le match if (player2Row && player1Row.length > 7 && player2Row.length > 7) { const player1Name = player1Row[1]; // Colonne B const player2Name = player2Row[1]; // Colonne B // Scores des sets (colonnes D à H) - garder les valeurs originales const scores = []; for (let setIndex = 3; setIndex <= 7; setIndex++) { // Colonnes D à H (index 3 à 7) const p1Score = player1Row[setIndex] || ''; const p2Score = player2Row[setIndex] || ''; if (p1Score !== '' || p2Score !== '') { scores.push({ player1: p1Score, player2: p2Score }); } } if (player1Name && player2Name && scores.length > 0) { // Déterminer si on doit afficher l'en-tête de tour const showRoundHeader = lastRoundInfo !== roundInfo; matches.push({ player1: player1Name, player2: player2Name, scores: scores, roundInfo: roundInfo, showRoundHeader: showRoundHeader }); // Mettre à jour le dernier tour affiché if (showRoundHeader) { lastRoundInfo = roundInfo; } } } } } // Générer le HTML des matchs let matchesHTML = ''; matches.forEach((match, index) => { const player1Logo = findPlayerLogo(match.player1); const player2Logo = findPlayerLogo(match.player2); // Déterminer le gagnant du match selon les règles du tennis const winner = determineWinner(match.scores); const player1Name = formatPlayerName(match.player1); const player2Name = formatPlayerName(match.player2); // Ajouter l'en-tête de tour si nécessaire if (match.showRoundHeader) { matchesHTML += `
`; } // Générer les scores du joueur 1 let player1ScoresHTML = ''; if (winner === 1) { player1ScoresHTML += '
'; // Espace vide pour l'alignement } match.scores.forEach(setScore => { const setWinner = determineSetWinner(setScore.player1, setScore.player2); const isWinningSet = setWinner === 1; const formattedScore = formatScoreWithSuperscript(setScore.player1); player1ScoresHTML += `
`; }); // Générer les scores du joueur 2 let player2ScoresHTML = ''; if (winner === 2) { player2ScoresHTML += '
'; // Espace vide pour l'alignement } match.scores.forEach(setScore => { const setWinner = determineSetWinner(setScore.player1, setScore.player2); const isWinningSet = setWinner === 2; const formattedScore = formatScoreWithSuperscript(setScore.player2); player2ScoresHTML += `
`; }); // Mettre à jour le contenu du widget container.querySelector('.rw-widget').innerHTML = `
`; // Ajouter l'indicateur de mise à jour const widgetElement = container.querySelector('.rw-widget'); const lastUpdateDiv = document.createElement('div'); lastUpdateDiv.className = 'rw-widget-last-update'; lastUpdateDiv.innerHTML = ` ${formatLastUpdate()} `; widgetElement.appendChild(lastUpdateDiv); // Attacher les événements de recherche attachSearchEvents(); // Appliquer le filtre si il y a un terme de recherche if (currentSearchTerm && currentSearchTerm.trim() !== '') { filterMatches(currentSearchTerm); }}// Variable globale pour stocker l'intervallelet refreshInterval = null;// Fonction pour formater la date de dernière mise à jourfunction formatLastUpdate() { const now = new Date(); return `Dernière mise à jour : ${now.toLocaleTimeString('fr-FR')}`;}// Fonction pour démarrer le rechargement automatiquefunction startAutoRefresh() { if (refreshInterval) { clearInterval(refreshInterval); } if (config.autoRefreshMinutes > 0) { refreshInterval = setInterval(() => { console.log('Rechargement automatique du widget...'); initWidget(); }, config.autoRefreshMinutes * 60 * 1000); }}// Fonction principale d'initialisationasync function initWidget() { const container = document.getElementById(config.widgetId); if (!container) return; // Créer la structure du widget avec entête et recherche container.innerHTML = `
`; try { // Charger d'abord les logos des joueurs playerLogos = await loadPlayerLogos(); // Récupérer les données des matchs const response = await fetch(config.dataUrl); if (!response.ok) { throw new Error("Erreur lors du chargement des données"); } const csvText = await response.text(); const parsedData = parseCSV(csvText); // Stocker les données globalement allMatches = parsedData; if (parsedData.length === 0) { container.querySelector('.rw-widget').innerHTML = `
`; attachSearchEvents(); return; } // Afficher les matchs renderMatches(parsedData); // Démarrer le rechargement automatique après le premier chargement if (!refreshInterval) { startAutoRefresh(); } } catch (error) { console.error("Erreur widget:", error); container.querySelector('.rw-widget').innerHTML = `
`; attachSearchEvents(); }}// Initialiser le widgetinitWidget();// Le widget se rechargera automatiquement toutes les 5 minutes})()