Salut Paulox, le fil...
Commençons par le commencement, je te conseille fortement d'activer l'option déclaration obligatoires des variables dans les options "Option Explicit" en tête du module, cela t'obligeras a structurer un peu ton code...
ici tu récupère un long et tu le transforme en String puisque c'est comme cela que Num est déclaré
Num = Sheets("Inc").Range("A1:B10").Find(Classement).Row
Et ici tu te sert d'un string à la place d'un long, VBA est souple et peux le faire mais ce n'est pas propre
Num = Classement & Sheets("Inc").Cells(Num, 2).Value + 1
Dans ta feuille Base tu as un tableau nommé Tableau1.
Tu peux remplacer ce bout de code
Set Base = ActiveWorkbook.Sheets("Base")
numLigne = 2
While Base.Cells(numLigne, 1).Value <> ""
numLigne = numLigne + 1
Wend
Par cette ligne qui est je pense plus parlante.
numLigne = Range("Tableau1").Rows.Count + 1
Pour ma part je déclarerais Num en Objet Range, et ta zone de recherche dans la feuille inc serais nommé "DatasClassement" cela te permettrait de rendre ton code plus lisible .
'On va utiliser un objet Range au lieux d'un entier
Set Num = Range("DatasClassement").Find(Classement)
Un fois l'object Range affecté tu peux travaillé avec l'Offset dans le style
With Num.Offset(, 1)
Select Case .Value
Case Is = 999
.Value = 1
Case Else
.Value = .Value + 1
End Select
End With
Concernant l'écriture de tes lignes dans le tableau là encore tu peux rendre ton code plus lisible. On rajoute une ligne au tableau
Set NewLigne = Worksheets("Base").ListObject("Tableau1").ListRows.Add
Et ensuite tu écris à la volé avec un Array
NewLigne.Range(, 1).Value = Array( _
Num1, Num2, Nom, _
Num.Value & Num.Offset(, 1).Value, _
Num, Date1)
Tu remarqueras que dans la foulée j'en profite pour écrire toutes les colonnes de ta nouvelle ligne donc les formules dans ta feuille ne servent plus.
et on fini en nettoyant un peu
If Not Num Is Nothing Then Num = Nothing
Donc pour résumer ton code tourne mais tu te rendra vite compte que quand ton application grossie il vaut mieux avoir un code lisible sinon dans trois semaines tu ne sauras plus qui est quoi.