Bonsoir,
En effet ...
Pour gérer ce type de problématique, quelques conseils :
Axe1
- identifier toutes procédures similaires
- remplacer toutes ces procédures par une seule, en passant éventuellement en paramètre certains éléments
Exemple sur le UserForm "ES"
- on remarque très rapidement la similitude entre "Private Sub CommandButton20_Click()" et "Private Sub CommandButton21_Click()" et les 30 (?) autres boutons (cf PJ "Analyse")
- seul varie le n° de ligne => à passer en paramètre
- remplacer ensuite les boutons "Valider1", "Valider2", ..., "ValiderN", par 1 seul bouton, qui appelle la procédure générique
Cf fichier en PJ, à tester, avec une première étape de ménage
A faire pour les autres UserForm (PFF, TP, autres ?)
Axe2
On retrouve le même code derrière toutes les TextBox_Change, à optimiser également, un peu plus complexe
Pour optimiser davantage, il faudrait créer des contrôles dynamiques (mais c'est beaucoup plus compliqué à comprendre, donc on abandonne pour l'instant)
Remarque complémentaire
L'instruction "With Sheets("ES")" fonctionne sans les points, tout simplement parce qu'elle ne sert à rien !
Exemple simple pour mieux comprendre :
With toto
MsgBox "OK"
End With
MsgBox "OK" est complètement indépendant de toto
With Sheets("ES")
TB1.Value = Range("B50").Value
De même, "TB1..." et "Range ..." sont totalement indépendant de Sheets("ES")
Dans ce cas, le "Range" correspond à la feuille active, avec un point devant, le range s'appliquerait à l'onglet "ES".
(cf fichier "ExempleWith" en PJ)
Je te laisse poursuivre un peu le ménage. Si besoin, on verra ensuite.
Bonne soirée
Bouben