justement, je souhaiterais qu'il n'y ait pas de formule dans les cellules pour éviter les suppressions maladroites
Dans ce cas appelle la fonction dans le code de worksheetchange() pour ne mettre que le résultat :
'code geographique
Range("Q" & Lg).Value = CGeo(Cells(Lg, "A"), Cells(Lg, "J"), Cells(Lg, "L"))
j'avais pensé (mais je ne sais pas faire), à un bouton macro avec une boucle sur la colonne A,
tant que cellule A n'est pas vide alors réaliser les actions suivantes :
en P: calculer age (voir sub)
en Q: calculer code geo (ta fonction)
en R concatener (a;c;f;g)
en S concatener (a;b)
Seulement ce n'est pas du tout le départ que tu as pris puisque tu as fait le choix de calculer au fur et à mesure des saisies, et non pas sur un collé de plusieurs cellules.
Je t'ai ressorti de worksheetchange() ces 4 calculs dans une proc car elle va servir 2 fois :
Sub calcul(Lg As Long)
'Age de l'adherent
Range("P" & Lg).Value = IIf(Cells(Lg, "I") = "", "", Cells(Lg, "C") - Year(Cells(Lg, "I")))
'code geographique
Range("Q" & Lg).Value = CGeo(Cells(Lg, "A"), Cells(Lg, "J"), Cells(Lg, "L"))
'Creation d un concatener pour doublon
Range("R" & Lg).Value = Cells(Lg, "A") & Cells(Lg, "C") & Cells(Lg, "F") & Cells(Lg, "G")
'Creation d un n° pour indexequiv
Range("S" & Lg).Value = Cells(Lg, "A") & Cells(Lg, "B")
End Sub
Et j'ai ajouté une proc Recalcul() qui te réévalue toutes les lignes après un collé multiple (bouton recalcul)
Regarde si ça va.
eric