Excel- Help appel de fonction

Résolu/Fermé
mod77 Messages postés 1276 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 28 mars 2021 - 28 mars 2010 à 21:00
zebulon2503 Messages postés 1228 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 11 février 2016 - 31 mars 2010 à 08:55
Bonsoir,

J'ai créé un bouton de commande "BP2" dans 'feuil2' et je veux que ce bouton exécute la procédure d'un bouton d'initialisation "BP1" placé dans la "feuil1".

Je ne sais pas comment appeler cette fonction dans le code BV du BP1,
pouvez-vous m'aider SVP?



A voir également:

11 réponses

triwix Messages postés 296 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 4 février 2011 21
28 mars 2010 à 22:45
Hello
Copie le code de bp1, et clique droit sur bp2 - visualiser le code, et coller.

CA devrait aller
0
mod77 Messages postés 1276 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 28 mars 2021 52
29 mars 2010 à 08:16
Bonjour triwix,

ça ne peut pas marcher ce que tu suggères car le code du BP1 s'applique à la feuil1, si je copie le code ça m'oblige à ajouter des "Sheets("feuil1") . " à chaque code. C'est pourquoi je veux simplement exécuter la fonction BP1.

merci quand même
0
zebulon2503 Messages postés 1228 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 11 février 2016 108
29 mars 2010 à 08:26
Salut

Tu peux juste rajouter sheets("Feuil1").select dans la procédure de BP2 puis tu appelles ta fonction appellée par BP1.
A+
0
mod77 Messages postés 1276 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 28 mars 2021 52
29 mars 2010 à 08:32
Merci zebulon2503,

mais comment dois-je appeler ma fonction BP1 ?
si elle s'écrit ainsi: Private Sub cmdDebut_Click()

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zebulon2503 Messages postés 1228 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 11 février 2016 108
29 mars 2010 à 08:38
Tu n'as pas besoin de l'appeler.

Par exemple, tu as ce code pour BP1 :
Private BP1_Click()
Call Test
End Sub


La fonction Test() s'applique à la Feuil1 mais tu veux l'appeler depuis la Feuil2 par un bouton BP2.
Donc le code de BP2 sera :
Private BP2_Click()
Sheets("Feuil1").Select
Call Test
End Sub


Il faut juste que tu lui dises de bosser sur la Feuil1 au début, ca te fait qu'une ligne à rajouter...
0
mod77 Messages postés 1276 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 28 mars 2021 52
Modifié par mod77 le 29/03/2010 à 08:54
Ok je pense avoir compris, je ne peux donc pas appeler en écrivant un truc comme ça:

Private BP2_Click()
Sheets("Feuil1").Select
call BP2
End Sub

??
0
pijaku Messages postés 12259 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022 2 709
29 mars 2010 à 09:03
Salut,
Non ça tu ne peux pas.
Si tu veux réaliser exactement la même chose, sur la même feuille et tout et tout à partir de 2 boutons de commande, chacun placé sur une feuille, ta procédure doit être placée dans un module (sous visual basic : Insertion/module). Ensuite tu n'as plus qu'à appeler ta procédure depuis tes boutons :
Private BP2_Click() 
Call maprocédure
End Sub 

Exemple : [cette macro supprime le contenu de toutes les cellules de la feuille Feuil1] :
Sub Efface_cellules()
With Sheets(1)
.Cells.ClearContents
End With
End Sub

Le code des boutons :
Feuil1 bouton BP1 :
Private Sub BP1_Click()
Call Efface_cellules
End Sub

Feuil2 bouton BP2 :
Private Sub BP2_Click()
Call Efface_cellules
End Sub
0
zebulon2503 Messages postés 1228 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 11 février 2016 108
Modifié par zebulon2503 le 29/03/2010 à 08:59
Non, c'est pas possible.
Le BP1_Click signifie "au clic sur le bouton BP1".

