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

OnAction Bug sous XL2000 SP3 et XP

3 réponses
Avatar
john2
Bonsoir,

La propri=E9t=E9 "OnAction" avec passage de param=E8tre bug sous XL 2000
SP3.
Le click sur le bouton menu sur lequel je viens d'affecter une macro
avec passage de 3 param=E8tres sous Excel 2000 SP3 associ=E9 =E0 XP ne
fonctionne pas. Je n'ai pas d'erreur mais la macro
"InsertList(NiveauSec, i, j)"ne se d=E9roule pas. Mon click reste sans
effet et le programme ne fonctionne pas. Il semblerait que ce
comportement soit connu comme =E9tant un Bug d'Excel 2000 sous XP....
Excel 2000SP2 sous XP permet le fonctionnemt correct avec le passage
de param=E8tre mais malheureusement je dois utiliser XL2000 SP3. Y-
aurait-il un paliatif ? ou dois je changer de version d'Excel? Changer
mes biblioth=E8ques de r=E9f=E9rence?
Trame du programme ci apr=E8s.
Merci de me faire de vos impressions.

Sub CreatMenuNiveauTapRoom(NiveauSec, VarObj3, i, j)
For i =3D 1 To 20
For j =3D 1 To 12
VarObj2 =3D VarObj1 & ".Room" & j
Set VarObj2 =3D VarOjb1.Controls.Add(Type:=3DmsoControlButton)
TapRefRoom =3D "TapRefRoom" & j & NiveauSec & i

With VarObj2
.Caption =3D "Tap." & NiveauSec & ".BL" & i & ".Room" & j
'Passage de 3 param=E8tres =E0 la proc=E9dure Insertlist
.OnAction =3D "'InsertList """ & NiveauSec & """,""" & i &
""",""" & j & """'"
End With

Next j
Next i
End Sub

Sub InsertList(NiveauSec, i, j)

TapRefRoom =3D "TapRefRoom" & j & NiveauSec & i
With Selection.Validation
.Delete

.Add Type:=3DxlValidateList, AlertStyle:=3DxlValidAlertStop,
Operator:=3D _
xlBetween, Formula1:=3D"=3D" & TapRefRoom

End With
End Sub

3 réponses

Avatar
FS
Juste une idée (je n'ai plus Excel 2000 pour la tester) : forcer le type
de tes variables i et j en String :

.OnAction = "'InsertList """ & NiveauSec & """,""" & Cstr(i) &
""",""" & Cstr(j) & """'"

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

john2 a écrit :
Bonsoir,

La propriété "OnAction" avec passage de paramètre bug sous XL 2000
SP3.
Le click sur le bouton menu sur lequel je viens d'affecter une macro
avec passage de 3 paramètres sous Excel 2000 SP3 associé à XP ne
fonctionne pas. Je n'ai pas d'erreur mais la macro
"InsertList(NiveauSec, i, j)"ne se déroule pas. Mon click reste sans
effet et le programme ne fonctionne pas. Il semblerait que ce
comportement soit connu comme étant un Bug d'Excel 2000 sous XP....
Excel 2000SP2 sous XP permet le fonctionnemt correct avec le passage
de paramètre mais malheureusement je dois utiliser XL2000 SP3. Y-
aurait-il un paliatif ? ou dois je changer de version d'Excel? Changer
mes bibliothèques de référence?
Trame du programme ci après.
Merci de me faire de vos impressions.

Sub CreatMenuNiveauTapRoom(NiveauSec, VarObj3, i, j)
For i = 1 To 20
For j = 1 To 12
VarObj2 = VarObj1 & ".Room" & j
Set VarObj2 = VarOjb1.Controls.Add(Type:=msoControlButton)
TapRefRoom = "TapRefRoom" & j & NiveauSec & i

With VarObj2
.Caption = "Tap." & NiveauSec & ".BL" & i & ".Room" & j
'Passage de 3 paramètres à la procédure Insertlist
.OnAction = "'InsertList """ & NiveauSec & """,""" & i &
""",""" & j & """'"
End With

Next j
Next i
End Sub

Sub InsertList(NiveauSec, i, j)

TapRefRoom = "TapRefRoom" & j & NiveauSec & i
With Selection.Validation
.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:= _
xlBetween, Formula1:="=" & TapRefRoom

End With
End Sub



Avatar
john2
Merci Frédéric pour ton idée!

Le résultat est le même avec ou sans "Cstr", le click reste sans effet
et aucun message d'erreur.

Je vais devoir me replier vers une autre stratégie...Peut être du
genre une boîte de dialogue personnalisée qui permet d'initialiser le
paramétrage de l'étiquette que je souhaite affecter à la cellule
sélectionnée. Je perdrais dans ces conditions probablement l'ergonomie
de la selection par "Tree view".

Merci pour ton site!

jean.
Avatar
john2
Pour mémoire:

Une des solutions est de passer les paramètres par encodage
dans .Parameter

.OnAction = "'InsertList "
.Parameter = NiveauSec & i & j 'Encodage des paramètre
multiples


Sub InsertList( ) 'Ici plus de paramètre dans les parenthèses!

Param = CommandBars.ActionControl.Parameter

'Ici écriture du décodage de chaque paramètre avec propriétés Instr
et Mid pour retrouver les valeurs de
'NiveauSec; i; j.

End Sub

Jean