Mary a plusieurs feuilles de calcul avec entre 10 000 et 80 000 lignes chacune.

Parfois, une colonne est plus large qu’elle ne devrait l’être, probablement en raison du contenu qui la rend large. Ainsi, Mary se demande s’il existe un moyen facile de trouver la cellule la plus large sans faire défiler 10 000 à 80 000 lignes pour la trouver.

Il existe plusieurs façons de procéder, mais aux fins de cette astuce, je n’en décrirai que trois. Le premier est un moyen simple si vous pouvez utiliser une colonne d’aide dans votre feuille de calcul. Disons que la colonne que vous voulez vérifier est A. Vous pouvez mettre cette formule dans la première cellule d’une colonne inutilisée:

=LEN(TRIM(A1))

Copiez la formule autant de cellules que nécessaire, puis utilisez les capacités de filtrage d’Excel pour afficher les valeurs les plus élevées de cette colonne. Cela vous donnera les cellules que vous désirez.

La deuxième méthode basée sur une formule consiste à utiliser une formule comme celle-ci:

=MIN(IF(LEN($A:$A)=MAX(LEN($A:$A)),ROW($A:$A),1048577))

=CELL("address",INDEX($A:$A,MATCH(MAX(LEN($A:$A)),LEN($A:$A),0)))

Les deux doivent être saisis sous forme de formules matricielles en appuyant sur Ctrl + Maj + Entrée. La première formule renverra le numéro de ligne de la cellule de la colonne A qui a la plus longue longueur. La deuxième formule renvoie l’adresse réelle de la cellule avec la longueur la plus longue.

La troisième approche est bonne si vous avez besoin de déterminer les grandes longueurs assez régulièrement. Il s’agit d’utiliser une macro pour obtenir les informations nécessaires:

Sub FindWidestCells()

Dim Ad(10) As String     Dim Le(10) As Integer     Dim J As Integer     Dim K As Integer     Dim L As Integer     Dim lCols As Long     Dim lRows As Long     Dim Rng As Range     Dim c As Range     Dim sTemp As String

lCols = ActiveCell.Column     lRows = Cells(Rows.Count, lCols).End(xlUp).Row     Set Rng = Range(Cells(1, lCols), Cells(lRows, lCols))



For Each c In Rng         ' Find shortest length in the group         K = 1         For J = 2 To 10             If Le(J) < Le(K) Then K = J         Next J         If Len(c.Text) > Le(K) Then             Le(K) = Len(c.Text)

Ad(K) = c.Address         End If     Next c

' Sort the cells     For J = 1 To 9         L = J         For K = J + 1 To 10             If Le(K) > Le(L) Then L = K         Next K         If L <> J Then             sTemp = Ad(L)

Ad(L) = Ad(J)

Ad(J) = sTemp             K = Le(L)

Le(L) = Le(J)

Le(J) = K         End If     Next J

sTemp = "Longest cells:" & vbCr     For J = 1 To 10         If Le(J) > 0 Then             sTemp = sTemp & "    " & Ad(J) & " (" & Le(J) & ")" & vbCr         End If     Next J

MsgBox sTemp End Sub

Tout ce que vous avez à faire est de sélectionner une cellule dans la colonne que vous souhaitez vérifier, puis d’exécuter la macro. Ce qui est renvoyé est une liste des 10 cellules les plus larges de la colonne, par ordre décroissant en fonction de la longueur.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (13747) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.