Recupérer des informations dans un classeur fermé

nanie12 Messages postés 114 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 16 août 2011 - 27 avril 2010 à 10:56
nanie12 Messages postés 114 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 16 août 2011 - 29 avril 2010 à 12:36
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

houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
27 avril 2010 à 11:54
le classeur doit être ouvert pour l'écriture,tu peux faire en sorte que les classeurs excels ne soient pas visibles:
Application.Visible = False
0
nanie12 Messages postés 114 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 16 août 2011
27 avril 2010 à 11:59
je dois écrire application.visible=false à chaque fois que je fais appel au classeur ?

nanie
0
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
27 avril 2010 à 12:02
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
0
nanie12 Messages postés 114 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 16 août 2011
27 avril 2010 à 12:03
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
0

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

Posez votre question
nanie12 Messages postés 114 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 16 août 2011
27 avril 2010 à 12:11
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
0
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
27 avril 2010 à 13:42
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
0
nanie12 Messages postés 114 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 16 août 2011
29 avril 2010 à 10:07
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
0
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
29 avril 2010 à 12:18
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.
0
nanie12 Messages postés 114 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 16 août 2011
29 avril 2010 à 12:36
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
0
Rejoignez-nous