Exercice de Grammaire: Le Pronom Y

body {
font-family: ‘Segoe UI’, Tahoma, Geneva, Verdana, sans-serif;
max-width: 100%;
margin: 0 auto;
padding: 20px;
background-color: #f9f9f9;
}
h1, h2, h3 {
color: #2c3e50;
}
.container {
background-color: white;
padding: 30px;
border-radius: 10px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.subscription-form {
background-color: #e8f4f8;
padding: 20px;
border-radius: 8px;
margin-bottom: 30px;
}
.exercise-container {
display: none;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
input, select {
width: 100%;
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 16px;
}
button {
background-color: #3498db;
color: white;
border: none;
padding: 12px 20px;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
transition: background-color 0.3s;
}
button:hover {
background-color: #2980b9;
}
.exercise-text {
line-height: 2;
font-size: 18px;
}
.gap {
border-bottom: 1px solid #333;
padding: 0 5px;
margin: 0 3px;
min-width: 50px;
display: inline-block;
}
input.gap-input {
width: 50px;
border: none;
border-bottom: 1px solid #333;
font-size: 16px;
text-align: center;
}
.result {
margin-top: 30px;
padding: 20px;
background-color: #eafaf1;
border-radius: 8px;
display: none;
}
.certificate {
text-align: center;
margin-top: 30px;
padding: 20px;
border: 2px solid #2c3e50;
border-radius: 8px;
display: none;
}
.difficulty-selector {
margin-bottom: 20px;
}
.error {
color: red;
font-size: 14px;
}
#certificatePreview {
position: relative;
width: 100%;
height: 450px;
background-color: #fff;
border: 10px solid transparent;
border-image: linear-gradient(45deg, #3498db, #2980b9, #1abc9c, #16a085, #2c3e50) 1;
box-sizing: border-box;
overflow: hidden;
}
.certificate-background {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0.07;
z-index: 0;
background-position: center;
background-repeat: no-repeat;
background-size: 70%;
}
.certificate-content {
position: relative;
z-index: 1;
padding: 20px;
width: 100%;
height: 100%;
box-sizing: border-box;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.certificate-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
}
.certificate-title {
flex-grow: 1;
text-align: center;
}
.certificate-logo {
width: 120px;
height: 60px;
}
.certificate-footer {
display: flex;
justify-content: space-between;
align-items: flex-end;
}
.certificate-qr {
width: 120px;
height: 120px;
display: flex;
justify-content: center;
align-items: center;
}
.certificate-qr img {
max-width: 100%;
max-height: 100%;
}
.certificate-signature {
flex-grow: 1;
text-align: center;
}
.triangle-pattern {
position: absolute;
width: 150px;
height: 120px;
}
.triangle-pattern.top-right {
top: 0;
right: 0;
}
.triangle-pattern.bottom-left {
bottom: 0;
left: 0;
}
.rules-box {
background-color: #f0f5fa;
padding: 15px;
border-left: 4px solid #3498db;
margin-bottom: 20px;
border-radius: 4px;
}

Exercice de Grammaire: Le Pronom Y

Inscrivez-vous pour commencer l’exercice

Veuillez vous abonner et remplir vos informations pour accéder à l’exercice.

Complétez le texte avec le pronom Y quand nécessaire

Rappel sur le pronom Y

Le pronom Y remplace:

  • Un lieu introduit par une préposition de lieu (à, dans, sur, en, etc.):
    Je vais à Paris. → J’y vais.
  • Un complément introduit par la préposition “à” (sauf pour les personnes):
    Je pense à mes vacances. → J’y pense.
  • Un complément dans des expressions comme il y a, ça y est, s’y prendre, s’y connaître

Attention: Y ne remplace pas les personnes (utiliser “lui”, “leur” à la place) et se place généralement avant le verbe.

  • Explications sur les cas d’omission du pronom “y”
  • En français, le pronom “y” remplace généralement un complément de lieu introduit par “à”, “en”, “dans”, etc., ou un complément introduit par la préposition “à” qui ne désigne pas une personne.

    Cependant, il existe plusieurs cas où le pronom “y” n’est pas utilisé :

    Pour remplacer un complément d’objet direct (COD) : on utilise les pronoms “le”, “la”, “les” et non “y”.
    Exemple : J’ai acheté ce livre → Je l’ai acheté (et non “j’y ai acheté”)

    Pour remplacer un complément désignant une personne introduit par “à” : on utilise les pronoms “lui” ou “leur”.
    Exemple : Je téléphone à ma sœur → Je lui téléphone (et non “j’y téléphone”)

    Avec les verbes qui expriment un sentiment ou une émotion comme aimer, adorer, préférer, etc.
    Exemple : J’aime ma famille → Je l’aime (et non “j’y aime”)

    Après certains verbes qui n’acceptent pas le pronom “y” comme attendre, chercher, quitter, etc.
    Exemple : J’attends mon ami → Je l’attends (et non “j’y attends”)

    Avec les verbes pronominaux de sentiment comme se plaire, se fier, etc., qui requièrent d’autres constructions.
    Exemple : Je me fie à son jugement → Je me fie à lui/elle (et non “je m’y fie”)

    Dans l’exercice ci-dessus, les espaces avec la réponse “-” indiquent les cas où le pronom “y” ne doit pas être utilisé.

    Choisissez le niveau de difficulté:

    Facile
    Moyen
    Difficile

    Le Pronom Y en Français (Niveau Facile)
    J’aime beaucoup Paris, j’ vais souvent. Ma sœur n’ est jamais allée. Nous avons visité le musée du Louvre et nous avons vu la Joconde. J’ai rencontré mon ami Pierre au café.
    Notre professeur nous a parlé de ce livre, mais je ne m’ intéresse pas beaucoup. Par contre, mon frère pense sans arrêt. Il a même des références dans son mémoire. Je connais cette histoire depuis mon enfance.
    Je m’installe toujours à cette table pour travailler. Je m’ sens bien. Tu veux t’asseoir dans ce fauteuil? Moi, je ne m’ installe jamais, il est trop dur! J’aime ma famille plus que tout.
    Est-ce que tu vas participer à ce concours? Oui, je vais participer. Non, je ne vais pas participer cette année. J’ai appelé mes parents hier soir.
    Dans cette école, il a une excellente ambiance. Les étudiants sont heureux. Nous avons acheté des livres pour la bibliothèque.
    Ta mère est à la maison? Non, elle n’ est pas, elle est sortie. Tu trouves cette chanson jolie? Oui, je l’adore!
    Tu réfléchis à ton avenir? Oui, j’ réfléchis beaucoup en ce moment. J’ai vu ce film trois fois déjà.
    Cette montagne est difficile à escalader, mais mon cousin est déjà monté trois fois. J’ai rencontré ton ami Paul au restaurant.
    Le succès de son entreprise? Il croit fermement. J’ai écrit une lettre à ma tante.

    Le Pronom Y en Français (Niveau Moyen)
    avez-vous déjà pensé? Cette question est complexe, mais nous devons réfléchir sérieusement. Nous avons aidé les personnes âgées du quartier.
    Si vous allez à ce concert, j’ serai également. Elle a vu son médecin hier après-midi.
    Marc n’aime pas les mathématiques et pourtant il excelle. J’attends ma sœur depuis une heure.
    Nous avons passé beaucoup de temps à étudier ce phénomène, et nous avons découvert des aspects fascinants. Nous avons invité tous nos amis à la fête.
    Elle s’est inscrite à ce cours et elle participera dès la semaine prochaine. Je cherche mes clés depuis ce matin.
    Ces nouvelles technologies, personne ne s’ attendait il y a dix ans. J’ai préparé un gâteau pour ton anniversaire.
    Dans ces montagnes, on trouve des plantes rares. Il a apporté son ordinateur pour la présentation.
    À cette question, je ne peux pas répondre immédiatement. Je n’ai pas vu ce film dont tout le monde parle.
    Tu vas au théâtre ce soir? J’ vais aussi! Nous avons discuté ce problème pendant des heures.
    Il ne s’ prend pas correctement pour résoudre ce problème. Il a visité plusieurs villes européennes l’été dernier.
    Tu as pensé à mon conseil? Oui, j’ ai bien réfléchi. J’adore cette chanson, elle me rappelle mon enfance.
    Je ne crois pas à ces superstitions, mais ma grand-mère croit fermement. Nous avons quitté Paris très tôt ce matin!

    Le Pronom Y en Français (Niveau Difficile)
    utilisation du pronom Y peut devenir complexe avec certaines structures verbales. Je ne m’ serais jamais attendu à un tel succès! J’ai finalement rencontré la personne dont tu m’as tant parlé.
    Dans cette affaire, nous nous sommes investis corps et âme. J’ai toujours respecté mes professeurs, même les plus exigeants.
    Contrairement à ce que l’on pourrait croire, la solution à ce problème ne s’ trouve pas facilement. Elle a préféré son ancien appartement à celui-ci.
    Il ne s’ est pas encore fait, à son nouveau poste de responsabilité. Nous avons écouté attentivement tous les témoins.
    Quand on veut, on peut, mais encore faut-il s’ prendre correctement. Il a trouvé sa vocation après des années de recherche.
    À ces propos tendancieux, personne n’ a vraiment prêté attention. Elle a encouragé ses élèves pendant toute l’année.
    Au sommet de cette montagne, les alpinistes chevronnés s’ sont risqués malgré le mauvais temps. J’ai salué mes voisins ce matin en partant.
    Ils s’ étaient pourtant bien préparés, à cet examen difficile. J’ai aimé ce livre dès les premières pages.
    Quand on s’ connaît en art, on peut distinguer une vraie œuvre d’un faux. Elle a survécu à cette terrible épreuve grâce à sa force morale.
    Cette théorie, bien que controversée, plusieurs scientifiques réputés s’ réfèrent régulièrement. Nous avons félicité les gagnants du concours.
    À cette conférence internationale, nous nous rendrons en délégation officielle. J’ai téléphoné à mon ami pour lui annoncer la nouvelle.
    Il s’ prenait mal, mais à force de persévérance, il a fini par maîtriser cette technique. J’ai regardé ce documentaire avec beaucoup d’intérêt.

    Résultat

    Certificat de Réussite

    Exercice de Grammaire: Le Pronom Y

    Ce certificat atteste que

    a complété avec succès l’exercice sur le pronom Y en français

    Score: / 100

    Niveau:

    Date:

    // Variables globales
    let currentDifficulty = ‘facile’;
    let userInfo = {
    prenom: ”,
    nom: ”,
    email: ”
    };

    // Logo Aplenguas en SVG (version bleue pour le pronom Y)
    const aplenguas_logo_svg = `

    `;

    // Attente que le DOM soit chargé
    document.addEventListener(‘DOMContentLoaded’, function() {
    // Éléments du DOM
    const startButton = document.getElementById(‘startButton’);
    const changeDifficultyButton = document.getElementById(‘changeDifficultyButton’);
    const checkButton = document.getElementById(‘checkButton’);
    const generatePdfButton = document.getElementById(‘generatePdfButton’);
    const difficultySelect = document.getElementById(‘difficultySelect’);

    // Définir l’arrière-plan du certificat
    const certificateBackground = document.querySelector(‘.certificate-background’);
    certificateBackground.style.backgroundImage = `url(‘data:image/svg+xml;base64,${btoa(aplenguas_logo_svg)}’)`;

    // Ajouter les logos SVG
    const headerLogo = document.getElementById(‘certificateHeaderLogo’);
    const footerLogo = document.getElementById(‘certificateFooterLogo’);
    headerLogo.innerHTML = aplenguas_logo_svg;
    footerLogo.innerHTML = aplenguas_logo_svg;

    // Ajouter aussi le logo au container caché pour l’exportation PDF
    document.getElementById(‘logoSvgContainer’).innerHTML = aplenguas_logo_svg;

    // Ajout des écouteurs d’événements
    startButton.addEventListener(‘click’, startExercise);
    changeDifficultyButton.addEventListener(‘click’, changeDifficulty);
    checkButton.addEventListener(‘click’, checkAnswers);
    generatePdfButton.addEventListener(‘click’, generatePdf);

    // Générer le QR code
    function generateQRCode() {
    const qrCodeContainer = document.getElementById(‘qrCodeContainer’);
    qrCodeContainer.innerHTML = ”;

    try {
    // Version du QR code (1-40) avec un niveau de correction d’erreur ‘L’
    var qr = qrcode(4, ‘L’);
    qr.addData(‘https://aplenguas.com’);
    qr.make();

    qrCodeContainer.innerHTML = qr.createImgTag(4);
    } catch (error) {
    console.error(“Erreur lors de la génération du QR code:”, error);
    // Fallback si la génération du QR code échoue
    qrCodeContainer.innerHTML = ‘

    QR Code

    ‘;
    }
    }

    // Fonction pour démarrer l’exercice
    function startExercise() {
    // Validation des champs
    const prenom = document.getElementById(‘prenom’).value.trim();
    const nom = document.getElementById(‘nom’).value.trim();
    const email = document.getElementById(‘email’).value.trim();
    const subscribe = document.getElementById(‘subscribe’).checked;

    // Réinitialiser les messages d’erreur
    document.getElementById(‘prenomError’).textContent = ”;
    document.getElementById(‘nomError’).textContent = ”;
    document.getElementById(‘emailError’).textContent = ”;
    document.getElementById(‘subscribeError’).textContent = ”;

    // Vérifier les champs requis
    let isValid = true;

    if (!prenom) {
    document.getElementById(‘prenomError’).textContent = ‘Veuillez entrer votre prénom’;
    isValid = false;
    }

    if (!nom) {
    document.getElementById(‘nomError’).textContent = ‘Veuillez entrer votre nom’;
    isValid = false;
    }

    if (!email) {
    document.getElementById(‘emailError’).textContent = ‘Veuillez entrer votre email’;
    isValid = false;
    } else if (!isValidEmail(email)) {
    document.getElementById(‘emailError’).textContent = ‘Veuillez entrer un email valide’;
    isValid = false;
    }

    if (!subscribe) {
    document.getElementById(‘subscribeError’).textContent = ‘Veuillez accepter de vous abonner pour continuer’;
    isValid = false;
    }

    if (!isValid) return;

    // Enregistrer les informations de l’utilisateur
    userInfo.prenom = prenom;
    userInfo.nom = nom;
    userInfo.email = email;

    // Masquer le formulaire d’inscription et afficher l’exercice
    document.getElementById(‘subscriptionForm’).style.display = ‘none’;
    document.getElementById(‘exerciseContainer’).style.display = ‘block’;

    // Initialiser l’exercice avec la difficulté par défaut
    showExercise(‘facile’);
    }

    // Fonction pour valider l’email
    function isValidEmail(email) {
    const emailRegex = /^[^s@]+@[^s@]+.[^s@]+$/;
    return emailRegex.test(email);
    }

    // Fonction pour changer la difficulté
    function changeDifficulty() {
    const selectedDifficulty = document.getElementById(‘difficultySelect’).value;
    currentDifficulty = selectedDifficulty;
    showExercise(selectedDifficulty);
    }

    // Fonction pour afficher l’exercice selon la difficulté
    function showExercise(difficulty) {
    // Masquer tous les exercices
    document.querySelectorAll(‘.exercise-level’).forEach(el => {
    el.style.display = ‘none’;
    });

    // Afficher l’exercice sélectionné
    document.getElementById(‘exercise’ + difficulty.charAt(0).toUpperCase() + difficulty.slice(1)).style.display = ‘block’;

    // Réinitialiser les champs de saisie
    document.querySelectorAll(‘.gap-input’).forEach(input => {
    input.value = ”;
    input.style.backgroundColor = ”;
    });

    // Masquer les résultats et le certificat
    document.getElementById(‘resultContainer’).style.display = ‘none’;
    document.getElementById(‘certificatePreview’).style.display = ‘none’;
    }

    // Fonction pour vérifier les réponses
    function checkAnswers() {
    const inputs = document.querySelectorAll(‘#exercise’ + currentDifficulty.charAt(0).toUpperCase() + currentDifficulty.slice(1) + ‘ .gap-input’);
    let correctAnswers = 0;

    inputs.forEach(input => {
    const userAnswer = input.value.trim();
    const correctAnswer = input.dataset.answer;

    if (userAnswer.toLowerCase() === correctAnswer.toLowerCase()) {
    input.style.backgroundColor = ‘#d4edda’; // Vert clair pour les bonnes réponses
    correctAnswers++;
    } else {
    input.style.backgroundColor = ‘#f8d7da’; // Rouge clair pour les mauvaises réponses
    }
    });

    // Calcul du score en pourcentage
    const totalQuestions = inputs.length;
    const scorePercentage = Math.round((correctAnswers / totalQuestions) * 100);

    // Afficher le résultat
    const resultContainer = document.getElementById(‘resultContainer’);
    const scoreDisplay = document.getElementById(‘scoreDisplay’);

    resultContainer.style.display = ‘block’;
    scoreDisplay.textContent = `Vous avez obtenu ${correctAnswers} réponses correctes sur ${totalQuestions} (${scorePercentage}%)`;

    // Préparer le certificat si le score est bon
    if (scorePercentage >= 60) {
    // Mettre à jour les informations du certificat
    document.getElementById(‘certificateNamePreview’).textContent = `${userInfo.prenom} ${userInfo.nom}`;
    document.getElementById(‘certificateScorePreview’).textContent = scorePercentage;
    document.getElementById(‘certificateLevelPreview’).textContent = currentDifficulty.charAt(0).toUpperCase() + currentDifficulty.slice(1);

    // Date du jour
    const today = new Date();
    const options = { year: ‘numeric’, month: ‘long’, day: ‘numeric’ };
    document.getElementById(‘certificateDatePreview’).textContent = today.toLocaleDateString(‘fr-FR’, options);

    // Afficher le certificat
    document.getElementById(‘certificatePreview’).style.display = ‘block’;

    // Générer le QR code
    generateQRCode();
    }
    }

    // Fonction pour générer le PDF
    function generatePdf() {
    try {
    if (typeof window.jspdf === ‘undefined’ || typeof window.jspdf.jsPDF === ‘undefined’) {
    alert(“La bibliothèque jsPDF n’est pas chargée correctement. Veuillez réessayer plus tard.”);
    return;
    }

    // Créer un nouveau document PDF
    const { jsPDF } = window.jspdf;
    const doc = new jsPDF({
    orientation: ‘landscape’,
    unit: ‘mm’,
    format: ‘a4’
    });

    // Cloner le certificat pour éviter de modifier l’original
    const certificateElement = document.getElementById(‘certificatePreview’).cloneNode(true);

    // Convertir le SVG en base64 pour l’inclure dans le PDF
    const logoSvg = document.getElementById(‘logoSvgContainer’).innerHTML;
    const logoBase64 = btoa(logoSvg);

    // Personnaliser le PDF
    const title = “Certificat de Réussite – Pronom Y”;
    doc.setProperties({
    title: title,
    subject: “Exercice de Grammaire Française”,
    author: “Aplenguas”,
    creator: “Générateur de Certificats”
    });

    // Ajouter le titre
    doc.setFontSize(24);
    doc.text(title, 150, 20, { align: ‘center’ });

    // Ajouter un logo (image SVG convertie en base64)
    doc.addImage(‘data:image/svg+xml;base64,’ + logoBase64, ‘SVG’, 20, 10, 40, 20);

    // Ajouter les informations du certificat
    doc.setFontSize(14);
    doc.text(`Ce certificat atteste que ${userInfo.prenom} ${userInfo.nom}`, 150, 50, { align: ‘center’ });
    doc.text(`a complété avec succès l’exercice sur le pronom Y en français`, 150, 60, { align: ‘center’ });
    doc.text(`Score: ${document.getElementById(‘certificateScorePreview’).textContent} / 100`, 150, 70, { align: ‘center’ });
    doc.text(`Niveau: ${document.getElementById(‘certificateLevelPreview’).textContent}`, 150, 80, { align: ‘center’ });
    doc.text(`Date: ${document.getElementById(‘certificateDatePreview’).textContent}`, 150, 90, { align: ‘center’ });

    // Ajouter une signature
    doc.line(100, 120, 200, 120);
    doc.text(“Signature du Professeur”, 150, 130, { align: ‘center’ });

    // Ajouter un QR code (simplement un carré noir pour simuler)
    doc.setFillColor(0, 0, 0);
    doc.rect(240, 110, 20, 20, ‘F’);

    // Sauvegarder le PDF
    const filename = `certificat_pronom_y_${userInfo.nom.toLowerCase()}_${userInfo.prenom.toLowerCase()}.pdf`;
    doc.save(filename);

    } catch (error) {
    console.error(“Erreur lors de la génération du PDF:”, error);
    alert(“Une erreur s’est produite lors de la génération du PDF. Veuillez réessayer plus tard.”);
    }
    }

    // Fonction pour générer des motifs triangulaires décoratifs pour le certificat
    function generateTrianglePattern() {
    const trianglePatterns = document.querySelectorAll(‘.triangle-pattern’);

    trianglePatterns.forEach(pattern => {
    let svgContent = ”;

    // Différentes couleurs pour les triangles
    const colors = [‘#3498db’, ‘#2980b9’, ‘#1abc9c’, ‘#16a085’, ‘#2c3e50’];

    // Générer des triangles aléatoires
    for (let i = 0; i < 15; i++) {
    const x1 = Math.floor(Math.random() * 150);
    const y1 = Math.floor(Math.random() * 120);
    const x2 = x1 + Math.floor(Math.random() * 30) – 15;
    const x3 = x1 + Math.floor(Math.random() * 30) – 15;
    const y2 = y1 + Math.floor(Math.random() * 30) – 15;
    const y3 = y1 + Math.floor(Math.random() * 30) – 15;
    const color = colors[Math.floor(Math.random() * colors.length)];
    const opacity = Math.random() * 0.5 + 0.2; // Entre 0.2 et 0.7

    svgContent += “;
    }

    svgContent += ”;
    pattern.innerHTML = svgContent;
    });
    }

    // Appeler la fonction de génération des motifs triangulaires
    generateTrianglePattern();
    });

    Dejar un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *