J'ai une feuille de calcul nommée "Dates" (le nom d'objet est A_Dates) qui doit être calculée lors de son activation (il est à noter que cela se trouve dans mon classeur de macros personnelles). J'ai régulièrement des cahiers ouverts contenant trop de calculs pour que l'auto-calcul soit possible. J'ai donc auto-calc fixé à manuel, et le code suivant dans la feuille de calcul:
Private Sub Worksheet_Activate()
A_Dates.Calculate
End Sub
Cela a bien fonctionné au cours des 3 derniers mois, jour après jour. Hier, ça a cessé de fonctionner. Il jette maintenant cette erreur sur la ligne de déclaration:
Microsoft Visual Basic
Automation error
Unspecified error
[OK] [Help]
J'ai essayé de changer la façon dont je référence la feuille, en utilisant:
Sheets("Dates").Calculate
et
ActiveSheet.Calculate
en vain. J'ai également inclus la gestion des erreurs:
On Error Resume Next
ce qui ne l'empêche pas. Je suis même allé jusqu'à:
Private Sub Worksheet_Activate()
On Error GoTo headache
Sheets("Dates").Calculate
Exit Sub
headache:
Exit Sub
End Sub
et ça se voit toujours. Je suis totalement désemparé. Aidez-moi?
J'ai les références suivantes et les utilise toutes dans les différentes macros de ce classeur:
Visual Basic pour applications
J'ai trouvé le problème. Une de mes formes avait un contrôle qui apparemment avait cessé de fonctionner, et cela avait un effet d'entraînement.
Le contrôle en question était "Microsoft ProgressBar Control, version 6.0". Je ne sais pas POURQUOI cela a cessé de fonctionner, mais la suppression du formulaire (et, bien sûr, de toutes les références qui y sont faites) a résolu le problème.
Nous avons rencontré le même problème, mais en passant, plusieurs personnes utilisent toutes les mêmes macros avec succès, mais l'une d'elles a le problème "Erreur d'automatisation" "Erreur non spécifiée". Votre réponse m'a aidé à identifier que le problème pourrait être dû au "Microsoft ProgressBar Control". (Merci beaucoup)
Mais au lieu de supprimer le formulaire, j’ai désenregistré et enregistré le fichier MSCOMCTL.OCX sur le PC de l’utilisateur qui rencontrait des problèmes et il est de nouveau en affaires. J'aimerais connaître les raisons qui ont poussé l'enregistrement du contrôle à aller au sud - ce n'est pas la première fois que je détecte des problèmes avec ce contrôle.
Pour annuler l'enregistrement et enregistrer le contrôle:
Utilisez une "invite de commande élevée" (une invite de commande est exécutée en tant qu'administrateur), exécutez les commandes suivantes:
Regsvr32 /u c:\windows\SysWOW64\MSCOMCTL.OCX
Regsvr32 c:\windows\SysWOW64\MSCOMCTL.OCX
NOTE: le/u désenregistre l'ocx
Chaque fois que de telles erreurs se produisent, la première chose à faire est de nettoyer le code avec http://www.appspro.com/Utilities/CodeCleaner.htm . C'est un complément gratuit, mais vous pouvez aussi le faire manuellement. Copiez simplement votre code hors du module et dans un fichier texte (ou faites un clic droit et exportez). Supprimez ensuite le code dans le module, compilez, enregistrez et réinstallez le code.
Lorsque Excel compile "à la volée", il crée un p-code qui est ensuite compilé en code machine. Parfois, en particulier avec une édition lourde, le p-code est corrompu. Copier le code, le supprimer et le copier oblige Excel à régénérer le code.
J'ai résolu un comportement vraiment étrange avec cette méthode. Espérons que cela fonctionne pour vous aussi.
Je viens d'avoir ce problème, pas de chance avec la suppression des contrôles de chargement ou l'ajout/déplacement de références.
Fixé en ajoutant une DoEvents
pour Internet Explorer comme ceci:
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Notez aussi que cette valeur peut changer de "rebond" entre "complet" et "occupé", une boucle plus robuste ici peut donc être bénéfique.
Ma solution à ce problème consistait à ajouter les références suivantes dans VBA - Outils - Références.
Bibliothèque Microsoft ActiveX Data Objects 2.8 Bibliothèque Microsoft ActiveX Data Objects Records 2.8
J'ai vu cette erreur apparaître comme une boîte de dialogue juste avant qu'Excel cesse de fonctionner. Je déboguais un nouveau script qui ouvre plusieurs centaines de fichiers Excel et en extrait des informations. Pour résoudre ce problème, j'ai ajouté plusieurs commandes 'DoEvents' et mon problème avec cette erreur est parti immédiatement.
Essayez de compiler votre programme dans une version inférieure du système d'exploitation.