begin process at 2012 02 16 09:33:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

VBA : Appel de fonction


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

VBA : Appel de fonction

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ée 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...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,574 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales