Ouvrir un classeur sans l'afficher

Philippe

XLDnaute Occasionnel
Bonsoir,

j'ouvre un classeur "Données" depuis un classeur "Maitre", le classeur "Données" est uniquement ma base de données, comment faire pour que lors de L'OUVERTURE, le classeur "Données" reste invisible ???
L'instruction application.screenupdating ne donne rien dans ce cas...

Merci pour vos idées

A+
Philippe
 

Guillaumega

XLDnaute Impliqué
Re : Ouvrir un classeur sans l'afficher

tu peux aller chercher ou plugger tes donner dedant et puis le fermer tout simplement?
En tout cas c'est comme cela que moi je fais comme ça si la bécanne est chaude lol on ne voit même pas le classeur s'ouvrir :)
Sinon tu peux regarder avec l'éditeur comment on fait pour rabattre la fenêtre d'un classeur
 

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir un classeur sans l'afficher

Bonjour Philippe, Guillaume

si j'ai bien compris, essaye peut être la ligne de code cidessous :

Code:
ActiveWindow.Visible = False

permet de masquer la fenêtre active, remettre à "True" pour l'afficher.

bonne journée
@+
 

Philippe

XLDnaute Occasionnel
Re : Ouvrir un classeur sans l'afficher

Bonjour Guillaume, Pierrot,

le problème Pierrot c'est qu'une fois que <ActiveWindow.Visible = False>
on ne peut plus écrire dans le classeur, il faut le rendre visible à nouveau...

Comment faire pour que toutes les opérations soient "invisibles"...?

A+
Philippe
 

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir un classeur sans l'afficher

Re

comprends pas trop ton problème, dans ton 1er post tu dis "application.ScreenUpdating" ne fonctionne pas... mets peut être ton fichier avec le code en pièce jointe car là je ne vois pas trop, si ce n'est le code ci dessous :

Code:
Application.ScreenUpdating = False
'toncode
Application.ScreenUpdating = True

@+
 

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir un classeur sans l'afficher

Re

si tu peux écrire dans un classeur masqué, seulement il faut nommer le classeur et la feuille de destination, comme ceci :

Code:
Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A1").Value = "1234"

@+
 

Philippe

XLDnaute Occasionnel
Re : Ouvrir un classeur sans l'afficher

Pierrot,
le problème est que l'instruction : Workbooks.open(MonClasseur) aboutit à l'affichage de "MonClasseur" même si on met un Application.screenupdating=false juste avant...

pour le fichier c'est compliqué, il faut les 2 classeurs, en installer un dans un répertoire à la racine de C: ... c'est un peu galère



code dans "Fichier maitre.xls"

Sub ouvrir_sans_voir()
If blabla=true then
Application.ScreenUpdating=False
Workbooks.open("MonClasseur.xls") '<---- et là "MonClasseur" s'affiche !!!
'''' Bricolage des données
Workbooks("MonClasseur.xls").save
Application.ScreenUpdating=True
Exit Sub
 

Philippe

XLDnaute Occasionnel
Re : Ouvrir un classeur sans l'afficher

re

Une méthode trouvée sur vbfrance:

Dim xlApp As New Excel.Application ' déclarer Public si dans un module
Dim xlBook As New Excel.Workbook
Dim xlSheet As New Excel.Worksheet
'Ouvrir le classeur dont on a besoin avec tout le chemin...
Set xlBook = xlApp.Workbooks.Open("C:\SECRETARIAT\Liste des patients.xls")
Set xlSheet = xlBook.Sheets("Feuil1") ' si on veut utiliser une feuille en particulier
'ensuite:
with xlSheet
.range("A1")... blabla, etc


Ca marche bien mais la lecture-écriture dans le classeur "caché" est nettement ralentie...

A+
Philippe
 

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir un classeur sans l'afficher

Re

regarde le code ci dessous, chez moi le classeur 1 n'est jamais visible :

Code:
Sub test()
Dim depart As Single
Application.ScreenUpdating = False
depart = Timer
Workbooks.Open "Classeur1.xls"
Do
    DoEvents
Loop While Timer < depart + 5
Workbooks("classeur1.xls").Close True
Application.ScreenUpdating = True
End Sub

adapte le nom du classeur, il doit être dans le répertoire courant.

@+
 

Philippe

XLDnaute Occasionnel
Re : Ouvrir un classeur sans l'afficher

re Pierrot,

je n'avais pas vu ton post de 05h57 (il y a un problème avec les heures sur le forum!!), on s'est croisé.

En effet, on peut écrire en indiquant le chemin par contre pour classer par ordre alphabetique, il faut d'abord faire un .select sur toute la zone à classer (dans mon cas toute la feuille) et là on a un message d'erreur "la méthode select a échoué"...

A+
Philippe
 

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir un classeur sans l'afficher

Re

en vba pratiquement jamais nécessaire de sélectionner, tu peux agir directement sur les objets, regarde le code ci dessous à adapter à ton cas :

Code:
With Workbooks("Classeur1.xls").Sheets("Feuil1")
    .Range("A1").CurrentRegion.Sort Key1:=.Range("A1"), Key2:=.Range("B1")
End With

@+
 

Discussions similaires

Réponses
19
Affichages
597

Statistiques des forums

Discussions
312 321
Messages
2 087 259
Membres
103 498
dernier inscrit
FAHDE