OnAction Bug sous XL2000 SP3 et XP

Le
john2
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FS
Le #17430211
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



john2
Le #17451961
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.
john2
Le #17562981
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
Publicité
Poster une réponse
Anonyme