Débogage préremplissage d'un UserForm (VBA)

sdevers

XLDnaute Nouveau
Bonjour le forum,

Je viens avec une question très spécifique. J'ai créer le fichier en pièce jointe. Dedans il y a un UserForm qui s'ouvre automatiquement au démarrage d'Excel et j'ai créé un bouton pour le lancer si besoin quand on est déjà dans le fichier.
Cet UserForm charge les données déjà existantes (Load Form_data dans le fichier).

Pour un seul collaborateur qui a utilisé le fichier, je reçois un message d'erreur suivant (lors du lancement du UserForm):
Template v201600201 - Message 2147352571.jpg
Dans tous les autres cas, ça ne le fait pas. J'en déduis que le problème provient de son paramétrage. Est-ce que je me trompe?

Lorsque je lance le débogage sur son PC, la commande m'arrête sur toutes les lignes de Form_data.CboLanguage.Value à Form_data.txtTaxYear.Value. A partir de la ligne suivante, ça ne le fait plus.
Template v201600201 - Debug.jpg

Une idée de comment résoudre ce problème? J'imagine que d'autres utilisateurs pourraient être concernés (on est en phase de déploiement et tout le monde n'a pas encore essayé le fichier).

Merci d'avance,
 

Pièces jointes

  • Bug template.xlsm
    136.2 KB · Affichages: 50

Lone-wolf

XLDnaute Barbatruc
Re : Débogage préremplissage d'un UserForm (VBA)

Bonsoir sdevers,

1ère remarque: pour afficher les données pas besoin de les écrires dans Thisworkbook et dans le module, incrit-les directement dans Userform_Initialize, et met seulement userform1.show.

2ème remarque: évite tous ces select's.
Il te suffit d'écrire comme ceci: Sheets(1).Range("a1").copy Sheets(2).Range("b2")

Pour les formules, un exemple parmi d'autres:

Dim Formule As String

With Worksheets("Feuil1")
Formule = .Range("A1").Formula
.Range("A2").Formula = Formule
End With


3ème remarque: Il y a Sheets(8) et (6) dans ton code, mais elles n'y sont pas (tu les à supprimées???).


A+ :cool:
 
Dernière édition:

sdevers

XLDnaute Nouveau
Re : Débogage préremplissage d'un UserForm (VBA)

Bonjour,

Tout d'abord merci pour ce retour.

Voici mes commentaires:
1ère remarque: OK, bien noté. Ca pourrait en effet alléger mon code. Je l'avais fait comme ça d'une part car je l'ai développé en deux temps, et d'autre part dans mon cmdOK_Click() il y a un IF qui change l'initialisation du formulaire. Si la langue est cochée, il initialise complètement, si pas cochée, il choisit par défaut le français.

2ème remarque: OK compris. J'ai utilisé l'enregistreur de macro et j'avais ensuite utilisé le même schéma partout. Je modifierai cette partie dans ma prochaine version du fichier.

3ème remarque: oui j'ai dû alléger mon fichier pour le déposer sur le forum. J'ai donc supprimer une dizaine de Sheets. Sans lien avec mon problème a priori.

remarque subsidiaire: je n'ai pas bien compris pour les formules. J'ai assez peu de formules qui sont recopiées in extenso à plusieurs endroits. En général quand j'utilise un .Formula, je dois écrire la formule manuellement derrière car elle est spécifique. Dans votre proposition, si j'ai bien compris, ça copie la même formule sur plusieurs cellules. Exact? Dans ce cas, sauf une ou deux exceptions peut-être, ce ne m'est pas applicable ;)

Enfin, je ne pense pas que ces améliorations aient un impact sur mon UserForm, je me trompe? Si c'est bien ça, quelqu'un aurait une idée pour le débogage?

Je vais utiliser le PC de mon collègue aujourd'hui afin de vérifier ses paramètres personnels. Vu que le même fichier ouvert chez lui et chez moi ne donne pas le même résultat, je suppose qu'il a des spécificités propres à sa version. En attendant si vous savez m'aiguillier, je suis preneur.

Encore merci,
 

Discussions similaires

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa