Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bugs VBA

11 réponses
Avatar
HD
Bonjour,

Depuis peu nous avons des soucis de bugs dans les macros. C'est comme si les
fichiers de macros après avoir été utilisé sur un poste auraient les
références de "perturbées".

Voilà le scénario d'un classeur qui pose problème: L' on va pour lancer une
macro (à priori quelqu'elle soit) et Excel se fige. Pour débloquer la
situation l'on est contraint de passer par le gestionnaire de tâches pour
planter l'application.

Si je vais dans le Visual Basic du classeur en question j'ai un plantage
lorsque je tente d'accéder à un module: "Erreur de chargement de la DLL". Je
regarde alors au niveau des références et il m'est affiché "MANQUANT:
Microsoft Windows Common Controls 6.0 (SP6)" associé au fichier
C:\Windows\system32\MSCOMCTL.OCX. Le fichier en question est bien présent
dans le répertoire du poste. Si j'ouvre non pas le classeur du client mais
la matrice (le classeur vierge référence) là cela ne plante pas (et la
référence Microsoft Windows Common Controls 6.0 (SP6) qui est cochée ne pose
aucun problème). Si je décoche la référence manquante et que je la recoche
je réaccède aux scripts VBA du UserForm que j'ai sélectionné. Par contre,
cela ne change rien pour les modules.

J'ai donc l'impression que le problème proviendrait d'un poste sur lequel le
classeur aurait été modifié et qui provoquerait ensuite le plantage lorsque
le classeur est utilisé sur les autres postes.

Avez vous entendu parler d'un tel problème ? Avez vous des solutions ?

Merci de votre aide,

Cordialement,

HD

10 réponses

1 2
Avatar
DanielCo
Bonjour,
Sur le poste qui pose problème, inscris le fichier OCX dans le registre
avec RegSvr32. Tu donnes peu d'indications sur l'environnement. Ce
fichier ne peut pas être utilisé avec Office 2010 64 bits; est-ce le
cas ?
Cordialement.
Daniel


Bonjour,

Depuis peu nous avons des soucis de bugs dans les macros. C'est comme si les
fichiers de macros après avoir été utilisé sur un poste auraient les
références de "perturbées".

Voilà le scénario d'un classeur qui pose problème: L' on va pour lancer une
macro (à priori quelqu'elle soit) et Excel se fige. Pour débloquer la
situation l'on est contraint de passer par le gestionnaire de tâches pour
planter l'application.

Si je vais dans le Visual Basic du classeur en question j'ai un plantage
lorsque je tente d'accéder à un module: "Erreur de chargement de la DLL". Je
regarde alors au niveau des références et il m'est affiché "MANQUANT:
Microsoft Windows Common Controls 6.0 (SP6)" associé au fichier
C:Windowssystem32MSCOMCTL.OCX. Le fichier en question est bien présent
dans le répertoire du poste. Si j'ouvre non pas le classeur du client mais la
matrice (le classeur vierge référence) là cela ne plante pas (et la référence
Microsoft Windows Common Controls 6.0 (SP6) qui est cochée ne pose aucun
problème). Si je décoche la référence manquante et que je la recoche je
réaccède aux scripts VBA du UserForm que j'ai sélectionné. Par contre, cela
ne change rien pour les modules.

J'ai donc l'impression que le problème proviendrait d'un poste sur lequel le
classeur aurait été modifié et qui provoquerait ensuite le plantage lorsque
le classeur est utilisé sur les autres postes.

Avez vous entendu parler d'un tel problème ? Avez vous des solutions ?

Merci de votre aide,

Cordialement,

HD
Avatar
MichD
Bonjour,

Copie ce qui suit dans le module ThisWorkbook du fichier
Enregistre et ferme le fichier.
Que se passe-t-il lorsque tu l'ouvres à nouveau?

'-----------------------------------------------------------
Private Sub Workbook_Open()
Dim Refs As Object, Ref As Object, GUID As String
Dim Majeure As Integer, Mineure As Integer
Dim NameRef As String, File As String

On Error Resume Next
Set Refs = ThisWorkbook.VBProject.References
For Each Ref In Refs
If Ref.Isbroken Then
File = Ref.fullpath
If Dir(File) <> "" Then
'Nom de la bibliothèque
NameRef = Ref.Name
'retrouver le Global Unique IDentifier du fichier
'qui correspond à la bibliothèque
GUID = Ref.GUID
'Retrouver la partie principale du numéro de la version (5)
Majeure = Ref.Major
'Retrouver le numéro de la révision (3)
Mineure = Ref.Minor
'Ajoute la référence
Refs.AddFromGuid GUID, Majeure, Mineure
Else
Message = Message & Ref.Description & vbCrLf
End If
End If
Next
If Message <> "" Then
MsgBox "Les références suivantes sont manquantes. " & vbCrLf & _
Message & vbCrLf & vbCrLf & "Ouvrez la fenêtre de code VBA / " & _
"barre de menus / outils / références / et décocher les " & _
"références marquées ""Manquantes"""
End If
End Sub
'-----------------------------------------------------------


MichD
--------------------------------------------------------------
"HD" a écrit dans le message de groupe de discussion : ka458v$1avu$

Bonjour,

Depuis peu nous avons des soucis de bugs dans les macros. C'est comme si les
fichiers de macros après avoir été utilisé sur un poste auraient les
références de "perturbées".

Voilà le scénario d'un classeur qui pose problème: L' on va pour lancer une
macro (à priori quelqu'elle soit) et Excel se fige. Pour débloquer la
situation l'on est contraint de passer par le gestionnaire de tâches pour
planter l'application.

Si je vais dans le Visual Basic du classeur en question j'ai un plantage
lorsque je tente d'accéder à un module: "Erreur de chargement de la DLL". Je
regarde alors au niveau des références et il m'est affiché "MANQUANT:
Microsoft Windows Common Controls 6.0 (SP6)" associé au fichier
C:Windowssystem32MSCOMCTL.OCX. Le fichier en question est bien présent
dans le répertoire du poste. Si j'ouvre non pas le classeur du client mais
la matrice (le classeur vierge référence) là cela ne plante pas (et la
référence Microsoft Windows Common Controls 6.0 (SP6) qui est cochée ne pose
aucun problème). Si je décoche la référence manquante et que je la recoche
je réaccède aux scripts VBA du UserForm que j'ai sélectionné. Par contre,
cela ne change rien pour les modules.

J'ai donc l'impression que le problème proviendrait d'un poste sur lequel le
classeur aurait été modifié et qui provoquerait ensuite le plantage lorsque
le classeur est utilisé sur les autres postes.

Avez vous entendu parler d'un tel problème ? Avez vous des solutions ?

Merci de votre aide,

Cordialement,

HD
Avatar
HD
Sur le poste qui pose problème, inscris le fichier OCX dans le registre
avec RegSvr32. Tu donnes peu d'indications sur l'environnement. Ce
fichier ne peut pas être utilisé avec Office 2010 64 bits; est-ce le cas ?



Le poste est un Windows XP SP3 Professionnel avec Excel 2007.

Je viens de lancer la commande << regsvr32 MSCOMCTL.OCX /u >> pour
désinscrire l'OCX puis << regsvr32 MSCOMCTL.OCX >> pour le réinscrire. J'ai
eu le message comme quoi la commande s'est effectuée avec succès... mais
cela ne change rien j'ai toujours le même problème...

@+
HD
Avatar
HD
J'ai copié la macro Workbook_Open() dans le module ThisWorkbook

Mais... lorsque je veux enregistrer le classeur avant de le fermer j'ai le
message Microsoft Office Excel :
"Des erreurs ont été détectées lors de l'enregistrement de
<< monfichier.xls >>. Il est possible que Microsoft Office Excel enregistre
le fichier en supprimant ou en réparant certaines fonctionnalités. Pour
effectuer les réparations dans un nouveau fichier, cliquez sur Ok. Pour
annuler l'enregistrement du fichier, cliquez sur Annuler."

Si j'annule, je sors du classeur sans l'enregistrer... si je clique sur
"Continuer" (contrairement au message il n'y a pas de bouton "Ok"), j'ai
alors le message Microsoft Office Excel :
"Excel a rencontré des erreurs pendant l'enregistrement, mais a toutefois pu
effectuer un enregistrement minimal du fichier sous C:Documents and
SettingsmonNomdeSessionApplication DataMicrosoftExcelXL2EBE.xls."
puis j'ai encore le message:
"Le fichier était trop endommagé pour pouvoir être réparé. Excel a essayé
d'enregistrer vos formules et valeurs, mais certaines données ont peut être
été perdues ou endommagées."
Lorsque j'ouvre le fichier << XL2EBE.xls >> il apparait mais il n'y a plus
que les données. L'on n'a plus de formats et plus de macros...

@+
HD




Bonjour,

Copie ce qui suit dans le module ThisWorkbook du fichier
Enregistre et ferme le fichier.
Que se passe-t-il lorsque tu l'ouvres à nouveau?

'-----------------------------------------------------------
Private Sub Workbook_Open()
Dim Refs As Object, Ref As Object, GUID As String
Dim Majeure As Integer, Mineure As Integer
Dim NameRef As String, File As String

On Error Resume Next
Set Refs = ThisWorkbook.VBProject.References
For Each Ref In Refs
If Ref.Isbroken Then
File = Ref.fullpath
If Dir(File) <> "" Then
'Nom de la bibliothèque
NameRef = Ref.Name
'retrouver le Global Unique IDentifier du fichier
'qui correspond à la bibliothèque
GUID = Ref.GUID
'Retrouver la partie principale du numéro de la version (5)
Majeure = Ref.Major
'Retrouver le numéro de la révision (3)
Mineure = Ref.Minor
'Ajoute la référence
Refs.AddFromGuid GUID, Majeure, Mineure
Else
Message = Message & Ref.Description & vbCrLf
End If
End If
Next
If Message <> "" Then
MsgBox "Les références suivantes sont manquantes. " & vbCrLf & _
Message & vbCrLf & vbCrLf & "Ouvrez la fenêtre de code VBA / " & _
"barre de menus / outils / références / et décocher les " & _
"références marquées ""Manquantes"""
End If
End Sub
'-----------------------------------------------------------


MichD
--------------------------------------------------------------
"HD" a écrit dans le message de groupe de discussion :
ka458v$1avu$

Bonjour,

Depuis peu nous avons des soucis de bugs dans les macros. C'est comme si
les
fichiers de macros après avoir été utilisé sur un poste auraient les
références de "perturbées".

Voilà le scénario d'un classeur qui pose problème: L' on va pour lancer
une
macro (à priori quelqu'elle soit) et Excel se fige. Pour débloquer la
situation l'on est contraint de passer par le gestionnaire de tâches pour
planter l'application.

Si je vais dans le Visual Basic du classeur en question j'ai un plantage
lorsque je tente d'accéder à un module: "Erreur de chargement de la DLL".
Je
regarde alors au niveau des références et il m'est affiché "MANQUANT:
Microsoft Windows Common Controls 6.0 (SP6)" associé au fichier
C:Windowssystem32MSCOMCTL.OCX. Le fichier en question est bien présent
dans le répertoire du poste. Si j'ouvre non pas le classeur du client mais
la matrice (le classeur vierge référence) là cela ne plante pas (et la
référence Microsoft Windows Common Controls 6.0 (SP6) qui est cochée ne
pose
aucun problème). Si je décoche la référence manquante et que je la recoche
je réaccède aux scripts VBA du UserForm que j'ai sélectionné. Par contre,
cela ne change rien pour les modules.

J'ai donc l'impression que le problème proviendrait d'un poste sur lequel
le
classeur aurait été modifié et qui provoquerait ensuite le plantage
lorsque
le classeur est utilisé sur les autres postes.

Avez vous entendu parler d'un tel problème ? Avez vous des solutions ?

Merci de votre aide,

Cordialement,

HD

Avatar
HD
A savoir que j'ai également était dans le %appdata%MicrosoftExcel pour
supprimer le répertoire XLSTART ainsi que le fichier Excel12.xlb... mais
cela n'a rien changé.

@+
HD
Avatar
MichD
Lorsqu'Excel est ouvert,

La commande : Fichier / ouvrir / dans la fenêtre te permettant de sélectionner ton fichier,
dans le bas de celle-ci, à côté du bouton "ouvrir", il y a une liste déroulante, et une
commande "Ouvrir et réparer". En conséquence, après avoir sélectionné ton fichier,
au lieu de cliquer sur "ouvrir", tu demandes une ouverture avec réparation de ton fichier.

Cela dépend de ta version de Windows et d'Excel. Dans Excel 2003, il y a aussi une
commande "réparer le fichier" sous le menu "Fenêtre" ou "aide".

Si le fichier est vérolé, je ne peux pas faire grand-chose pour ça!
J'espère que tu as une copie de sauvegarde...

MichD
--------------------------------------------------------------
Avatar
HD
Si le fichier est vérolé, je ne peux pas faire grand-chose pour ça!
J'espère que tu as une copie de sauvegarde...


Par contre, c'est ça qui est étonnant, c'est que si l'on ouvre le fichier en
question sur un autre poste l'on n'a aucun problème... J'ai le cas d'un
poste lui aussi en Windows XP avec Excel 2007 sur lequel le même fichier est
utilisable... les macros fonctionnent et l'on peut enregistrer le fichier.

Par contre, la matrice (le modèle) de ce fichier comportant la référence
"Microsoft Windows Common Controls 6.0 (SP6)" est ouvert et enregistré sur
le poste qui ne pose pas problème alors sur le poste qui pose problème
j'aurai un blocage et en référence je verrai apparaître "MANQUANT: Microsoft
Windows Common Controls 6.0 (SP6)". Si j'ouvre la matrice (le modèle) de ce
fichier comportant la référence "Microsoft Windows Common Controls 6.0
(SP6)" est ouvert et enregistré sur le poste posant problème... je n'aurais
aucun problème. C'est comme si, le fait que le fichier soit ouvert et
enregistrer sur le poste "qui ne pose pas problème" et que ce fichier soit
ensuite ouvert sur le poste "à problème" fera que le fichier se mettra à
provoquer des problèmes. Seul ce scénario provoque le problème.

@+
HD
Avatar
MichD
Le fichier responsable de la bibliothèque (référence) suivante :
"microsoft windows common controls 6.0 (sp6)" est : MSCOMCT2.OCX

Si tu as un Windows 64 bits, ce fichier se retrouve là : C:windowsSysWow64
Si tu as un Windows 32 bits, le fichier est là : C:WindowsSystem32

Si le fichier est absent, tu peux le télécharger du Web ou là :
http://cjoint.com/?BLnv4B9IBT2 Fichier zip contenant : mscomct2.ocx et MSCOMCTL.OCX
pour ton problème, seul ce fichier est important : mscomct2.ocx

Tu devras l'inscrire à la base de registre par cette ligne de commande
dans la fenêtre Exécuter
Pour 32 bits : regsvr32.exe c:Windowssystem32mscomct2.ocx

Pour 64 bits, tu ouvres l'invite de commande comme administrateur.
Tu fais un clic droit sur la commande "Invite de commande" situé là :
Bouton démarrer / Accessoires / "Invite de commande"
et tu choisis dans le menu contextuel la commande : Exécuter comme administrateur
et dans la fenêtre, tu passes la ligne de code suivante :
regsvr32.exe c:WindowsSysWow64mscomct2.ocx

Dans les 2 situations, tu devrais avoir un message comme quoi cela a réussi.

Dans un fichier, quand tu veux ajouter un de ces contrôles à un formulaire (userform)
tu débutes par ajouter le contrôle supplémentaire à la boîte à outils du formulaire.
Le HIC, c'est que si tu utilises ce classeur sur un nouvel ordinateur, ce contrôle
n'existe pas dans la boîte à outils et la bibliothèque associée n'est pas chargée. C'est
cela qui fait que tu as dans la liste des références, une qui est marquée "Manquante".

On ne peut pas par programmation ajouter ce contrôle à la boîte d'outils du formulaire,
mais on peut charger sa référence. Cela est suffisant pour que le fichier contenant le
contrôle exécute le code correctement.

Pour charger la référence, ajoute ceci dans le ThisWorkbook du classeur :
Attention, si sur l'ordinateur, le fichier n'est pas présent ou n'est pas
intégré à la base de registre, il sera impossible d'exécuter le code.

'--------------------------------------------
Private Sub Workbook_Open()
On Error Resume Next
With ThisWorkbook
.VBProject.References.AddFromGuid _
"{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}", 2, 0
End With
End Sub
'--------------------------------------------

Voilà!
Avatar
HD
Le fichier responsable de la bibliothèque (référence) suivante :
"microsoft windows common controls 6.0 (sp6)" est : MSCOMCT2.OCX

Si tu as un Windows 64 bits, ce fichier se retrouve là :
C:windowsSysWow64
Si tu as un Windows 32 bits, le fichier est là : C:WindowsSystem32



Au niveau des références, sur la ligne MANQUANT de "microsoft windows
common controls 6.0 (sp6)" il m'est indiqué que le fichier serait le <<
MSCOMCTL.OCX >> et non le << MSCOMCT2.OCX >>. Sur le poste en question j'ai
désinscrit le MSCOMCTL.OCX pour le réinscrire ensuite... mais sans succès.

Le bon fichier à inscrire serait dont le << MSCOMCT2.OCX >> ? L'indication
de l'autre fichier serait donc trompeuse ?

@+
HD
Avatar
MichD
Copie les 2 fichiers dans le répertoire et enregistre-les dans
la base de registre tous les 2.


MichD
---------------------------------------------------------------
1 2