Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 trouver le plus grand numéro

Blafi

XLDnaute Occasionnel
Bonjour le forum,
J'ai un petit problème que je n'arrive pas à résoudre : j'ai une liste de numéro C1,C2,C3 etc... qui commence en A3, dans la colonne A. Ces numéros ne sont pas forcément dans l'ordre croissant car il s'agit de numéros d'adhérents dont la liste en colonne B est classée par ordre alphabétique.
Je cherche à trouver le plus grand (C12 par ex) et l'inscrire dans la cellule A1.
J'ai essayé quelque chose comme =max(droite(A:A;1) pour avoir le chiffre du code le plus grand et ensuite faire une concaténation pour obtenir par exemple C12. Mais ma formule ne marche pas.
Si les codes étaient classés par ordre croissant, je saurais trouver le plus grand avec =recherche("zz",A:A) mais cela m'obligerait à mettre la panique dans ma base triée par ordre alpahabétqiue
Quelqu'un aurait il la solution ?
Merci d'avance de votre aide.
 

laurent950

XLDnaute Barbatruc
Bonsoir @TooFatBoy , @Blafi

Ce que je comprends :

liste de numéros d'adhérents qui commencent dans la cellule A3, colonne A.
Ces numéros suivent un format du type C1, C2, C3, etc., avec une lettre (C) suivie d'un numéro.
  • Colonne B figé car la colonne B (les noms des adhérents) est triée en ordre alphabétique.
le plus grand numéro parmi les codes de la colonne A (Exemple : C12) soit C ---> 12
  • Donc : inscrit dans la cellule A1---> C12
Solution 1 : formule matricielle (appuie sur Ctrl+Maj+Entrée après avoir tapé la formule)

=CONCATENER("C";MAX(SI(ESTNUM(STXT(A3:A100;2;100)*1);STXT(A3:A100;2;100)*1)))

Solution 2 : Code VBA (Ci-Desous)

VB:
Sub TrouverPlusGrandCode()
Dim LastRow As Long
Dim Cell As Range
Dim MaxValue As Long
Dim NumPart As Long

' Définir la dernière ligne dans la colonne A
LastRow = Cells(Rows.Count, "A").End(xlUp).Row

' Boucle sur chaque cellule de la colonne A à partir de A3
For Each Cell In Range("A3:A" & LastRow)
' Extraire la partie numérique après le premier caractère
NumPart = Val(Mid(Cell.Value, 2))
' Trouver le plus grand numéro
If NumPart > MaxValue Then
MaxValue = NumPart
End If
Next Cell

' Afficher le résultat dans la cellule A1
Range("A1").Value = "C" & MaxValue
End Sub
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

Essayez : ="C" & MAX(SIERREUR(1*(STXT(A3:A999;2;99));0))

A valider comme une formule matricielle (combinaison des trois touches Ctrl+Maj+Entrée au lieu de la seule touche entrée) sauf pour les dernières versions d'Excel pour lesquelles la validation matricielle est devenue superflue.
 
Dernière édition:

Blafi

XLDnaute Occasionnel
Merci à tous pour vos solutions géniales.
J'ai regardé en détail vos solutions tant formules que VBA et tout marche très bien.
J'ai pourtant une question sur la formule de Laurent950 : pourquoi STXT(A3:A100;2;100)*1 ? je ne comprends pas le ;100) et le *1.
Si ce n'est pas trop déranger, merci de m'éclairer sur ce(s) point.
Cordialement.
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Blafi, le forum,

En passant, une autre formule matricielle :
Code:
="C"&MAX(SIERREUR(--SUBSTITUE(A3:A100;"C";);))
et pour peaufiner si A3:A100 ne contient pas de numéros :
Code:
=SUBSTITUE("C"&MAX(SIERREUR(--SUBSTITUE(A3:A100;"C";);));"C0";)
A+
 

Discussions similaires

Réponses
12
Affichages
543
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…