IRONSOFTWAREHOME

Limitation d'Excel concernant la validation des données pour les chaînes de caractères

Curtis Chau
Curtis Chau
Updated: 29 juin 2026

Microsoft Excel présente une limitation connue concernant la longueur des listes de chaînes de caractères : la longueur totale de la liste, y compris les séparateurs comme les virgules, ne peut pas dépasser 255 caractères.

Ce problème survient lorsque vous saisissez manuellement la liste de chaînes de caractères dans le champ Source, au lieu de sélectionner des données à partir d'une plage existante dans la feuille Excel, comme illustré ci-dessous.

Problème de limitation d'Excel

Solution pour la limitation d'Excel dans Excel

La solution standard pour contourner cette limitation consiste à créer une liste de valeurs dans une colonne ou une ligne de la feuille de calcul, plutôt que de saisir la liste de chaînes de caractères dans le champ Source. Comme indiqué ci-dessous.

Example Solution

Ensuite, utilisez une référence de formule, par exemple C1:C100, dans la validation des données et pointez vers cette plage.

Nouvelle source
Nouvelles données

Cette approche contourne la limitation, vous permettant de créer une liste déroulante sans être limité par la limite de 255 caractères.


Problème sur IronXL

IronXL utilise la méthode AddStringListRule pour appliquer une liste de chaînes pour la validation des données. Cependant, en raison de la même limitation de caractères dans Excel mentionnée ci-dessus, la méthode d'enregistrement fonctionnerait quand même. Il est toutefois essentiel de savoir que si la liste dépasse 255 caractères, cela pourrait entraîner un problème grave : le plantage d'Excel à l'ouverture du fichier. Voici un exemple illustrant le problème.

using IronXL;
using IronXL.DataValidations;

// Set your license key here if you have one
IronXL.License.LicenseKey = "YOUR-LICENSE-KEY";
var workBook = WorkBook.Create(ExcelFileFormat.XLSX);

var sheet = workBook.CreateWorkSheet("Validation Rule Example using");
// Apply rules from row 2 down to row 500
var validationRangeStart = "2";
var validationRangeFinish = "500";

// --- 1. Define All Column Headers ---
sheet["A1"].Value = "String List Test";
sheet["B1"].Value = "Formula List Test";
sheet["A1:B1"].Style.Font.Bold = true;

// 256
string[] arrayString = new string[]
{
    "SKU-A01-R", "SKU-A02-R", "SKU-A03-R", "SKU-A04-R", "SKU-A05-R",
    "SKU-B01-G", "SKU-B02-G", "SKU-B03-G", "SKU-B04-G", "SKU-B05-G",
    "SKU-C01-B", "SKU-C02-B", "SKU-C03-B", "SKU-C04-B", "SKU-C05-B",
    "SKU-D01-Y", "SKU-D02-Y", "SKU-D03-Y", "SKU-D04-Y", "SKU-D05-Y",
    "END-001", "END-002", "END-003", "END-004", "END-005", "END-010", "END-001"
}; // total char with seperator 257 (230 char + 26 sperator [,] )

// no problem when write to a file
var skuValidation = sheet.DataValidations.AddStringListRule(sheet[$"A{validationRangeStart}:A{validationRangeFinish}"].RangeAddress, arrayString);

// set error box
skuValidation.ShowErrorBox = true;
skuValidation.ErrorBoxTitle = "Invalid SKU";
skuValidation.ErrorBoxText = "Please select a SKU from the list.";
skuValidation.ErrorAlert = ErrorAlert.Stop;
            
//attempt to save the file
var fileName = "CategoryProductCatalog.xlsx";
workBook.SaveAs(fileName);

Dans le code, nous essayons de passer une liste de chaînes nommée arrayString comme source d'une liste de chaînes pour créer une liste déroulante. Nous essayons ensuite de l'enregistrer en tant que CategoryProductCatalog.xlsx. Cependant, en raison de ces limitations, lors de l'ouverture du fichier avec Microsoft Excel, un message s'affiche indiquant que le fichier est corrompu et ne peut pas être ouvert.

texte alternatif


Solution pour IronXL

Pour répondre correctement à cette limitation d'Excel, IronXL propose la méthode AddFormulaListRule, qui est disponible à partir de la propriété DataValidations. Cette méthode est similaire à la solution utilisée pour travailler avec Excel.

Nous commençons par inscrire la liste des valeurs dans une plage de cellules de la feuille de calcul. Utilisez ensuite AddFormulaListRule pour référencer cette plage comme source de la liste déroulante. Cela permet d'éviter la limitation de la même manière que nous l'avons fait pour la solution Excel, mais dans ce cas, c'est programmatique.

L'utilisation de AddFormulaListRule contourne correctement la limitation d'Excel tout en veillant à ce que le fichier reste lisible et stable lorsqu'il est ouvert dans Excel, même avec de longues listes de valeurs.


Exemple de Code

Vous trouverez ci-dessous un exemple de code supplémentaire qui contourne ce problème. En utilisant le même classeur, nous créons d'abord une feuille de calcul, puis nous définissons tous les en-têtes de colonnes. Nous saisissons la liste de chaînes de caractères de l'exemple précédent, ainsi que de nouvelles données pour illustrer la fonctionnalité. Nous appelons alors AddFormulaListRule avec la plage de validation ci-dessus. Nous l'enregistrons enfin comme validationRuleExample.xlsx. Pour nous assurer que notre classeur n'est pas corrompu et qu'il peut être utilisé normalement, nous l'ouvrons dans Excel. Cette étape est cruciale car elle démontre la réussite de l'implémentation de notre code.

