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

MS VB for Applications Extensibility

2 réponses
Avatar
ManBas
Bonjour,
Ce fil avait été commencé début janvier. Michel Pierron, Clément Marcotte et
Corona avaient apporté leurs savoir.
Le problème: le classeur développé sous XL2000 plante sur les postes équipés
de XL97.

Mon fichier a fonctionné avec la moitié de la solution pendant quelques
temps, puis les débogages ont repris, mais pas sur tous les postes équipés
en XL97 (!), ce qui a encore retardé le diagnostic (d'ailleurs je n'y
comprends vraiment rien).
Comme ces postes (anciens) sont pauvrement dotés en mémoire, ils moulinent
longtemps avant de rendre leur verdict, ce qui accentue encore la difficulté
à bosser et donc à faire de nouveaux essais.
Voici ma macro:
Ce qui plante c'est Dim VBCodeModule As CodeModule
(même le débogage est planté, j'en sort par le gestionnaire des taches!)
donc pour la suite je ne sais pas.

Declare Function SearchTreeForFile Lib _
"imagehlp" (ByVal RootPath As String, _
ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long
Const MAX_PATH = 260
Public Const NomBar As String = "Imprimer"

Sub CreateBarreImprimer()
Dim tempStr As String, Ret As Long
Dim VBCodeModule As CodeModule
Dim CodeModule As Object
Dim StartLine As Long
Dim tmp As String
Dim LineProc As Long
Dim Wbk As Workbook
Dim LeModule As String
Dim ArrProcs()
Dim cBar As CommandBar
Dim cBtn As CommandBarButton
Dim Chemin As String
'create a buffer string
tempStr = String(MAX_PATH, 0)
'soluce clément
On Error GoTo Dejafait
#If VBA6 Then
'Excel 2000 et +
'Version 5.3
ActiveWorkbook.VBProject.References.AddFromGuid
"{0002E157-0000-0000-C000-000000000046}", 5, 3
#Else
'Excel 97
'Version 5.0
ActiveWorkbook.VBProject.References.AddFromGuid
"{0002E157-0000-0000-C000-000000000046}", 5, 0
#End If
Dejafait:
'soluce philippe
Select Case Val(Application.Version)
Case 9 ' Office 2000
Chemin = "C:\Program Files\Fichiers communs\Microsoft
Shared\VBA\VBA6"
Case 8 ' Office 97
Chemin = "C:\Program Files\Fichiers communs\Microsoft
Shared\VBA"
End Select
' Ici ton code exploitant la variable 'chemin' Que dois-je écrire?

C'est vraiment trop dur pour moi ce coup-là!
Merci de votre aide.

2 réponses

Avatar
MichDenis
Bonjour Manbas,

Tu as essayé de faire rouler ta procédure avec F8 ... tu places le curseur entre la ligne déclaratoire de ta procédure
et le End Sub et tu enfonces F8.. et à chaque fois que tu enfonces F8 , excel exécute une ligne de code. Peux-tu nous
sur quelle ligne de code, il bloque ? Si un message d'erreur est généré, Quel est-il ?

Il serait préférable aussi d'écrire ce que ta procédure est supposé faire ? Quel était ta question originale ?


Salutations!



"ManBas" a écrit dans le message de news:
Bonjour,
Ce fil avait été commencé début janvier. Michel Pierron, Clément Marcotte et
Corona avaient apporté leurs savoir.
Le problème: le classeur développé sous XL2000 plante sur les postes équipés
de XL97.

Mon fichier a fonctionné avec la moitié de la solution pendant quelques
temps, puis les débogages ont repris, mais pas sur tous les postes équipés
en XL97 (!), ce qui a encore retardé le diagnostic (d'ailleurs je n'y
comprends vraiment rien).
Comme ces postes (anciens) sont pauvrement dotés en mémoire, ils moulinent
longtemps avant de rendre leur verdict, ce qui accentue encore la difficulté
à bosser et donc à faire de nouveaux essais.
Voici ma macro:
Ce qui plante c'est Dim VBCodeModule As CodeModule
(même le débogage est planté, j'en sort par le gestionnaire des taches!)
donc pour la suite je ne sais pas.

Declare Function SearchTreeForFile Lib _
"imagehlp" (ByVal RootPath As String, _
ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long
Const MAX_PATH = 260
Public Const NomBar As String = "Imprimer"

Sub CreateBarreImprimer()
Dim tempStr As String, Ret As Long
Dim VBCodeModule As CodeModule
Dim CodeModule As Object
Dim StartLine As Long
Dim tmp As String
Dim LineProc As Long
Dim Wbk As Workbook
Dim LeModule As String
Dim ArrProcs()
Dim cBar As CommandBar
Dim cBtn As CommandBarButton
Dim Chemin As String
'create a buffer string
tempStr = String(MAX_PATH, 0)
'soluce clément
On Error GoTo Dejafait
#If VBA6 Then
'Excel 2000 et +
'Version 5.3
ActiveWorkbook.VBProject.References.AddFromGuid
"{0002E157-0000-0000-C000-000000000046}", 5, 3
#Else
'Excel 97
'Version 5.0
ActiveWorkbook.VBProject.References.AddFromGuid
"{0002E157-0000-0000-C000-000000000046}", 5, 0
#End If
Dejafait:
'soluce philippe
Select Case Val(Application.Version)
Case 9 ' Office 2000
Chemin = "C:Program FilesFichiers communsMicrosoft
SharedVBAVBA6"
Case 8 ' Office 97
Chemin = "C:Program FilesFichiers communsMicrosoft
SharedVBA"
End Select
' Ici ton code exploitant la variable 'chemin' Que dois-je écrire?

C'est vraiment trop dur pour moi ce coup-là!
Merci de votre aide.
Avatar
Clément Marcotte
Bonjour,

Il faut que tu prennes ma solution ou celle de Philippe, ou celle de
l'API, et pas les trois en même temps. ;-)


Ou essaie juste :

dim vbcodemodule

Sans le as.


"ManBas" a écrit dans le message de
news:
Bonjour,
Ce fil avait été commencé début janvier. Michel Pierron, Clément
Marcotte et

Corona avaient apporté leurs savoir.
Le problème: le classeur développé sous XL2000 plante sur les postes
équipés

de XL97.

Mon fichier a fonctionné avec la moitié de la solution pendant
quelques

temps, puis les débogages ont repris, mais pas sur tous les postes
équipés

en XL97 (!), ce qui a encore retardé le diagnostic (d'ailleurs je
n'y

comprends vraiment rien).
Comme ces postes (anciens) sont pauvrement dotés en mémoire, ils
moulinent

longtemps avant de rendre leur verdict, ce qui accentue encore la
difficulté

à bosser et donc à faire de nouveaux essais.
Voici ma macro:
Ce qui plante c'est Dim VBCodeModule As CodeModule
(même le débogage est planté, j'en sort par le gestionnaire des
taches!)

donc pour la suite je ne sais pas.

Declare Function SearchTreeForFile Lib _
"imagehlp" (ByVal RootPath As String, _
ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long
Const MAX_PATH = 260
Public Const NomBar As String = "Imprimer"

Sub CreateBarreImprimer()
Dim tempStr As String, Ret As Long
Dim VBCodeModule As CodeModule
Dim CodeModule As Object
Dim StartLine As Long
Dim tmp As String
Dim LineProc As Long
Dim Wbk As Workbook
Dim LeModule As String
Dim ArrProcs()
Dim cBar As CommandBar
Dim cBtn As CommandBarButton
Dim Chemin As String
'create a buffer string
tempStr = String(MAX_PATH, 0)
'soluce clément
On Error GoTo Dejafait
#If VBA6 Then
'Excel 2000 et +
'Version 5.3
ActiveWorkbook.VBProject.References.AddFromGuid
"{0002E157-0000-0000-C000-000000000046}", 5, 3
#Else
'Excel 97
'Version 5.0
ActiveWorkbook.VBProject.References.AddFromGuid
"{0002E157-0000-0000-C000-000000000046}", 5, 0
#End If
Dejafait:
'soluce philippe
Select Case Val(Application.Version)
Case 9 ' Office 2000
Chemin = "C:Program FilesFichiers
communsMicrosoft

SharedVBAVBA6"
Case 8 ' Office 97
Chemin = "C:Program FilesFichiers
communsMicrosoft

SharedVBA"
End Select
' Ici ton code exploitant la variable 'chemin' Que dois-je
écrire?


C'est vraiment trop dur pour moi ce coup-là!
Merci de votre aide.