Bonjour le fil, bonjour le forum,
Grillé par XorSankukai ! Que je salue au passage.
Une autre proposition, mais si tu as plus de 2 clés il faudra passer, comme lui, par une UserForm...
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim R As Integer 'définit la variable R (Réponse)
Dim C As String 'déclare la variable C (Clé)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim M As Integer 'déclare la variable M (Maximum)
Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("B2").CurrentRegion 'définit le tableau des valeurs TV
R = MsgBox("CR = Oui / IP = Non", vbYesNo, "Quelle Clé ?") 'définit la réponse R
C = IIf(R = vbYes, "CR", "IP") 'définit la clé C
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs (en partant de la seconde)
If InStr(1, TV(I, 1), C, vbTextCompare) <> 0 Then 'si la clé est contenue dans la donnée ligne I colonne 1 de TV
K = K + 1 'incrémente K
ReDim Preserve TL(1 To K) 'redimensionne les tableau des lignes TL (K lignes)
TL(K) = CInt(Split(TV(I, 1), C)(1)) 'récupère le texte après la clé et le convertit en entier
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
M = Application.WorksheetFunction.Max(Application.Transpose(TL)) + 1 'définit le maximum M
'renvoie dans la première cellule vide de la colonne B de l'onglet O : "22", suivi de la clé C, suivi de M
O.Cells(Application.Rows.Count, "B").End(xlUp).Offset(1, 0).Value = "22" & C & M
End Sub