Cacher un seul classeur

Bonjour à tous.

Voila mon problème:

J'ai créé un UserForm qui s'ouvre seul. L'unique feuille auquel il est rattaché est masquée avec l'application au démarrage via la commande suivante dans ThisWorkBook:

Sub Workbook_open()

Application.Visible = False

Userform1.Show vbModeless

End Sub

Le problème donc, c'est que si j'ouvre d'autres fichiers excel, il sont tous invisibles (vu que ma commande "cache" l'application)

J'aimerai donc que mon Userform s'affiche sans la feuille auquel il est rattaché mais aussi que les autres fichiers excel que j'ouvre eux soient visibles.

Merci d'avance pour vos réponses!!

Bonjour

A tester

Dans le module ThisWorkbook

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Application.Visible = False
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
  Application.Visible = True
End Sub

dans le code de l'userform

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  Application.Visible = True
End Sub

Bonjour et merci pour ta réponse.

Malheureusement, cela n'a pas fonctionné. Une fois le code intégré, le Userform ne se lance plus à l'ouverture du fichier. La feuille s'affiche seule.

Bonjour

As-tu bien laissé cette macro ?

Sub Workbook_open()
Application.Visible = False
Userform1.Show vbModeless
End Sub

Oui, j'ai bien laissé la Macro dans ThisWorkBook.

Je pense que les différentes lignes de codes font interférences entre elles.

Voici ce que j'ai dans ThisWorkBook:

Sub Workbook_open()

Application.Visible = False

ProgIDoZ.Show vbModeless

End Sub

Et dans le Userform (nommé ProgIDoZ):

Private Declare Function FindWindowA& Lib "User32" _

(ByVal lpClassName$, ByVal lpWindowName$)

Private Declare Function EnableWindow& Lib "User32" _

(ByVal hWnd&, ByVal bEnable&)

Private Declare Function GetWindowLongA& Lib "User32" _

(ByVal hWnd&, ByVal nIndex&)

Private Declare Function SetWindowLongA& Lib "User32" _

(ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)

Private Sub UserForm_Initialize()

Dim hWnd As Long

hWnd = FindWindowA(vbNullString, Me.Caption)

SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000

End Sub

Private Sub UserForm_Activate()

Dim hWnd As Long

hWnd = FindWindowA("XLMAIN", Application.Caption)

EnableWindow hWnd, 1

End Sub

Private Sub CommandButton4_Click()

Application.Quit

End Sub

Private Sub CommandButton1_Click()

Range("O2").Select

Selection.Copy

Range("P2").Select

Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=False

Range("P2").Select

Application.CutCopyMode = False

Selection.Copy

End Sub

Private Sub CommandButton2_Click()

Range("O6").Select

ActiveCell.FormulaR1C1 = _

"=(2100-RC[-4])&VLOOKUP(RC[-3],Aire_administrative_concernée,2,FALSE)&VLOOKUP(RC[-2],Type_de_document,2,FALSE)&"",""&VLOOKUP(RC[-1],Type_de_pièce,2,FALSE)"

Range("O6").Select

Selection.Copy

Range("P6").Select

Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=False

Application.CutCopyMode = False

Selection.Copy

End Sub

Private Sub CommandButton3_Click()

Application.Visible = True

End Sub

Private Sub Form_Terminate()

Application.Quit

End Sub

Private Sub Label5_Click()

End Sub

Bonjour

Pour m'éviter de refaire un fichier

Joins ton fichier épuré des données confidentielles afin que je puisse faire des tests

Bonne journée

Bonsoir,

Je pourrai te joindre le fichier .xls, mais voila, il est trop volumineux

Bonjour

Pas besoin de tout le fichier

Au moins avec un userform et le code à l'intérieur + celui dans ThisWorkbook

A suivre

Bonjour, après quelques suppressions, le fichier fait la taille requise.

J'espère que cela sera plus clair pour toi.

En tout cas merci beaucoup du temps que tu prends pour te pencher sur mon problème!

114pour-forum.zip (31.22 Ko)

Bonjour

Non ce n'est pas plus clair

Car dans l'état actuel j'arrive à ouvrir d'autre fichiers sans que ceux ci soit masqués

Ou alors il y a quelque chose que j'ai loupé

plusieurs fichiers

Excuse moi, je n'ai pas été très clair dans l'énoncé du problème.

Effectivement, si on ouvre le fichier IDoZ puis d'autres fichiers Excel, tout s'affiche.

Ce que j'aimerai, c'est que quand on ouvre d'autres fichiers, la feuille reliée à mon Userform reste invisible.

En somme, j'aimerai que mon Userform réagisse comme un "logiciel" indépendant.

Merci beaucoup d'avance! (même si je n'arrive pas a mes fins!)

PS: Dans mon Userform, le bouton "fermer IDoZ" ferme Excel.

Est-il possible qu'il ferme l'application s'il n'y a pas d'autres taches Excel en cours et qu'il ferme juste le Userfom et sa feuille de données si il y a d'autres fichiers Excel ouvert.

Bonjour

Désolé je ne trouve pas de solution

A part ça

defaillance irremediable

Pour le moment, de mon côté, ce sujet est en stand bye

Mais il y des membres sur ce forum qui t'aideront à trouver une solution

Je suis ce sujet mais en tant que spectateur

Bonsoir llanfeust , Banzai64

Je ne connais pas de façon de masquer que le classeur sur lequel tu travail sans masquer les autres

il faut pour cela ouvrir un autre classeur en passant par fichier ,ouvrir

Ce qui ouvre une autre instance Excel

par contre sur le code de ton userform,tu peux utiliser ce code

Sous cette forme, le classeur ne sera pas enregistré

Sinon il faudra ajouter

ThisWorkbook.Save
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Application.DisplayAlerts = False             'supprime les messages d'alerte d'enregistrement
ThisWorkbook.Application.Visible = True       'Rend excel visible
If Application.Workbooks.Count <> 1 Then      'count= nombre d'instances excel ouvertes
   ThisWorkbook.Close                         'Ferme ce classeur sans fermer excel
Else
   Application.Quit                           'ferme excel + le classeur
End If
End Sub

Je vous remercie pour l'aide que vous m'avez apporté!

Si quelqu'un à une solution, je suis bien sur preneur.

Cordialement

L.L.

Rechercher des sujets similaires à "cacher seul classeur"