using IronXL;
using IronXL.DataValidations;
using System;

// Set your license key here if you have one
IronXL.License.LicenseKey = "YOUR-LICENSE-KEY";
var workBook = WorkBook.Create(ExcelFileFormat.XLSX);

var sheet = workBook.CreateWorkSheet("Validation Rule Example using");
// Apply rules from row 2 down to row 500
var validationRangeStart = "2";
var validationRangeFinish = "500";

// --- 1. Define All Column Headers ---
sheet["A1"].Value = "String List Test";
sheet["B1"].Value = "Formula List Test";
sheet["A1:B1"].Style.Font.Bold = true;

string[] arrayString2 = new string[] 
{ 
    "SKU-A01-R", "SKU-A02-R", "SKU-A03-R", "SKU-A04-R", "SKU-A05-R",
    "SKU-B01-G", "SKU-B02-G", "SKU-B03-G", "SKU-B04-G", "SKU-B05-G",
    "SKU-C01-B", "SKU-C02-B", "SKU-C03-B", "SKU-C04-B", "SKU-C05-B",
    "SKU-D01-Y", "SKU-D02-Y", "SKU-D03-Y", "SKU-D04-Y", "SKU-D05-Y",
    "END-001", "END-002", "END-003", "END-004", "END-005", "END-010", "END-001",
    "IRON01","IRON02","IRON03","IRON04","IRON05","IRON06","IRON07","IRON08","IRON09","IRON10",
    "IRON11","IRON12","IRON13","IRON14","IRON15","IRON16","IRON17","IRON18","IRON19","IRON20",
    "IRON21","IRON22","IRON23","IRON24","IRON25","IRON26","IRON27","IRON28","IRON29","IRON30",
    "IRON31","IRON32","IRON33","IRON34","IRON35","IRON36","IRON37","IRON38","IRON39","IRON40",
    "IRON41","IRON42","IRON43","IRON44","IRON45","IRON46","IRON47","IRON48","IRON49","IRON50",
    "IRON51","IRON52","IRON53","IRON54","IRON55","IRON56","IRON57","IRON58","IRON59","IRON60",
    "IRON61","IRON62","IRON63","IRON64","IRON65","IRON66","IRON67","IRON68","IRON69","IRON70",
    "IRON71","IRON72","IRON73","IRON74","IRON75","IRON76","IRON77","IRON78","IRON79","IRON80",
    "IRON81","IRON82","IRON83","IRON84","IRON85","IRON86","IRON87","IRON88","IRON89","IRON90",
    "IRON91","IRON92","IRON93","IRON94","IRON95","IRON96","IRON97","IRON98","IRON99","IRON100"
}; // total char with seperator 257 (230 char + 26 sperator [,] )

//Write the contents of your array to column A of the data sheet.
for (int i = 0; i < arrayString2.Length; i++)
{
    // Note: IronXL row and cell indices are 1-based.
    sheet[$"A{i + 1}"].Value = arrayString2[i];
}

// Create the formula string that points to our data range.
// This will look like: 'ValidationData'!$A$1:$A$100

string formula = $"'{sheet.Name}'!$A$1:$A${arrayString2.Length}";
Console.WriteLine($"Generated formula for validation: {formula}");

var sku2Validation = sheet.DataValidations.AddFormulaListRule(sheet[$"B{validationRangeStart}:B{validationRangeFinish}"], formula);

sku2Validation.ShowErrorBox = true;
sku2Validation.ErrorBoxTitle = "Invalid SKU2";
sku2Validation.ErrorBoxText = "Please select a SKU from the list.";
sku2Validation.ErrorAlert = ErrorAlert.Stop;

// --- Final Touches ---
sheet.AutoSizeColumn(0, true);
sheet.AutoSizeColumn(1, true);

var fileName = "validationRuleExample.xlsx";
workBook.SaveAs(fileName);

Console.WriteLine($"Successfully created '{fileName}' with 2 validation rules example.");

Fichiers Excel de sortie

Comme vous pouvez le voir, le fichier Excel est stable et ne provoque aucun plantage après l'utilisation de AddFormulaListRule. Pour tester vous-même, veuillez consulter ce lien pour une démonstration de l'application utilisée dans cet article, ainsi que le fichier Excel. Cette démonstration vous permettra de voir le processus en action et de comprendre comment l'appliquer dans votre travail.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Prêt à commencer?

Nuget Downloads 2,237,574Version :2026.9vient de sortir

Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronXL.Excel
nuget.org/packages/IronXL.Excel/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez "IronXL"
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

  1. Téléchargez et dézippez IronXL dans un emplacement tel que ~/Libs dans votre répertoire de solution
  2. Dans l'Explorateur de solutions de Visual Studio, cliquez avec le bouton droit sur Références. Sélectionnez Parcourir, "IronXL.dll"

Licences à partir de $999

Vous avez une question ? Contactez notre équipe de développement.

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise