alonsyl
Messages postés348Date d'inscriptionmardi 6 avril 2004StatutMembreDernière intervention 6 novembre 2008
-
25 janv. 2008 à 12:04
alonsyl
Messages postés348Date d'inscriptionmardi 6 avril 2004StatutMembreDernière intervention 6 novembre 2008
-
25 janv. 2008 à 14:06
bonjour,
le code VBA Excel suivant fonctionne :
Private Sub Workbook_Open()
MenuBars(xlWorksheet).Menus.Add Caption:="monMenu"
MenuBars(xlWorksheet).Menus("monMenu").MenuItems.Add _
Caption:="Cacher la ligne.", _
OnAction:="cacherLigne"
End Sub
Sub cacherLigne()
Rows(1).Select
Selection.EntireRow.Hidden = True
End Sub
pourquoi celui-ci ne fonctionne t'il pas ? :
Private Sub Workbook_Open()
MenuBars(xlWorksheet).Menus.Add Caption:="monMenu"
MenuBars(xlWorksheet).Menus("monMenu").MenuItems.Add _
Caption:="Cacher la ligne 1.", _
OnAction:="cacherLigne(1)"
End Sub
Sub cacherLigne(ByVal nb as Integer)
MsgBox nb
Rows(nb).Select
Selection.EntireRow.Hidden = True
End Sub
en realite, le "MsgBox nb" fonctionne mais la ligne 1 n'est pas masquee.
sauriez-vous me dire quel est le disfonctionnement du 2eme code et comment le corriger pour qu'il fonctionne ?
alonsyl
Messages postés348Date d'inscriptionmardi 6 avril 2004StatutMembreDernière intervention 6 novembre 200812 25 janv. 2008 à 14:06
je me suis rendu compte que je n'ai probablement pas assez due commenter mon code :
' a l'ouverture du classeur => dans "thisworkbook"
Private Sub Workbook_Open()
' je cree un menu deroulant (a cote de "fichier", "edition", "affichage", ...)
MenuBars(xlWorksheet).Menus.Add Caption:="monMenu"
' j'y adjoint 1 sous-menu
MenuBars(xlWorksheet).Menus("monMenu").MenuItems.Add _
' sur lequel sera ecrit "Cacher ligne 1."
Caption:="Cacher la ligne 1.", _
' qd on clique sur ce sous-menu, ca lance la procedure cacherLigne (qui se trouve sur un module distinct) en passant en parametre la valeur 1
OnAction:="cacherLigne(1)"
End Sub
' voici la procedure lancee par le sous-menu. il est a noter que la valeur qui etait en parametre est recuperee dans une variable nommee "nb"
Sub cacherLigne(ByVal nb as Integer)
' je verifie par une boite de dialogue que le 1 a bien ete passe en parametre dans la variable "nb"
MsgBox nb
' je supprime la ligne nb (ie la ligne 1)
Rows(nb).EntireRow.Hidden = True
End Sub
dans l'exemple precedent, la commande "MsgBox nb" m'affiche bien une boite de dialogue avec un 1 mais la ligne 1 n'est pas masquee. d'autre part, aucun message d'erreur ou alerte n'est renvoye.
pour trouver d'ou vient le pbl, j'ai egalement essaye le code (plus simple) suivant :
Private Sub Workbook_Open()
MenuBars(xlWorksheet).Menus.Add Caption:="monMenu"
MenuBars(xlWorksheet).Menus("monMenu").MenuItems.Add _
Caption:="Cacher la ligne.", _
' la difference c'est qu'ici je n'envoie pas de valeur en parametre
OnAction:="cacherLigne"
End Sub
Sub cacherLigne()
' et la, ca marche, la ligne 1 est masquee
Rows(1).EntireRow.Hidden = True
End Sub
c'est la que je suis un peu desabuse : je ne comprends pas pourquoi la procedure fonctionne lorsqu'il n'y a pas de parametre et pourquoi elle ne fonctionne qu'a moitie (MsgBox nb) lorsqu'il y a un parametre.