Recherche du contenu de cellule le plus large (Microsoft Excel)
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.