, ,

Google Sheets : Automatisez le nettoyage de vos données avec ce script (Majuscules, espaces, noms propres)

Vous est-il déjà arrivé de recevoir un fichier Google Sheets rempli de noms écrits tantôt en majuscules, tantôt en minuscules, ou pire, truffés d’espaces invisibles qui cassent vos formules RECHERCHEV (VLOOKUP) ?

Le nettoyage manuel de données est l’une des tâches les plus chronophages en bureautique. Bien sûr, il existe des formules comme =MAJUSCULE() ou =SUPPRESPACE(), mais elles nécessitent de créer de nouvelles colonnes, de copier-coller les valeurs, puis de supprimer les colonnes temporaires. C’est long et fastidieux.

Aujourd’hui, je vous partage un script Google Apps Script prêt à l’emploi qui ajoute un menu « Outils Texte » directement dans votre barre d’outils. Il vous permet de nettoyer vos cellules en un seul clic, sans formules.

Pourquoi utiliser ce script plutôt que les formules ?

Ce script a été conçu pour être à la fois performant et intelligent. Voici ses avantages :

  1. Gain de temps immédiat : Pas de colonnes intermédiaires. Sélectionnez, cliquez, c’est fait.
  2. Gestion intelligente des noms propres : Contrairement à la fonction standard, ce script gère parfaitement les prénoms composés (ex: jean-pierre devient Jean-Pierre) et les noms avec apostrophes (ex: d'artagnan devient D'Artagnan).
  3. Nettoyage invisible : La fonction « Nettoyer Espaces » supprime les espaces en début/fin de chaîne (Trim) ET remplace les doubles espaces par des simples.
  4. Feedback visuel : Une petite notification (« Toast ») vous indique exactement combien de cellules ont été modifiées.

Le code complet

Voici le script à copier. Il est commenté pour que vous puissiez comprendre son fonctionnement.

/**
 * ----------------------------------------------------------------------------
 * NOM DU SCRIPT : Boîte à outils de formatage de texte
 * DESCRIPTION   : Ajoute un menu "Outils Texte" pour modifier la casse et
 * nettoyer le contenu des cellules, avec confirmation visuelle.
 *
 * FONCTIONNALITÉS :
 * 1. TOUT EN MAJUSCULES
 * 2. tout en minuscules
 * 3. Nom Propre (Gère accents, tirets, apostrophes)
 * 4. Nettoyer Espaces (Trim + suppression doubles espaces)
 * ----------------------------------------------------------------------------
 */

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu("Outils Texte")
    .addItem("TOUT EN MAJUSCULES", "passerEnMajuscules")
    .addItem("tout en minuscules", "passerEnMinuscules")
    .addItem("Nom Propre (Première lettre maj)", "passerEnNomPropre")
    .addSeparator()
    .addItem("Supprimer les espaces inutiles", "nettoyerEspaces")
    .addToUi();
}

function passerEnMajuscules() {
  appliquerTransformation_(texte => texte.toUpperCase());
}

function passerEnMinuscules() {
  appliquerTransformation_(texte => texte.toLowerCase());
}

function passerEnNomPropre() {
  appliquerTransformation_(texte => {
    let texteMinuscule = texte.toLowerCase();
    // Regex pour gérer les débuts de mots, tirets et apostrophes
    return texteMinuscule.replace(/(?:^|[\s\-\'\"])([\w\u00C0-\u00FF])/g, c => c.toUpperCase());
  });
}

function nettoyerEspaces() {
  appliquerTransformation_(texte => texte.trim().replace(/\s+/g, ' '));
}

/**
 * Fonction principale (Moteur)
 */
function appliquerTransformation_(fonctionDeTransformation) {
  const classeur = SpreadsheetApp.getActiveSpreadsheet();
  const plageActive = classeur.getActiveRange();
  
  if (!plageActive) {
    classeur.toast("Veuillez sélectionner une cellule.", "Erreur");
    return;
  }

  const valeurs = plageActive.getValues();
  let compteurModifications = 0;

  const nouvellesValeurs = valeurs.map(ligne => 
    ligne.map(cellule => {
      if (typeof cellule === 'string' && cellule !== "") {
        const nouvelleValeur = fonctionDeTransformation(cellule);
        if (nouvelleValeur !== cellule) {
          compteurModifications++;
        }
        return nouvelleValeur;
      }
      return cellule;
    })
  );

  if (compteurModifications > 0) {
    plageActive.setValues(nouvellesValeurs);
    classeur.toast(`Opération terminée sur ${compteurModifications} cellule(s).`, "Succès", 4);
  } else {
    classeur.toast("Aucune modification n'était nécessaire.", "Info", 4);
  }
}

Comment l’installer ?

Pas besoin d’être un développeur pour utiliser ce code. Suivez ces 3 étapes :

Étape 1 : Ouvrir l’éditeur de script

Dans votre Google Sheet, allez dans le menu supérieur :

Extensions > Apps Script.

Étape 2 : Coller le code

Un nouvel onglet s’ouvre. Effacez tout le code existant dans le fichier Code.gs et collez le script fourni ci-dessus.

Étape 3 : Sauvegarder et lancer

  1. Cliquez sur l’icône de disquette 💾 pour sauvegarder.
  2. Revenez sur votre Google Sheet et rafraîchissez la page (F5).
  3. Après quelques secondes, un nouveau menu « Outils Texte » apparaîtra à droite du menu « Aide ».

Note sur la première utilisation : Lors de la première exécution, Google vous demandera une autorisation. C’est normal, car vous installez un script personnalisé. Validez les étapes et cliquez sur « Paramètres avancés » > « Accéder au script (non sécurisé) » pour continuer.

Zoom technique : Pourquoi ce script est-il performant ?

Pour les curieux qui veulent comprendre la logique derrière le code, voici deux points clés :

1. Le Batch Processing (Traitement par lots)

Au lieu de modifier les cellules une par une (ce qui est très lent car cela nécessite un appel au serveur Google pour chaque cellule), ce script utilise getValues() pour récupérer toutes les données d’un coup dans la mémoire du script. Il effectue les modifications ultra-rapidement en JavaScript, puis réinjecte le tout en une seule fois avec setValues(). C’est ce qui permet de traiter 1000 lignes en une fraction de seconde.

2. Une Regex sur-mesure pour le français

La fonction « Nom Propre » native de Sheets (PROPER) est souvent limitée. Ici, nous utilisons une expression régulière (Regex) :

/(?:^|[\s\-\’\ »])([\w\u00C0-\u00FF])/g

Cela permet de dire au script : « Mets en majuscule toute lettre qui suit un espace, un tiret ou une apostrophe, y compris les caractères accentués (é, è, à…) ».

Conclusion

L’automatisation dans Google Sheets n’est pas réservée aux experts. Avec ce petit bout de code, vous sécurisez la qualité de vos données et vous gagnez un temps précieux. N’hésitez pas à adapter le code pour ajouter vos propres règles de nettoyage !

Vous avez testé ? Dites-moi en commentaire combien de temps vous avez gagné !

Commentaires

Laisser un commentaire