Excel- Help appel de fonction

Résolu
mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention   -  
zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   -
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?

11 réponses

  1. triwix Messages postés 306 Statut Membre 22
     
    Hello
    Copie le code de bp1, et clique droit sur bp2 - visualiser le code, et coller.

    CA devrait aller
    0
  2. mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention   53
     
    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
  3. zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   110
     
    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
  4. mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention   53
     
    Merci zebulon2503,

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

    merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   110
     
    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
  7. mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention   53
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  8. zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   110
     
    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
  9. mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention   53
     
    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
  10. zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   110
     
    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
  11. mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention   53
     
    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
  12. mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention   53
     
    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
    1. zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   110
       
      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