Macro VBA

Fermé
anesth31 Messages postés 8 Date d'inscription mardi 18 octobre 2011 Statut Membre Dernière intervention 27 février 2012 - 18 oct. 2011 à 22:04
 anesth31 - 28 oct. 2011 à 21:42
Bonjour,

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

merci d'avance


A voir également:

22 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
19 oct. 2011 à 10:11
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 19/10/2011 à 14:00
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
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 709
19 oct. 2011 à 10:32
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
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 19/10/2011 à 11:26
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
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

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

Posez votre question
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
19 oct. 2011 à 12:13
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
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 19/10/2011 à 13:56
Regarde cette réponse stp
0
anesth31 Messages postés 8 Date d'inscription mardi 18 octobre 2011 Statut Membre Dernière intervention 27 février 2012
19 oct. 2011 à 19:43
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
anesth31 Messages postés 8 Date d'inscription mardi 18 octobre 2011 Statut Membre Dernière intervention 27 février 2012
19 oct. 2011 à 21:17
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 20/10/2011 à 10:54
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
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
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 20/10/2011 à 14:36
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
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
anesth31 Messages postés 8 Date d'inscription mardi 18 octobre 2011 Statut Membre Dernière intervention 27 février 2012
20 oct. 2011 à 20:47
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 21/10/2011 à 11:23
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
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 21/10/2011 à 12:17
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
C'est fait merci
0
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
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
21 oct. 2011 à 14:10
Merci, je regarde dés que possible et je reviens ...

A+
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
21 oct. 2011 à 16:59
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