Tu ne dis pas ce que tu as essayé !?
Essaie de raisonner logiquement :
- la ligne sur laquelle cela bloque est l'ouverture (Show) du Userform
or il n'y a rien dans cette ligne qui soit de nature à bloquer, sauf si le Userform n'existe pas ou plus (mais je crois que là, sauf erreur, ce ne serait pas "incompatibilité de type" mais peut-être (?) "indice ne correspondant pas à la sélection")
un indice (au cas particulier de la manip. faite juste avant) est que le Userform s'ouvrait tant que la proc. Initialize ne s'exécutait pas, et maintenant qu'elle s'exécute (avant ouverture) l'ouverture n'aboutit pas.
- il y a donc lieu de regarder cette procédure, et à défaut d'une autre indice, de parcourir les lignes pour tenter de déceler une erreur qui serait passée inaperçue à l'écriture.
- Je sais que l'on peut peut passer facilement dessus plusieurs fois sans que cela heurte, mais à la première ligne après les déclarations de variables, on trouve :
Set Ws = Sheets(Feuil1)
On affecte à une variable objet Worksheet un objet feuille de calcul, très banal !
Mais on utilise une propriété pour renvoyer une seule feuille de la collection Worksheets du classeur qui se définit par un numéro d'index (Integer) ou un nom (String). "Feuil1" est sans doute le nom de la feuille, mais écrit sans les guillemets ce n'est plus une valeur texte (String). Utilisé sans guillemet cela renvoie à un objet (de la même façon que lorsque tu écris Userform1 sans guillemet, tu fais référence à l'objet).
Si on avait écrit Set Ws = Feuil1, cela aurait pu passer, à condition que Feuil1 soit le nom de code (CodeName) d'une feuille existante dans le classeur, et qui utilisé ainsi aurait renvoyé la feuille (peut être une autre que celle voulue d'ailleurs : Excel affecte par défaut au départ le même nom et nom de code, mais cette correspondance se perd au fil des ajouts et suppressions de feuilles).
Voilà, tu as la solution.
Bonne fin de soirée
Ferand