The Decathlon store in Châteaubriant is innovating in 2025 by offering an expanded range of sports activities adapted to all ages and abilities. Between new discoveries, varied training programs, and local partnerships, these new offerings bring a dynamic boost to the sports scene in Loire-Atlantique.
New sports activities to discover at Decathlon Essentiel Châteaubriant
Decathlon Essentiel Châteaubriant stands out this year by integrating diverse sports activities that meet the growing demand from residents of the Pays de la Mée region. Whether it’s running sessions, fitness classes, or family workouts, the store is becoming a true hub for accessible sports initiatives. 🏃♂️ Dynamic running outings : 6 to 8 km routes offered at a moderate pace, perfect for all levels. 💪 Fitness and muscle strengthening : Domyos activities specially designed to improve endurance and muscle tone. 🎯 Skill & Team Sports Discover Kipsta with sessions for everyone, perfect for beginners or those looking to improve their skills. Activity Brand Offered Benefits for Participants Running B’twin, Nike Accessible to all levels, improved cardio Fitness
Domyos, Adidas Muscle strengthening, suitable for beginners and experienced athletes Team Sports Kipsta, Puma Develops team spirit, recreational activities
Discover all available opportunities and book your sessions onDecathlon Activities
or directly at Decathlon Essential Châteaubriant Comparison of Decathlon sports equipment for leisure activities in Châteaubriant Choosing the right equipment is essential to fully enjoy the sports activities offered. Here’s a comparison of the iconic lines available in stores to guide your choices based on local needs and preferences: Criterion 🔍 Nike Adidas Puma Recommendation Comfort 🚀 Excellent Air technology for cushioning Optimal support thanks to Boost Lightweight and flexible Adidas for comfort and support Design 🎨 Innovative and modern style Classic, sporty, and versatile Urban and trendy energy According to visual preferences
Versatility 🎽Versatility for running and training Performance on the track and in the gym Urban sports and leisure
Nike for multi-activity sports Local offerings around Châteaubriant and Loire-Atlantique The Decathlon store is part of a strong regional dynamic through its partnership with the Châteaubriant-Derval inter-municipal community
The organization of regular sessions and sporting events helps strengthen community organizations and local health.
🌳 Development of outdoor sports: trail running, hiking in the region 🏡 Family activities in the heart of the city and in natural areas 🤝 Collaboration with local sports associations via HelloAsso https://www.youtube.com/watch?v=paisu_Qb7Ng Discover the new sports activities offered by Decathlon Châteaubriant in 2025
Filter by required level: All levels Comparison table of sports activities at Decathlon Châteaubriant Activity Required level Approximate duration Location (function(){ // Sports data from Decathlon Châteaubriant 2025 // JSON format: // { // “rows”:[ // ] // } const data = { rows:[ ] }; const tableBody = document.querySelector(‘#table-activites tbody’); const filterLevelSelect = document.getElementById(‘filter-level’); const messageInfo = document.getElementById(‘message-info’); const headers = document.querySelectorAll(‘#table-activities thead th’); let currentSort = { col: null, asc: true }; / Extract and prepare the levels for filtering (unique, sorted) function extractLevels(rows) { // We retrieve all distinct levels sorted alphabetically, putting “All levels” first const levelsSet = new Set(); const levelsArray = Array.from(levelsSet).filter(n => n.toLowerCase() !== “all levels”).sort((a,b) => a.localeCompare(b)); } // Build the filter select based on available levels function buildFilters() { const levels = extractLevels(data.rows); filterLevelSelect.innerHTML = ”; levels.forEach(level => { const option = document.createElement(‘option’); option.value = level.toLowerCase(); option.textContent = level; filterLevelSelect.appendChild(option); }); } // Function to sort data by column // colIndex: column index, asc: boolean (true=ascending) function sortData(colIndex, asc) { data.rows.sort((a,b) => { // If the column is Approximate Duration (index 2), we convert it to numeric minutes for more relevant sorting if(colIndex === 2) { const durationToMinutes = s => { if(!s) return 0; // Ex: “60 minutes”, “1h30” let h = 0, m = 0; const hMatch = s.match(/(d+)s*h/); const mMatch = s.match(/(d+)s*min/); / Case “1h30” without “min” if(!mMatch && h>0) { const hOnlyMatch = s.match(/(d+)h(d+)/); } return h*60 + m; }; } if(vA vB) return asc ? 1 : -1; return 0; }); } // Function to display the data in the table according to the filter and sort function displayTable() { const filterLevel = filterLevelSelect.value; // Filter rows const filteredRows = data.rows.filter(row => { if(filterLevel === “all levels”) return true; }); // Sort if sorting is enabled if(currentSort.col !== null) { sortData(currentSort.col, currentSort.asc); } // Clear tbody before displaying tableBody.innerHTML = ”; if(linesFiltrees.length === 0) { const tr = document.createElement(‘tr’); const td = document.createElement(‘td’); td.colSpan = data.columns.length; td.className = “text-center text-muted fst-italic”; td.textContent = “No activity matches the selected criteria.”; tr.appendChild(td); tableBody.appendChild(tr); messageInfo.textContent = ”; return; } // Construct the filtered lines linesFiltrees.forEach(row => { const tr = document.createElement(‘tr’); row.forEach(cell => { const td = document.createElement(‘td’); td.textContent = cell; tr.appendChild(td); }); tableBody.appendChild(tr); }); messageInfo.textContent = `${filteredLines.length} activity(ies) displayed.`; } // Update aria-sort attributes on headers function majAriaSort() { headers.forEach(header => { const col = parseInt(header.getAttribute(‘data-col’),10); if(currentSort.col === col) { header.setAttribute(‘aria-sort’, currentSort.asc ? ‘ascending’ : ‘descending’);
} else {header.setAttribute(‘aria-sort’, ‘none’);
} // Handling clicks on headers for sorting
headers.forEach(header => {
header.addEventListener(‘click’, () => { const col = parseInt(header.getAttribute(‘data-col’),10); // If the same column is sorted, reverse the order if(currentSort.col === col) {
currentSort.asc = !currentSort.asc; } else {
currentSort.col = col; currentSort.asc = true; } majAriaSort();
afficherTable(); });
header.addEventListener(‘keydown’, e => { if(e.key === “Enter” || e.key === ” “){
e.preventDefault(); header.click();