Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : VBA : Appel de fonction [ Langages dérivés / VBA ] (alonsyl)

vendredi 25 janvier 2008 à 12:04:42 | VBA : Appel de fonction

alonsyl

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 ?

merci a vous,


alonsyl


vendredi 25 janvier 2008 à 14:06:06 | Re : VBA : Appel de fonction

alonsyl

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.



Cette discussion est classé dans : fonctionne, add, menus, menubars, xlworksheet


Répondre à ce message

Sujets en rapport avec ce message

qui sait utiliser microsoft agent??? [ par sylvia ] j'utilise un controle microsoft agent, c'est un petit personnage genre merlin.'application fonctionne très bien sur mon pc mais lorsque je l'instakle Rajout dans les menus contextuels [ par Vincent ] Salut, je recherche une methode pour ajouter une option dans le menu copier coller qui apparaitquand on clique le bouton droit de la souris.Merci d'av Sous-menus à l'exécution [ par fKiller ] Salut !Je sais déjà comment créer des menus simples à l'exécution (load mnu(x)), mais je voudrais savoir comment faire pour faire des sous-menus... là Créer dynamiquement des menus [ par djiby ] quelqu'un sait-il comment ajouter des menus à partir du code VB.c'est urgent.merci. Vb, Access et imprimante!! [ par Le J ] Salut,Je veux changer d'imprimante avant de faire imprimer un état sous access (a partir de vb) et cela ne fonctionne pas!!! Ca fonctionne avec print Comment changer la couleur du texte des menus ? [ par GEDDi ] Comment changer la couleur du texte des menus ?La couleur du texte des menu de la Form est toujours en Noir et je ne sais pas comment on pourrait affe Création d'ADD-IN [ par Virgil ] Dans VB, lorsque l'on dble-clique sur un contrôle, le code associé à celui-ci se place dans l'ordre l'alphabêtique dans le code. Or, pour un souci de Requête [ par Octet ] Voila une requete qui ne fonctionne pas et je cherche pourquoi:rsDel.Open "SELECT * from constitution where No = '" & Num & "' AND NoX = '" & xNo & "' Acceder a une BD. [ par Fred ] Bonjour,Voila mon probleme,Je developpe actuellement des pages Web pour l'Intranet d'un hospital en Angleterre. Le serveur fonctionne sous Windows NT Executable?????? [ par Luke ] J'ai un projet VB qui lorsqu'executé en appuyant sur le bouton PLAY fonctionne parfaitement. Je veux l'installer sur des win98. Je me sers donc du dép


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.