Macro VBA

anesth31 Messages postés 8 Statut Membre -  
 anesth31 -
Bonjour,

Jai creé un bouton quitter sur ma feuille excel quelle macro faut il mettre pour revenir sur ma userform

merci d'avance

22 réponses

  • 1
  • 2
  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour,

    Si l'userform s'appelle "UserForm1"

    Il faut par exemple insérer un bouton dans la feuille dont le code est :

    Private Sub CommandButton1_Click()
        UserForm1.Show
    End Sub


    A+
    2
  2. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour lermite222,

    Oui effectivement, il semble que l'Userform ne serve qu'a selectionner les différentes feuilles. Il y a sans doute des moyens plus élégants de le coder comme tu le suggéres.

    Pour répondre à anesth31:

    Si on reste dans la logique de ton code vba la solution la plus simple me parait être la suivante :

    Fonctionner "à l'envers" c'est à dire cacher toutes les feuilles et ne faire apparaitre que celle qui est associée au bouton.

    On peut cacher toutes les feuilles au moment de l'activation de l'userform.
    Dans le code associé à l'userform ajouter cette macro :
    Private Sub UserForm_Activate()   
        For i = 2 To Sheets.Count   
            Sheets(i).Visible = False   
        Next i   
    End Sub   
    

    Cela cache toutes les feuilles sauf la 1° qui doit contenir l'image sur laquelle on double clique pour lancer l'userform.
    Vérifier que c'est bien la première dans l'ordre
    puis modifier toutes les macros associées au bouton comme ceci (juste l'exemple de la 1° macro)

    Private Sub CommandButton1_Click()   
        Me.Hide   
        Sheets("Pharmacie ORTHO salle 11").Visible = True   
        Sheets("Pharmacie ORTHO salle 11").Select   
    End Sub   
    


    Voila une solution qui devrait marcher

    A+
    Cordialement,
    1
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,
    Si vous voulez que votre form s'affiche a l'ouverture du classeur, vous pouvez ecrire ce code dans un module. A l'ouverture de votre classeur ce code sera execute automatiquement.

    Sub Auto_Open()
    Nomdevotreform.Show
    End Sub

    C'est du Microsoft pas une bidouille (Voir aide Excel)

    Bonne suite
    0
  4. anesth31
     
    Bonjour et merci à vous PILA 31 c'est bon ça marche

    Mon deuxième soucis quand je suis sur user form1 je clic sur un de mes boutons pour faire apparaitre l'une de mes feuilles avec la macro suivante:

    Private Sub CommandButton1_Click()
    Me.Hide
    Sheets("Pharmacie ORTHO salle 11").Select
    End Sub

    ça marche par contre j'aimerai que les onglets des differentes autres feuilles n'appaissent pas en bas de ma feuille
    merci d'avance
    0
    1. pilas31 Messages postés 1878 Statut Contributeur 648
       
      Il suffit d'insérer les instructions suivantes par exemple:
      Sheets("Feuil2").Visible = False 
      Sheets("Feuil3").Visible = False 
      


      et pour les rendre à nouveau visbles :
      Sheets("Feuil2").Visible = True 
      Sheets("Feuil3").Visible = True 
      

      A+
      0
    2. anesth31
       
      OK je dois l'inserer sur chaque ligne?
      ci-joint toute ma macro

      Private Sub CommandButton1_Click()
      Me.Hide
      Sheets("Pharmacie ORTHO salle 11").Select
      End Sub
      Private Sub CommandButton2_Click()
      Me.Hide
      Sheets("Pharmacie ORTHO salle 12").Select
      End Sub
      Private Sub CommandButton6_Click()
      Me.Hide
      Sheets("Pharmacie ORTHO salle 14").Select
      End Sub

      Private Sub CommandButton3_Click()
      Me.Hide
      Sheets("Pharmacie ORTHO salle 15").Select
      End Sub
      Private Sub CommandButton18_Click()
      Me.Hide
      Sheets("Matério ORTHO 11 12 14 15").Select
      End Sub
      Private Sub CommandButton14_Click()
      Me.Hide
      Sheets("Pharmacie URG salle 16").Select
      End Sub
      Private Sub CommandButton15_Click()
      Me.Hide
      Sheets("Pharmacie URG salle 17").Select
      End Sub
      Private Sub CommandButton19_Click()
      Me.Hide
      Sheets("Matériovigilance URG 16 17").Select
      End Sub
      Private Sub CommandButton17_Click()
      Me.Hide
      Sheets("Pharmacie PLASTIE salle 19").Select
      End Sub
      Private Sub CommandButton16_Click()
      Me.Hide
      Sheets("Pharmacie PLASTIE salle 20").Select
      End Sub
      Private Sub CommandButton20_Click()
      Me.Hide
      Sheets("Matériovigilance PLAST 19 20").Select
      End Sub
      Private Sub CommandButton8_Click()
      Me.Hide
      Sheets("Pharmacie VASCULAIRE").Select
      End Sub
      Private Sub CommandButton22_Click()
      Me.Hide
      Sheets("Matériovigilance VASC").Select
      End Sub
      Private Sub CommandButton5_Click()
      Me.Hide
      Sheets("Pharmacie LASER").Select
      End Sub
      Private Sub CommandButton23_Click()
      Me.Hide
      Sheets("Matériovigilance LASER").Select
      End Sub
      Private Sub CommandButton7_Click()
      Me.Hide
      Sheets("Pharmacie SCANNER sensation").Select
      End Sub
      Private Sub CommandButton10_Click()
      Me.Hide
      Sheets("Pharmacie SCANNER Définition").Select
      End Sub
      Private Sub CommandButton24_Click()
      Me.Hide
      Sheets("Matério sensation Définition").Select
      End Sub
      Private Sub CommandButton11_Click()
      Me.Hide
      Sheets("Pharmacie RADIO salle 1").Select
      End Sub
      Private Sub CommandButton12_Click()
      Me.Hide
      Sheets("Pharmacie RADIO salle 2").Select
      End Sub
      Private Sub CommandButton13_Click()
      Me.Hide
      Sheets("Pharmacie RADIO salle 3").Select
      End Sub
      Private Sub CommandButton26_Click()
      Me.Hide
      Sheets("Pharmacie RADIO salle 6").Select
      End Sub
      Private Sub CommandButton25_Click()
      Me.Hide
      Sheets("Matério RADIO salle 1 2 3 6").Select
      End Sub
      Private Sub CommandButton4_Click()
      Me.Hide
      Sheets("Pharmacie BOX 15").Select
      End Sub
      Private Sub CommandButton21_Click()
      Me.Hide
      Sheets("Matériovigilance BOX 15").Select
      End Sub
      Private Sub CommandButton28_Click()
      Me.Hide
      Sheets("Pharmacie neurochir salle 2").Select
      End Sub
      Private Sub CommandButton29_Click()
      Me.Hide
      Sheets("Pharmacie neurochir salle 3").Select
      End Sub
      Private Sub CommandButton32_Click()
      Me.Hide
      Sheets("Pharmacie neurochir salle 1").Select
      End Sub
      Private Sub CommandButton53_Click()
      Me.Hide
      Sheets("Pharmacie neurochir salle 4").Select
      End Sub
      Private Sub CommandButton52_Click()
      Me.Hide
      Sheets("Matério neurochir salle 1 2 3 4").Select
      End Sub

      Private Sub TextBox1_Change()

      End Sub

      Private Sub UserForm_Activate()
      With UserForm1
      .StartUpPosition = 3
      .Width = Application.Width
      .Height = Application.Height
      End With

      End Sub


      Private Sub CommandButton9_Click()
      ' Set Classeur = Workbooks.Item(1)
      'MsgBox "The name of the active workbook is " & ActiveWorkbook.Name
      Workbooks(ActiveWorkbook.Name).Close SaveChanges:=True
      'ActiveWorkbook.Save
      'ActiveWorkbook.Quit
      'Application.Quit
      End Sub

      Private Sub Image1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
      Load UserForm2
      UserForm2.Show

      End Sub


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

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Avec tout les boutons que tu as, tu pourrais étudier cette démo çà raccourcirai ton code et ça le rendrai beaucoup plus clair.
    Voir aussi et plus pratique encore...
    A+
    0
  7. anesth31
     
    ma macro et dèjà écrite que faut il que je rajoute pour que ça fonctionne. je résume,

    Ma feuille s'affiche les onglets des autres feuilles aussi j'aimerai donc que les autres onglets n'apparaisent pas a part l'onglet feuille vide

    Merci d'avance
    0
    1. pilas31 Messages postés 1878 Statut Contributeur 648
       
      Regarde cette réponse stp
      0
  8. anesth31 Messages postés 8 Statut Membre
     
    ton code fonctionne mais est il possible que uesr form1 s'affiche en même tant la feuille qui reste visible elle est vide et j'ai mis de la couleur en fond

    Merci
    0
  9. anesth31 Messages postés 8 Statut Membre
     
    c'est encore moi pilas31 j'ai fait ce que tu m'a dit le code ci-joint

    Private Sub CommandButton1_Click()
    Me.Hide
    Sheets("Pharmacie ORTHO salle 11").Visible = True
    Sheets("Pharmacie ORTHO salle 11").Select
    End Sub

    Private Sub CommandButton2_Click()
    Me.Hide
    Sheets("Pharmacie ORTHO salle 12").Visible = True
    Sheets("Pharmacie ORTHO salle 12").Select
    End Sub

    ect...;; mais maintenant une fois salle 11 ouverte puis fermée à l'aide d'un bouton

    Private Sub CommandButton1_Click()
    UserForm1.Show
    End Sub

    quand j'ouvre la salle 12 la 11 est toujours ouverte il faut qu'elle se ferme quand je quitte la feuille à l'aide du bouton QUITTER

    Merci pour ton aide
    0
  10. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour,

    Je ne suis pas sur d'avoir compris le fonctionnement mais il me semble qu'il faut mémoriser la feuille que l'on vient de quitter pour pouvoir la masquer.

    Une proposition :

    Mettre dans un module une déclaration de variable globale (visible de toutes les macros y compris depuis le code de l'userform) :
    Public Onglet_courant As String

    Initialiser cette variable dans chacune des macros comme cela :
    Private Sub CommandButton1_Click() 
        Sheets("Pharmacie ORTHO salle 11").Visible = True 
        Sheets("Pharmacie ORTHO salle 11").Select 
        Onglet_courant = "Pharmacie ORTHO salle 11" 
        Me.Hide 
    End Sub

    ainsi de suite ....
    Puis modifier le code du (ou des) bouton(s) QUITTER comme cela :
    Private Sub CommandButton1_Click() 
        If Onglet_courant <> "" Then 
            Sheets(Onglet_courant).Visible = False 
        End If 
        Sheets(1).Select 
    End Sub


    Je suppose toujours que la feuille n°1 est celle qui est toujours visible.

    Voila c'est à tester.

    A+

    Cordialement,
    0
  11. anesth31
     
    bonjour je vais essayer ce que tu me proposes je te confirme que la feuille vide (N°1) colorée en bleu doit rester toujours visible
    Merci je te recontacte A+

    Par contre ce code je le met dans un module je fais comment pour qu'il soit visible par toutes les macro et userform

    Public Onglet_courant As String
    0
  12. anesth31
     
    Pour pilas31
    c'est encore moi tes lignes de codes fonctionnent annule mon dernier message
    par contre quand je quitte ma feuille je reviens sur ma feuille vide serait il possible de revenir directement sur ma feuille usreform et ne pas passer à chaque fois par le bouton que j'ai mis sur ma feuille (vide).

    pareil quand j'ouvre mon dossier il faut que j'arrive directement sur ma feuille userform

    Encore merci pour ton aide car sans toi ça serait vraiement la galère
    0
  13. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Re Bonjour,

    Je te propose alors de relancer l'userform dans la macro QUITTER comme ceci :
    Private Sub CommandButton1_Click() 
        If Onglet_courant <> "" Then 
            Sheets(Onglet_courant).Visible = False 
        End If 
        Sheets(1).Select 
        UserForm1.Show
    End Sub

    Pour que qu'il se lance à l'ouverture tu vas dans le dossier "ThisWorkbook" de l'éditeur VBA et tu inséres la macro suivante :

    Private Sub Workbook_Open() 
        UserForm1.Show 
    End Sub


    A+

    Cordialement,
    0
  14. anesth31
     
    Pour pilas31

    J'ai tapé toutes les lignes de codes en testant les macros ça fonctionne.

    par contre quand je lance le programme j'arrive sur userform je clique sur un des boutons et la feuille ne s'ouvre plus, seule la feuille (vide) apparrait à l'écran

    Désolé je suis vraiement un boulet!!!!
    0
  15. anesth31 Messages postés 8 Statut Membre
     
    bonsoir pilas31 une précision c'est depuis que j'ai inséré ton code qu'elles n'apparaissent plus quand je clique

    Private Sub Workbook_Open()
    UserForm1.Show
    End Sub

    mon code actuel pour l'ouverture est ci-dessous

    Private Sub Workbook_Open()
    UserForm1.Show
    For i = 2 To Sheets.Count
    Sheets(i).Visible = Fasle
    Next i
    End Sub

    merci pour ton aide
    0
  16. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour,

    Désolé je n'étais pas dispo avant.
    Je ne comprends pas pourquoi cela ne marche pas chez toi.
    Il ne doit pas y avoir grand chose pour le faire fonctionner.
    Tu peux peut-être nous communiquer ton fichier en le déposant sur www.cijoint.fr et en collant dans un message le lien qui te sera donné.
    Il faut t'assurer en préallable qu'il n'y a pas de données confidentielles.

    A+

    Cordialement,
    0
  17. anesth31
     
    OK c'est sympa je le fait aujourd'hui ou ce soir
    aucune donnée conf

    Merci d'avance

    je vais mettre ce programme en dossier partagé il me semble impossible de l'ouvrir à deux ou trois endrois différents en même temps pour travailler sur des feuilles différentes.
    Peux tu me le comfirmer.
    Et sdi c'est possible m'indiquer comment
    0
    1. pilas31 Messages postés 1878 Statut Contributeur 648
       
      Juste une info. Il est déconseillé de donner des coordonnées personnelles sur le forum. Si tu poste ton fichier, je le regarde sans problème.

      Je te conseille de modifier ton post pour enlever ton n° stp
      0
  18. anesth31
     
    Pour pilas31 ci-desous le lien
    Merci encore de me consacrer un peu de ton temps

    Veuillez noter le lien ci-dessous qui vous permettra d'accéder à ce fichier.
    C'est ce même lien que vous devrez transmettre à vos correspondants
    http://www.cijoint.fr/cjlink.php?file=cj201110/cijgc3FcGq.xls

    PS tu pourra me renseigner por ma question au sujet de l'ouverture multiples
    de mon programme

    A+
    0
  19. anesth31
     
    désolé je te joins un nouveau lien le premier le projet est verouillé
    ça sera plus facile

    Le dépôt du fichier Travail - Sauvegarde.xls a été réalisé avec succès !

    Veuillez noter le lien ci-dessous qui vous permettra d'accéder à ce fichier.
    C'est ce même lien que vous devrez transmettre à vos correspondants
    http://www.cijoint.fr/cjlink.php?file=cj201110/cijJxDeFMI.xls

    Merci d'avance
    0
    1. pilas31 Messages postés 1878 Statut Contributeur 648
       
      Merci, je regarde dés que possible et je reviens ...

      A+
      0
  20. pilas31 Messages postés 1878 Statut Contributeur 648
     
    J'ai regardé le code voila l'explication :
    Le code dans ThisWorkbook n'était pas dans le bon ordre il faut le remplacer par le code suivant :

    Private Sub Workbook_Open()
        For i = 2 To Sheets.Count
            Sheets(i).Visible = False
        Next i
        Load UserForm1
        UserForm1.Show
    End Sub


    J'ai vu une autre anomalie : la feuille "Matério neurochir salle 1 2 3 4" associée au bouton 52 de l'Userform qui n'existe pas.

    Pour le partage du fichier, il faut aller dans le menu <Outils> puis option <Partager le classeur> puis dans l'onglet "Modification" de la fenêtre qui s'ouvre il faut cocher la case "Permettre une modification multi-utilisateurs".

    Il enregistre alors une version partagée du classeur : il porte le même nom mais avec [partagé] écrit à la suite du nom.

    Enfin il faut copier le classeur dans un emplacement réseau accessible à tous les utilisateurs. Tous doivent utiliser le même et pas le copier chez eux

    Voilà je pense la procédure.

    A+
    0
  • 1
  • 2