A voir également:
- [VBA] Userform toujours visible
- Clé usb non visible - Guide
- Compte facebook désactivé mais toujours visible - Guide
- Excel ligne toujours visible - Guide
- Capture d'écran whatsapp visible - Accueil - Messagerie instantanée
- Mkdir vba ✓ - Forum VB / VBA
8 réponses
Le Pingou
Messages postés
12230
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 janvier 2025
1 454
4 sept. 2012 à 21:25
4 sept. 2012 à 21:25
Bonjour,
Au passage , mettre l'instruction [UserForm.Show] juste avant le [End Sub] de votre macro sur ouverture...!
Au passage , mettre l'instruction [UserForm.Show] juste avant le [End Sub] de votre macro sur ouverture...!
Le Pingou
Messages postés
12230
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 janvier 2025
1 454
5 sept. 2012 à 10:29
5 sept. 2012 à 10:29
Bonjour,
Eh bien, sans connaitre le déroulement exact de vos procédures et à quel moment elles sont déclenchées, impossible de vous répondre.
Concerne ceci : Donc pourquoi mon Userform passe en arrière-plan dans ce cas le si je n'ai pas spécifié UserForm.Hide?
C`est étrange car : Userform.hide = invisible mais pas "fermé"
Eh bien, sans connaitre le déroulement exact de vos procédures et à quel moment elles sont déclenchées, impossible de vous répondre.
Concerne ceci : Donc pourquoi mon Userform passe en arrière-plan dans ce cas le si je n'ai pas spécifié UserForm.Hide?
C`est étrange car : Userform.hide = invisible mais pas "fermé"
Voila j'ai enfin pu récupérer mon code. Alors je lance le sub suivant via un bouton sur un UserForm, et celui-ci se placait en arrière plan si j'avais d'autres fenêtres (comme explorater windows par ex) d'ouvertes, mais il ne se fermait pas vraiment. Mon code était le suivant:
Sub Ajouter()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Range("C6").Activate
Dim cel As Range
While (ActiveCell.Value <> "")
If ActiveCell.Offset(1, 0) <> "" Then
ActiveCell.Offset(1, 0).Select
Set cel = ActiveCell
Else
Cells(6, ActiveCell.Column + 3).Select
End If
Wend
If cel.Row < 109 Then
Cells(cel.Row + 1, cel.Column).Select
End If
If ActiveCell.Offset(-1, 0) = "" Then
ActiveCell.Offset(-1, 0) = "Moteur"
ActiveCell.Offset(-1, 0).Borders.LineStyle = xlContinuous
ActiveCell.Offset(-1, 0).Borders.Weight = 3
ActiveCell.Offset(-1, -1) = "Zone"
ActiveCell.Offset(-1, -1).Borders.LineStyle = xlContinuous
ActiveCell.Offset(-1, -1).Borders.Weight = 3
End If
choix1 = Application.InputBox("Référence du moteur :", Type:=2)
If choix1 = "Faux" Then Exit Sub
choix2 = Application.InputBox("Zone :", Type:=2)
If choix2 = "Faux" Then Exit Sub
ActiveCell.Value = choix1
ActiveCell.Borders.LineStyle = xlContinuous
ActiveCell.Borders.Weight = 3
ActiveCell.Offset(0, -1).Value = choix2
ActiveCell.Offset(0, -1).Borders.LineStyle = xlContinuous
ActiveCell.Offset(0, -1).Borders.Weight = 3
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
En insérant un UserForm.Show juste avant le End Sub, il n'y as plus de problème, mais pourquoi celui-ci se comporte-t'il comme cela étant donné que je n'ai pas d'instruction de masquage ou autre?
Merci de votre considération.
Cordialement,
Clem
Sub Ajouter()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Range("C6").Activate
Dim cel As Range
While (ActiveCell.Value <> "")
If ActiveCell.Offset(1, 0) <> "" Then
ActiveCell.Offset(1, 0).Select
Set cel = ActiveCell
Else
Cells(6, ActiveCell.Column + 3).Select
End If
Wend
If cel.Row < 109 Then
Cells(cel.Row + 1, cel.Column).Select
End If
If ActiveCell.Offset(-1, 0) = "" Then
ActiveCell.Offset(-1, 0) = "Moteur"
ActiveCell.Offset(-1, 0).Borders.LineStyle = xlContinuous
ActiveCell.Offset(-1, 0).Borders.Weight = 3
ActiveCell.Offset(-1, -1) = "Zone"
ActiveCell.Offset(-1, -1).Borders.LineStyle = xlContinuous
ActiveCell.Offset(-1, -1).Borders.Weight = 3
End If
choix1 = Application.InputBox("Référence du moteur :", Type:=2)
If choix1 = "Faux" Then Exit Sub
choix2 = Application.InputBox("Zone :", Type:=2)
If choix2 = "Faux" Then Exit Sub
ActiveCell.Value = choix1
ActiveCell.Borders.LineStyle = xlContinuous
ActiveCell.Borders.Weight = 3
ActiveCell.Offset(0, -1).Value = choix2
ActiveCell.Offset(0, -1).Borders.LineStyle = xlContinuous
ActiveCell.Offset(0, -1).Borders.Weight = 3
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
En insérant un UserForm.Show juste avant le End Sub, il n'y as plus de problème, mais pourquoi celui-ci se comporte-t'il comme cela étant donné que je n'ai pas d'instruction de masquage ou autre?
Merci de votre considération.
Cordialement,
Clem
Le Pingou
Messages postés
12230
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 janvier 2025
1 454
5 sept. 2012 à 14:53
5 sept. 2012 à 14:53
Bonjour,
Je reviens au premier message ou vous dites : j'ai fait un "ThisWorkBook.Applicaiton.Visible = False" pour ne plus voir les feuilles.
Ou se trouve cette ligne d'instruction ?
Dans ce sens vous masquez le classeur alors que vous voulez les feuilles, c'est incohérent.
De plus comment votre code [Sub Ajouter()] s'applique-t-il à la bonne feuille puisque la feuille active n'est pas précisée?
Je reviens au premier message ou vous dites : j'ai fait un "ThisWorkBook.Applicaiton.Visible = False" pour ne plus voir les feuilles.
Ou se trouve cette ligne d'instruction ?
Dans ce sens vous masquez le classeur alors que vous voulez les feuilles, c'est incohérent.
De plus comment votre code [Sub Ajouter()] s'applique-t-il à la bonne feuille puisque la feuille active n'est pas précisée?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Rebonjour,
Tout d'abord merci de votre interêt.
J'ai cette instruction dans WorkBook_Open, pour travailler avec un semblant d'interface graphique: dés l'ouverture du fichier, le classeur est caché, ne laissant que l'userform de visible, permettant une navigation via des boutons. Excusez moi de la confusion, je cache bien le classeur non la feuille, qui est au nombre de une, tous les sub lui faisant référence.
Mes sub fonctionnent comme je le souhaite, à ceci près de divers problèmes d'affichage...
Pour expliquer mon projet: j'ai dans ma feuille une liste de moteur donnant leur référence et la zone dans laquelle ces derniers se situent (faisant référence à des signets sous word). J'ai une fonction "Rechercher" qui permet, connaissant la référence, de trouver la zone correspondante, puis une fonction "Afficher" pour afficher le document word correspondant.
Le problème vient de cette fonction "Ajouter", qui effectue son rôle comme prévu, mais qui change la visibilité de mon UserForm. En effet, celui-ci disparaît derrière l'explorateur windows, et, comme j'ai caché le classeur entier, n'ayant pas de raccourci sur la barre des tâches, celà me pose problème si je souhaite trouver un nouveau moteur.
Je sais qu'il est coutume de donner le document afin de vous permettre de mieux visualiser tout ca, mais le réseau empêche l'accès à tous les sites d'upload... Je ne veux pas abusé si ma requête vous paraît farfelue...
Merci
Cordialement,
Clem
Tout d'abord merci de votre interêt.
J'ai cette instruction dans WorkBook_Open, pour travailler avec un semblant d'interface graphique: dés l'ouverture du fichier, le classeur est caché, ne laissant que l'userform de visible, permettant une navigation via des boutons. Excusez moi de la confusion, je cache bien le classeur non la feuille, qui est au nombre de une, tous les sub lui faisant référence.
Mes sub fonctionnent comme je le souhaite, à ceci près de divers problèmes d'affichage...
Pour expliquer mon projet: j'ai dans ma feuille une liste de moteur donnant leur référence et la zone dans laquelle ces derniers se situent (faisant référence à des signets sous word). J'ai une fonction "Rechercher" qui permet, connaissant la référence, de trouver la zone correspondante, puis une fonction "Afficher" pour afficher le document word correspondant.
Le problème vient de cette fonction "Ajouter", qui effectue son rôle comme prévu, mais qui change la visibilité de mon UserForm. En effet, celui-ci disparaît derrière l'explorateur windows, et, comme j'ai caché le classeur entier, n'ayant pas de raccourci sur la barre des tâches, celà me pose problème si je souhaite trouver un nouveau moteur.
Je sais qu'il est coutume de donner le document afin de vous permettre de mieux visualiser tout ca, mais le réseau empêche l'accès à tous les sites d'upload... Je ne veux pas abusé si ma requête vous paraît farfelue...
Merci
Cordialement,
Clem
Le Pingou
Messages postés
12230
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 janvier 2025
1 454
5 sept. 2012 à 16:00
5 sept. 2012 à 16:00
Bonjour,
Merci pour les informations.
J'ai regardé votre code et si la feuille active n'est pas la bonne le code provoque une erreur.
Je ne comprends pas pourquoi vous voulez masquer le classeur, il semble qu'il suffirait de masquer les feuilles !
Si vous ne pouvez pas mettre le fichier à disposition sur https://www.cjoint.com/ ou http://dl.free.fr/ dans ce cas il faut réactiver votre [UserForm] principale avant de quitter une macro, bien sûr pour toutes les macros que vous lancez depuis cette votre [UserForm] principale.
Merci pour les informations.
J'ai regardé votre code et si la feuille active n'est pas la bonne le code provoque une erreur.
Je ne comprends pas pourquoi vous voulez masquer le classeur, il semble qu'il suffirait de masquer les feuilles !
Si vous ne pouvez pas mettre le fichier à disposition sur https://www.cjoint.com/ ou http://dl.free.fr/ dans ce cas il faut réactiver votre [UserForm] principale avant de quitter une macro, bien sûr pour toutes les macros que vous lancez depuis cette votre [UserForm] principale.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 714
5 sept. 2012 à 22:50
5 sept. 2012 à 22:50
Bonjour Le Pingou,
Je ne comprends pas pourquoi vous voulez masquer le classeur
Cela permet d'afficher le formulaire de son choix en évitant que l'utilisateur aille faire des modifications dans les feuilles. Les feuilles contiennent des données présentées sur formulaire et n'ont pas besoin de formules ou de mises en forme.
En cas de problème il faut tout de même réserver une porte de sortie pour avoir les feuilles et le code sinon...
Je ne comprends pas pourquoi vous voulez masquer le classeur
Cela permet d'afficher le formulaire de son choix en évitant que l'utilisateur aille faire des modifications dans les feuilles. Les feuilles contiennent des données présentées sur formulaire et n'ont pas besoin de formules ou de mises en forme.
En cas de problème il faut tout de même réserver une porte de sortie pour avoir les feuilles et le code sinon...
Le Pingou
Messages postés
12230
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 janvier 2025
1 454
6 sept. 2012 à 14:53
6 sept. 2012 à 14:53
Merci gbinforme, à une prochaine.
Salutatiions
Salutatiions
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 714
5 sept. 2012 à 22:45
5 sept. 2012 à 22:45
bonjour Clem,
j'ai fait un "ThisWorkBook.Applicaiton.Visible = False" pour ne plus voir les feuilles.
Dans ce cas effectivement, tu n'as plus ton classeur dans la barre de taches. Par contre si tu remplaces par cette ligne, tu obtiens le cache des feuilles mais tu gardes ton classeur dans la barre : n'est-ce pas une solution ?
Pour garder le formulaire toujours en premier plan c'est possible mais un peu plus compliqué et surtout, cela empêche aussi d'aller consulter une autre application.
j'ai fait un "ThisWorkBook.Applicaiton.Visible = False" pour ne plus voir les feuilles.
Dans ce cas effectivement, tu n'as plus ton classeur dans la barre de taches. Par contre si tu remplaces par cette ligne, tu obtiens le cache des feuilles mais tu gardes ton classeur dans la barre : n'est-ce pas une solution ?
Application.WindowState = xlMinimized
Pour garder le formulaire toujours en premier plan c'est possible mais un peu plus compliqué et surtout, cela empêche aussi d'aller consulter une autre application.
Bonjour Lepingou, bonjour gbinforme.
Merci pour votre interêt.
En effet, je souhaitais cacher le classeur afin d'empecher toute modification sur la feuille e celui-ci. J'avais tenté de masquer la feuille, cependant l'instruction renvois une erreur lors du masquage, sauf si j'ouvre une seconde feuille. Il semble qu'il n'est pas possible de cacher l'unique feuille d'un classeur (d'après ce que j'ai compris).
Je n'avais pas pensé à minimiser le classeur, mais c'est efficace! Le UserForm passe en premier plan et empêche de maximiser le classeur, ce qui est exactement ce que je recherche!
Je pense insérer une nouvelle feuille vierge, et lors de l'ouverture de mon classeur, le minimiser et cacher la feuille de données pour éviter toute modifications.
J'avais inséré un bouton sur mon userform pour réafficher le classeur, je vais la modifier pour afficher la feuille correspondante :)
Un grand merci a vous deux!!
Cordialement
Clem
Merci pour votre interêt.
En effet, je souhaitais cacher le classeur afin d'empecher toute modification sur la feuille e celui-ci. J'avais tenté de masquer la feuille, cependant l'instruction renvois une erreur lors du masquage, sauf si j'ouvre une seconde feuille. Il semble qu'il n'est pas possible de cacher l'unique feuille d'un classeur (d'après ce que j'ai compris).
Je n'avais pas pensé à minimiser le classeur, mais c'est efficace! Le UserForm passe en premier plan et empêche de maximiser le classeur, ce qui est exactement ce que je recherche!
Je pense insérer une nouvelle feuille vierge, et lors de l'ouverture de mon classeur, le minimiser et cacher la feuille de données pour éviter toute modifications.
J'avais inséré un bouton sur mon userform pour réafficher le classeur, je vais la modifier pour afficher la feuille correspondante :)
Un grand merci a vous deux!!
Cordialement
Clem
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 714
6 sept. 2012 à 09:49
6 sept. 2012 à 09:49
Bonjour,
Il semble qu'il n'est pas possible de cacher l'unique feuille d'un classeur
Dans un classeur, tu peux effectivement masquer toutes les feuilles sauf une qui doit être affichable car sinon excel ne sais plus quoi afficher.
cacher la feuille de données pour éviter toute modifications
Tu peux le faire dans l'éditeur VBA en mettant le code à 2 (xlSheetVeryHidden) et dans ce cas l'utilisateur ne pourra pas même voir qu'il y a une feuille cachée en utilisant les menus habituels et tu mets un mot de passe sur les macros, si tu es vraiment parano :)
Il semble qu'il n'est pas possible de cacher l'unique feuille d'un classeur
Dans un classeur, tu peux effectivement masquer toutes les feuilles sauf une qui doit être affichable car sinon excel ne sais plus quoi afficher.
cacher la feuille de données pour éviter toute modifications
Tu peux le faire dans l'éditeur VBA en mettant le code à 2 (xlSheetVeryHidden) et dans ce cas l'utilisateur ne pourra pas même voir qu'il y a une feuille cachée en utilisant les menus habituels et tu mets un mot de passe sur les macros, si tu es vraiment parano :)
Je ne suis pas vraiment parano lol, seulement cette application est destinée à des débutants en informatique. Je ne pense pas qu'ils sachent cacher ou révéler une feuille, mais je pense nécessaire de la cacher pour éviter tout manipulation pouvant conduire au crash de mes fonctions -_-
J'ai créé une nouvelle feuille vierge, et tout marche du tonnerre!!
J'ai créé une nouvelle feuille vierge, et tout marche du tonnerre!!
Modifié par Clem le 5/09/2012 à 08:53
Par contre quelque chose me turlupine.
Il me manquait donc un Userform.Show dans une macro qui affiche un textbox a remplir, afin de modifier la feuille Excel. Donc pourquoi mon Userform passe en arrière plan dans ce cas la si je n'ai pas spécifié UserForm.Hide?
Désolé si je peux paraître tatillon, mais je m'interesse beaucoup au VBA depuis peu et j'essaye de comprendre au mieux ce qu'il se passe ^^
Encore merci!