web-dev-qa-db-fra.com

Erreur d'exécution VBA Excel '32809' - Essayer de la comprendre

Un collègue de travail a apporté des modifications à l'un de nos classeurs de macros. Désormais, sur mon PC uniquement, l'erreur d'exécution «32809» est redoutable lorsque je tente de l'exécuter. Cette dernière version fonctionne correctement sur son PC et sur le PC d'un autre collègue sur lequel nous l'avons testé. La version précédente fonctionne correctement sur tous nos PC, qui exécutent tous Excel 2010.

L'erreur est renvoyée lorsque la macro tente de sélectionner l'index 1 de la feuille de calcul, intitulé "Info". Je sais que sélectionner/activer n'est pas obligatoire, mais je ne travaille que sur ce cahier de travail pour le moment et j'essaie de comprendre pourquoi cette erreur me serait adressée à elle seule.

J'ai essayé:

  1. Redémarrage/cycle d'alimentation
  2. Enregistrement d'une copie du classeur
  3. Nettoyage des fichiers temporaires avec CCleaner
  4. Recherche en ligne
  5. Vérification des contrôles ActiveX (utilise des contrôles de formulaire)

Tous sans succès. J'ai ensuite eu un peu de gâchis dans la fenêtre immédiate et découvert que même un simple:

Debug.Print ThisWorkbook.Worksheets(1).Name

jetterait l'erreur d'exécution qui m'a amené à croire que cette feuille de travail avait cassé. J'ai ajouté quelques événements à la feuille de calcul, notamment _Activate et _Change, mais aucun ne se déclencherait même après confirmation:

Application.EnableEvents = True

J'ai ajouté un test simple comme suit:

Public Sub Test()

    Dim ws As Worksheet
    Dim sheetNum As Integer

    For Each ws In ThisWorkbook.Worksheets
        ws.Select           ' Selects all Sheets Without Error
        Debug.Print ws.Name ' Prints All Worksheet Names Fine
    Next ws

    Set ws = ThisWorkbook.Worksheets(1)
    ws.Select               ' Selects Sheet 1 Without Error

    ' Prints all but sheetNum = 1, Run-time Error 32809
    For sheetNum = 7 To 1 Step -1
        Debug.Print ThisWorkbook.Worksheets(sheetNum).Name
    Next sheetNum

    ' Run-time Error 32809
    ThisWorkbook.Worksheets(1).Select

End Sub

Quelqu'un a-t-il rencontré un problème similaire ou sait-il ce qui cause cette erreur uniquement sur certains ordinateurs?

14
Tony

Dans mon cas, la suite a aidé:

  1. Enregistrer le fichier sous .xlsx (sans macro) - toutes les macros seraient effacées lors de la sauvegarde;
  2. Ouvrez le fichier source avec les macros et copiez les modules dans le fichier .xlsx;
  3. Enregistrer le fichier sous .xlsm - une recompilation complète est effectuée.

Ensuite, tout a commencé à fonctionner normalement. J'avais un fichier avec plus de 200 feuilles et plus de 50 macros et poster des commentaires dans chaque module ne m'a pas aidé, mais cette solution a fonctionné.

6
Loky

Je lutte aussi avec ça depuis un moment. En fait, cela s’est produit en raison de mises à jour Microsoft Office via Windows Update commençant en décembre. Cela a causé pas mal de maux de tête, sans parler des heures de productivité perdues à cause de ce problème.

Une des mises à jour casse les formulaires et vous devez vider le cache Office comme indiqué par UHsoccer.

En outre, un autre fil de réponse ici: Soudainement, plusieurs erreurs de macro VBA, principalement 32809 Ont un lien vers le blog MS avec des détails.

Une autre des mises à jour provoque une autre erreur. Si vous créez ou modifiez l’un de ces formulaires (même si vous enregistrez les données du formulaire), les données internes du tableur seront mises à jour. erreur ci-dessus.

La solution (si vous travaillez avec d'autres personnes sur le même tableur)? Malheureusement, demandez à toutes les personnes avec lesquelles vous travaillez d'utiliser les mises à jour Office, puis effacez-les, ou revenez aux mises à jour antérieures à Dec '14 via une restauration du système (ou en les supprimant manuellement).

Je sais, pas beaucoup de solution, non? Je ne suis pas content non plus.

À titre d’historique, j’ai mis à jour ma machine, en me tenant au courant des mises à jour, mais l’une des sociétés avec lesquelles j’ai eu affaire ne l’a pas fait. Je tirais mes cheveux juste avant Noël pour essayer de résoudre le problème et, sans aucun point de restauration, j'ai finalement cédé et reformaté.

Un mois plus tard, le service informatique de la société a mis à jour ses postes de travail. Et, sans surprise, ils ont commencé à avoir des problèmes similaires à ceux-ci (sans parler du moment où j'ai reçu leurs feuilles de calcul, j'avais le même problème).

Maintenant, nous avons tous les mêmes mises à jour et tout va bien, comme il se peut.

4
XaivierX

Dans mon cas, l'erreur s'est produite lors de l'exécution d'une macro dans: Sheets ("own sheet one").

copier la feuille dans une autre avec un autre nom, c.-à-d. "oso", supprimez la feuille d'origine et renommez la nouvelle en "propre feuille"

Excel 2013

1
Alexander

J'ai eu ce problème en développant une application pour un client. En travaillant sur ma machine, le code/les formulaires, etc. fonctionnaient parfaitement, mais lorsqu’ils ont été chargés sur le système du client, cette erreur s’est produite à un moment donné dans mon application.

Ma solution de contournement pour cette erreur consistait à séparer le classeur des formulaires et du code en supprimant les modules et les formulaires VBA. Après cela, mon client a copié le classeur "nu" ainsi que les modules et les formulaires. L'importation des formulaires et du code dans le classeur prenant en charge les macros a permis à l'application de fonctionner à nouveau.

1
Gordon Inglis

Il semble que 32809 soit un message d'erreur général. Après avoir lutté pendant un certain temps, j'ai constaté que je n'avais pas cliqué sur le bouton de sécurité "Activer les macros" situé en dessous du ruban du classeur. Une fois que j'ai fait cela, tout a bien fonctionné.

1
kevinLooby

Cela a fonctionné pour moi en utilisant Excel 2010 et en obtenant la même erreur lors de l'ouverture d'un fichier macro-enabled .xlsm.

-après avoir fermé la boîte de dialogue d'erreur, créer "save as" fichier .txt délimité par des tabulations. cliquez OK pour 

... seule feuille active.

... fonctions non enregistrées.

-Alors, "save as" à nouveau, mais cette fois sélectionnez le format macro-enabled .xlsm. (dans un autre fichier ou écraser l'original n'a pas d'importance, mais sauvegarder comme un autre est plus sûr.)

-Fermer Excel.

-ouvrez le fichier .xlsm nouvellement enregistré. Dans mes cas, les messages d'erreur ont disparu et les macros fonctionnent.

1
James Lin

Ma solution (peut ne pas fonctionner pour vous)

Ouvrez l'application sur une machine qui signale l'erreur. Modifiez le code VB en quelque sorte. (J'ai ajouté une ligne de commentaire sans code dans l'une des macros)

Sheets (sheetName) .Sélectionnez le commentaire sans conséquence.

et enregistrez-le. Cela provoque une recompilation. Fermer et rouvrir - tout est corrigé.

J'espère que cela a du sens et aide

Subvention

0
Grant W

Erreur 32809: La copie de la feuille corrompue dans une nouvelle feuille et la modification du nom ou la suppression de la feuille corrompue fonctionnent pour moi. De plus, je suis allé au module FEUILLE de la feuille corrompue et ai retiré le codage du module feuille associé à la feuille corrompue. Cela a également guéri le problème pour moi. [Les modules de feuille peuvent avoir des routines déclenchées par des événements spécifiques à cette feuille de calcul.] Donc, dans mon cas, je pense que c'était un module de feuille corrompu, et non des données corrompues dans la feuille de calcul.

0
Q.Reply

Ok, ça pourrait être bizarre. Quoi qu’il en soit, un de mes collègues a eu cette erreur et nous avons essayé de modifier la compilation VBA. Cependant, il suffit de copier le fichier Excel sur le bureau. Et ça a fonctionné. Le fichier Excel était à l'origine dans un lecteur réseau. Cela a fonctionné, voici ma réponse à ce problème.

0

J'ai le même problème et a constaté qu'il s'agissait du problème des vulnérabilités de Microsoft.

Cela fonctionne pour moi lorsque j'installe ces correctifs de mise à jour .. Vous pouvez trouver ces correctifs sur www.Microsoft.com.

  1. Si votre version Office 2010 est SP1, vous devez d'abord télécharger et installer le pack Office SP2. Le nom du correctif de mise à jour est KB2687455.

  2. Installez le correctif de mise à jour KB2965240.

    Cette mise à jour de sécurité corrige des vulnérabilités dans Microsoft Office qui pourraient permettre l'exécution de code à distance si un attaquant persuadait un utilisateur d'ouvrir ou de prévisualiser un classeur Microsoft Excel spécialement conçu dans une version affectée d'Office. Un attaquant qui parviendrait à exploiter les vulnérabilités pourrait obtenir les mêmes droits que l'utilisateur actuel.

  3. Installez le correctif de mise à jour KB2553154.

    Une vulnérabilité de sécurité dans Microsoft Office 2010 Édition 32 bits pourrait permettre l'exécution de code arbitraire à l'ouverture d'un fichier modifié par malveillance. Cette mise à jour résout cette vulnérabilité.

0
user7608321

J'ai rencontré un comportement similaire (presque inexplicable)

Une référence à la suppression de fichiers .exd a été trouvée dans le répertoire C:\Utilisateurs\Nom d'utilisateur\AppData\Local\Temp Elle est située dans chacun des répertoires Excel8.0 et VBE. Le nom typique est MSForms.exd

Google "Excel exd" ou "KB 2553154" De mon point de vue, il s’agit d’une situation tout à fait inacceptable qui sévit depuis au moins un mois.

0
UHsoccer

J'ai exporté le module VBA - j'ai ré-enregistré le fichier, puis importé le module à nouveau

0
andy

J'ai supprimé tous les contrôles ActiveX de la feuille et cela fonctionne maintenant sans aucun message d'erreur C'est ma solution. 

0
Tomáš Paul

J'ai eu ce problème après avoir ajouté une liste déroulante avec du code VBA dans une feuille particulière . Tester le code, etc. n'était pas un problème du tout, jusqu'à ce que j'ouvre à nouveau la feuille . Stackoverflow et Microsoft proposent de nombreuses solutions de contournement, pas de vraie solution . J'utilise Excel 2010 (version néerlandaise) avec W10 (mis à jour depuis W7). Je pense que le problème est dans Excel 2010 . Dans mon cas, une erreur s'est produite sur la ligne pour déprotéger une feuille par VBA, dans un module qui n'a pas été modifié depuis longtemps.

Ok, c’est comme ça à mon avis: Il y avait un problème de sécurité dans FM20.DLL, pour lequel MS avait une mise à jour au premier trimestre 2015. Cette mise à jour installe un nouveau FM20.DLL, mais les packages de langue (FM20NLD. DLL et FM20ENU.DLL) n’ont pas été mis à jour. Peut-être que si vous n'utilisez pas de module linguistique, vous n'avez pas cette erreur. À mon avis, les parties linguistiques auraient également dû être mises à jour (mais aucune mise à jour n'est disponible)

Ok, la suppression des fichiers .exd fonctionne pendant un moment. Ceci est un travail temporaire autour de . MS n'a pas de vraie solution, mais la recompilation du code "résout" le problème.

C'est pourquoi certaines personnes ont dit: "Ajoutez un commentaire et le problème est résolu". Oui, l'ajout d'un commentaire oblige à une recompilation.

Je suis d’accord, c’est toujours une solution de contournement, mais pas temporaire… .....: 1. vérifie dans quelle partie du code VBA l'erreur existe 2. ajoutez un commentaire par lequel une recompilation est forcée . 3. sauvegarder le projet à nouveau

c'est tout

0
Nightwatch

J'ai le même problème. Le code VBA (ActiveX) fonctionnait correctement sur plus de 20 ordinateurs depuis quelques années. Le problème a soudainement surgi lorsqu'un nouveau collègue a rejoint le groupe. -time Error '32809' . J'ai vérifié tous les paramètres de sécurité d'ActiveX et de Macro, tous corrects. J'ai fait quelques expériences. J'ai constaté que le code créé dans mon ordinateur ne fonctionnerait pas sur le nouvel ordinateur portable de mon collègue . Cependant, si je crée du code dans le nouvel ordinateur portable de mon collègue, il fonctionne dans mon ordinateur. Une fois que j'ai enregistré ce code sur mon ordinateur, il ne pourra plus fonctionner sur l'ordinateur portable de mon collègue.

En vérifiant l'erreur dans les détails, le problème est que tout le code écrit dans mon ordinateur, Excel de mon collègue, ne les reconnaîtra pas. Debug >> Compile affichera une erreur de compilation, même si "DIM ..." n'est pas reconnu.Tous les contrôles ActiveX, comboboxs, boutons ... le nom de la propriété ont été affectés de manière aléatoire. Par exemple, j'ai un nom de bouton comme [AddNew], une fois ouvert dans le nouvel ordinateur portable de mon collègue, il est attribué à nouveau comme [commandbutton54]. Il ne peut même pas reconnaître le nom de la feuille de calcul existante.

Après avoir recherché toutes les solutions, j'ai trouvé que le fichier de suppression "* .exd" ne fonctionnait pas (même vider la corbeille ".). Ajouter des commentaires ne fonctionne pas ...

Au final, la solution est:

Étape 1: Faites une copie des feuilles avec les codes (les feuilles sans code ne sont pas nécessaires),

Étape 2: Supprimer les feuilles d'origine, 

Etape 3: Renommez la feuille copiée en son nom original. 

Ça commence à marcher. J'ai trouvé que tous les contrôles ActiveX récupéraient leur nom d'origine dans leur propriété. Cela a juste pris une minute. J'espère que cela aidera ceux qui sont confrontés au même problème . Remarque: Pas besoin d'enregistrer le fichier au format * .txt ou de renommer xlsx ...

0
Kevin

J'ai trouvé la solution. Téléchargez simplement la mise à jour Office suivante: https://support.Microsoft.com/en-us/kb/2920754

Choisissez entre 32 bits et 64 bits et installez.

Travaillé pour moi, espérons que cela fonctionne pour vous. 

Cordialement

0
Albert

J'ai fait ce qui suit et j'ai travaillé comme un charme:

  1. Installez Office 2013 (je n'ai pas essayé avec 2010 mais je pense que cela fonctionnerait aussi).
  2. Installez Office 2013 SP1.
  3. Exécutez les mises à jour Windows et installez toutes les mises à jour Office et Windows.
  4. Redémarrer l'ordinateur.
  5. Terminé.

Cela a fonctionné pour moi sur deux ordinateurs différents. J'espère que cela fonctionnera aussi dans le vôtre!

0
Ricardo