Recupérer des informations dans un classeur fermé

Signaler
Messages postés
114
Date d'inscription
vendredi 9 avril 2010
Statut
Membre
Dernière intervention
16 août 2011
-
Messages postés
114
Date d'inscription
vendredi 9 avril 2010
Statut
Membre
Dernière intervention
16 août 2011
-
Bonjour
j'ai réalisé un programme sur excel qui récupère et renvoi des données dans divers classeurs.
je voudrais que tous ces classeurs restent fermés. comment je peux faire ? s'il ne sont pas ouvert pour l'instant cela me bloque mon application.

merci pour votre aide

nanie

9 réponses

Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013

le classeur doit être ouvert pour l'écriture,tu peux faire en sorte que les classeurs excels ne soient pas visibles:
Application.Visible = False
Messages postés
114
Date d'inscription
vendredi 9 avril 2010
Statut
Membre
Dernière intervention
16 août 2011

je dois écrire application.visible=false à chaque fois que je fais appel au classeur ?

nanie
Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013

Juste au début de ton code qui fait appel aux classeurs, ne pas oublier de remettre application.visible=true sinon tu vois plus les classeurs excels
Messages postés
114
Date d'inscription
vendredi 9 avril 2010
Statut
Membre
Dernière intervention
16 août 2011

exemple de macro : je veux trier les infos dans mon classeur vclasseurN1 et vclasseur sans qu'ils soient ouvert


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  Dim vchemin As String
Dim vclasseurN1 As Worksheet
Dim vclasseur As Worksheet
Dim j As Integer, i As Integer

'tri donnée salarié

Range("B4:AN15").Select
    ActiveWorkbook.Worksheets("données salariés").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("données salariés").Sort.SortFields.Add Key:=Range( _
        "B4:B15"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("données salariés").Sort.SortFields.Add Key:=Range( _
        "C4:C15"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("données salariés").Sort
        .SetRange Range("B3:AN15")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
        
    End With
    
'effacer contenu feuil1
    Sheets("Feuil1").Select
    Range("A2:D23").Select
    Selection.ClearContents

  'tri base de données chantiers
vchemin = "C:\Documents and Settings\Sabine\Bureau\Sandie\Suivi des salariés"
Set vclasseurN1 = Workbooks("nouveaux-clients.xls").Worksheets("Feuil1")
Set vclasseur = Workbooks("base de données chantiers.xls").Worksheets("Feuil1")


    Columns("B:M").Select
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("B2:B54") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("E2:E54") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("F2:F54") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("C2:C54") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("B1:M54")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveWindow.ScrollColumn = 1
End Sub


nanie
Messages postés
114
Date d'inscription
vendredi 9 avril 2010
Statut
Membre
Dernière intervention
16 août 2011

je viens d'essayer effectivement ca masque tous les classeurs. Mais on est obligé de les ouvrir
moi je ne voudrais pas qu'ils s'ouvrent car je ne veux pas que mes utilisateurs aient accès à ses classeurs.


nanie
Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013

Dans ce cas il va falloir que tu passe par une connexion ADO
voir le lien
http://silkyroad.developpez.com/VBA/ClasseursFermes/
si tu a des notions en SQL tu peux faire ton tri directement dans la requête
Messages postés
114
Date d'inscription
vendredi 9 avril 2010
Statut
Membre
Dernière intervention
16 août 2011

J'ai regardé ton lien mais je trouve ca très complexe, il ne faut pas oublier que je suis débutante en VBA.
N'y a t'il pas une autre solution ?

nanie
Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013

A ma connaissance je ne vois pas d'autre moyens à part ADO pour transférer des données avec des classeurs Excel fermés, en revanche je ne comprend pas bien ta contrainte:
moi je ne voudrais pas qu'ils s'ouvrent car je ne veux pas que mes utilisateurs aient accès à ses classeurs.
tes fichiers sont sur un réseau ? Si les utilisateurs ont accès à ces fichiers pourquoi ils auront accès seulement aux fichiers ouvert, précise plus tes contraintes pour qu'on puisse répondre avec la solution adapté à ton besoin.
Messages postés
114
Date d'inscription
vendredi 9 avril 2010
Statut
Membre
Dernière intervention
16 août 2011

j'ai établi un programme qui va chercher dans un base de données tous les chantiers existants.
le programme que j'ai faits permet de mettre un salarié pour ce chantier. je ne veux en aucun cas que la personne s'occupant de mettre en face un chantier un salarié n'est accès à cette base de données. cette base de donnée s'alimente toute seule à partir d'un autre fichier.
mon programme est un ensemble de formulaires de saisie qui va chercher des informations dans les bases de données et alimente cette base de données avec les informations enregistrées dans les formulaires.
j'ai plusieurs classeurs qui me sont nécessaire :
base de données chantiers
planning salarié
nouveaux contrats

nanie