Ce n'est pas le nom d'une fonction...
Toutes les fonctions qui se lancent dans BP1 se lanceront au clic sur celui ci. Si tu veux les lancer depuis BP2 dans la Feuil1, tu dois mettre Sheets("Feuil1").Select puis appeler les fonctions voulues (les mêmes que dans BP1).

Et dans ton exemple
Private BP2_Click()  
Sheets("Feuil1").Select  
BP2_clik()  
End Sub 


Tu cliques sur BP2 et relances la fonction Click. Si ca pouvais marcher, ca planterait quand même car ca te fait une boucle qui selectionnerait Feuil1 tout le temps.

Les cons peuvent avoir l'air intelligent à première vue... Heureusement pour eux que la vitesse de la lumière est supérieure à celle du son.
0
mod77 Messages postés 1276 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 28 mars 2021 52
29 mars 2010 à 09:05
Je me suis trompé en réécrivant je voulais écrire "Call BP1".

Mais ça change rien. C'est dommage je suis obligé de copier tout mes code et d'intégrer en plus les déclaration de variable de BP1. C'est galère, mais si c'est j'ai pas le choix tant pis.

Merci à toi zebulon2503 pour tes explications

Bonne journée
0
zebulon2503 Messages postés 1228 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 11 février 2016 108
29 mars 2010 à 09:10
Pourquoi tu dois recopier tes codes ? Tu avais quoi dans BP1 ? Si c'est juste des appels de procédures tu as juste à les recopier dans BP2 en rajoutant la sélection de la Feuil1...
Et dans ce cas, pourquoi faire un BP1 quand tu fais la même chose avec le 2e bouton ?

Si tu veux, détailles vraiment ce que tu veux faire et met ton fichier en ligne si tu veux que j'y jette un oeil pour y voir plus clair et te filer un coup de main :-)
0
mod77 Messages postés 1276 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 28 mars 2021 52
30 mars 2010 à 15:38
Décidément avec cette nouvelle configuration du site je perd encore plus de messages, désolé.
mais l'essentiel c'est de les voir.

zebulon,
pour explication: j'ai fais ce que tu m'a suggéré mais ça n'a pas marché comme prévu. les effacements que je devais réaliser sur la feuil1 se sont fait sur feuil2.
alors j'ai recopié le code.
Mais c'est pas grave, ça marche c'est l'essentiel.

Pijaku,
je te remercie pour ton code aussi, je vais l'essayer aussi.

Merci à tous les 2.
0
mod77 Messages postés 1276 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 28 mars 2021 52
Modifié par mod77 le 30/03/2010 à 16:36
voici mon code pour info,

Private Sub cmdInit_Click() 'BP1, en feuil1
cbx1 = False
cbx2 = False
cbx3 = False
cbx4 = False
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
Range("D19") = 0
Range("F19") = 0
Range("H19") = 0
End SubPrivate

Private Sub cmdDebut_Click() 'BP2 en feuil2
Sheets("Description").Select
End Sub

pijaku,
ça n'a pas marché non plus.
pourtant j'ai créé un fonction:sub raz() avec le code de cmdInit
puis j'ai écris:
private cmdInit() 'BP1
call raz
end sub

j'ai testé BP1 mais rien ne s'est passé. désolé.
0
zebulon2503 Messages postés 1228 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 11 février 2016 108
31 mars 2010 à 08:55
Fais :
Sub RAZ()
cbx1 = False 
cbx2 = False 
cbx3 = False 
cbx4 = False 
TextBox1 = "" 
TextBox2 = "" 
TextBox3 = "" 
Range("D19") = 0 
Range("F19") = 0 
Range("H19") = 0 
End Sub


Puis ton code pour BP1 ou BP2 :
Private cmdInit_Click() ' BP1 / BP2 
(Mais oublie pas d'appeler ton bouton "cmdInit" sinon ca marchera pas)
Call RAZ
End Sub
0