IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] Masquer l'ouverture des fichiers


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut [VBA-E] Masquer l'ouverture des fichiers
    Bonjour tout le monde
    j'ouvre plusieur fichiers dans un repertoire et j'analyse la valeur d'une case
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    stFichier = Application.GetOpenFilename
       With Application.FileSearch
       .NewSearch
       .LookIn = chemin(stFichier)
       .Execute
        On Error Resume Next
          For Each f In .FoundFiles
          Workbooks.Open f
       Select Case activeworkbooks.Sheets(1).Range("g9")
     .... et la suite.
    ça marche très bien mais je n'aime pas voir les fichier s'ouvrir (screenupdating ne suffit pas à masquer ce mouvement). et je ne sais pas comment arriver a sortir le nom de fichier qui peut etre completement aléatoire. en fait, j'ouvre tout les fichiers excels présents dans le repertoire, parce que justement, je ne connais pas le nom du fichier.
    j'ai f qui est le chemin complet et qui se termine par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .....\fichier cible.xls
    et je voudrais parvenir a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Select Case  Workbooks("fichier cible.xls").Sheets(1).Range("g9")
     ou select case workbooks("fichier cible").Sheets(1).Range("g9")
    , mais j'ai rien vu qui puisse extraire juste le nom du fichier. alors peut etre avec les fonction de traitement de chaine de caractere, mais je gere pas trop.
    je voudrai réussir a lire dans le fichier fermé, ou au moins , qu'il reste en arriereplan. j'ai cherché sur le forum et les faq,notement celle qui traite de transformer excel en mini base de donnée, mais à ce que j'en ai compris, elle suppose d'installer des bibliotheques, or mon projet va aller sur d'autres bécanes, donc je veux utiliser excel standard.
    voila

  2. #2
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    Hello,

    Tu peux essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Truc = Right(TonString, Len(TonString) - InStrRev(TonString, "\"))
    où :
    -Truc est ton résultat
    - Right : extrait la partie droite d'une chaine de caractère (tu spécifies la position)
    - Len : longueur de la chaîne
    - InstrRev : renvoie la position d'un caractère (ici "\") dans une chaine de caractères
    - TonString : attention je ne suppose pas que tu portes un string c'est juste ta chaîne de caractères

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    j'ouvre plusieur fichiers dans un repertoire et j'analyse la valeur d'une case...
    ...ça marche très bien mais je n'aime pas voir les fichier s'ouvrir (screenupdating ne suffit pas à masquer ce mouvement)
    SilkyRoad a décrit une méthode intéressante qui permet de travailler sur des fichiers fermés.
    A+

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    merci cWain, ça marche bien ton truc. j'ai rajouté une couche pour obtenir le nom sans l'extention

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    truc = Right(f, Len(f) - InStrRev(f, "\"))
     fichier = Left(truc, Len(truc) - 4)             ' extraction du nom du fichier
    malheureusement ça ne suffit pas a faire marcher mon usine
    que j'ecrive
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
             u = Workbooks fichier.Sheets(1).Range("g9")
    ou         u = Workbooks truc.Sheets(1).Range("g9")
     
    ou        u = Workbooks ("fichier").Sheets(1).Range("g9")
    ou     u = Workbooks ("truc").Sheets(1).Range("g9")
    j'obtien toujour, l'indice n'apartiens pas à la selection.
    pour ouskel, j'ai essayé ce qui est marqué sur la faq, ça ne donne rien non plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    '  msgbox C:\Documents and Settings\mimi\dossier\excel\[ClasseurBase.xls]Feuil1'!$A$1
     
      ' boulaouane ='[clients.xls]feuil1'!$B$62
    et là pour le coup, ça ne passe meme pas le stade de l'écriture, le compilateur n'autorise pas

  5. #5
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    Juste un petit commentaire vite fait (pas trop le tps là, désolé), j'ai vu que tu mettais "truc" entre guillemets, or Truc, si tu le définis , tu ne l'appelle plus à l'aide de guillemets, mais juste comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    u = Workbooks (Truc).Sheets(1).Range("g9")
    Correction : dans ton cas c'est plutôt Fichier je crois

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    oui, tu as raison, mais si je ne l'avais pas marqué, en fait j'avais bie essayé sans guillemet aussi. mais ça marche pas. meme sur une commande simple
    genre workbooks(truc).open
    je plane

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour ouvrir ton fichier, tu dois indiquer le chemin.
    Mais avec le chemin, tu ouvres le fichier et donc, cela n'empêchera pas son "apparition". Je croyais que c'était ce que tu voulais éviter
    Tu précises ton pb ?
    A+

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    oui, c'est bien ce que j'aimerai éviter, mais j'ai un probleme de syntaxe. je voudrais juste lire dans le fichier, mais je n'y arrive pas. et comme j'y arrive pas, j'ai essayé avec open, maniere de vérifier si c'est l'action qui est impossible ou la syntaxe qui est mauvaise. et donc voila, j'en suis au même point. ça passe pas.
    ça devrait quand même pas être impossible, j'arrive sur un repertoire ou j'ai placé des ficchiers excel, je regarde dans chaque fichier le contenu de la cellule g9. je bloque

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu as regardé à l'URL que je t'ai mise ? Ou plus directement, ici ?
    A+

    PS - Chapitre "III-A. OLE DB Microsoft Jet"

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    mon cher ouskel
    j'ai regardé ce tutoriel a me crever les yeux chaque fois que tu m'en as reparlé, j'ai bien senti comme un message subliminal et insistant de ta part mais je n'y ais trouvé que ça succeptible de m'etre utile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Avant de vous lancer dans l'exploration du modèle ADO, n'oubliez pas qu'Excel possède 2 outils afin de lire dans un classeur fermé:
     
    Les formules de liaison:
     
    ='C:\Documents and Settings\mimi\dossier\excel\[ClasseurBase.xls]Feuil1'!$A$1 
     
    'Faire une RECHERCHE Verticale dans un classeur fermé:
    'Rechercher "DVP" dans la colonne A du classeur fermé et afficher la donnée correspondante de la colonne B.
    =RECHERCHEV("DVP";'C:\Documents and Settings\mimi\dossier\excel\[ClasseurBase.xls]Feuil1'!$A:$B;2;FAUX) 
     
     
    Les macros Excel4: 
    Vba 
    'Lecture de la cellule A1 dans la Feuil1 du classeur fermé				
    MsgBox ExecuteExcel4Macro("'C:\Documents and Settings\mimi\dossier\excel\[ClasseurBase.xls]Feuil1'!R1C1")
    et dans le deux cas, j'ai essayé de traduire par un certe pauvre mais qui néamoins sur
    msgbox 'C:cheminfichier\[nomfichier]Feuil1'!$A$1
    qui ne passe pas
    et par un
    msgbox MsgBox ExecuteExcel4Macro("'C:\Documents and Settings\mimi\dossier\excel\[ClasseurBase.xls]Feuil1'!R1C1") qui ne passe pas davantage, et comme, je n'ai pas le niveau pour interpreter le reste de ce qu'il dit avec les objet automaton ou ole a qui je n'ai pas eu l'honneur d'etre présenté et auquels je ne comprend rien, je nage
    j'ai meme été voir là
    http://www.developpez.com/vbasic/tut...tutoriel24.php
    et je nage toujours
    pour info, moi rien connaitre de l'informatique a part excel et son vba que j'ai appris seul, et je n'ai pas les bases de programation qu'il me faudrait. donc, une bonne partie du langage doit etre décodé AVANT de chercher a comprendre c'est quoi qu'il dit. je veux pas me faire passer pour plus bete que ce que je suis, parce que je trouve que je gaze quand meme pas mal, mais quand je demande une solution, c'est généralement que je plante et sur la connaissance du sujet et sur la maniere d'utiliser la solution. j'essaie de comprendre, mais je suis quand meme souvent dépassé
    ouf
    bref, moi pas compris

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ok ! Moi bien comprendre toi ! Moi regarde si trouver truc intéresser toi dans forum VBA.
    Pfff !
    ... Mais j'aimerais bien que Silky passe par là, il connaît ça par coeur.
    De mon côté, je ne l'ai utilisé qu'une fois pour une bricole, il y a longtemps, et puis je ne suis pas sûr, et c'était peut-être autre chose, bref, là, tout de suite, je suis aussi ignare que toi.
    Tu n'as pas une question plus facile ?
    A+

    NB - Je change le sujet de ta discussion afin d'attirer l'attention de Michel (SilkyRoad)

    Si tu travailles depuis un userform, tu peux utiliser une technique suggérée par AlainTech
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Application.Visible = False
      UserForm1.Show vbModal
    Il conseille aussi de remettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Application.Visible = True
    avant de fermer l'userform
    A+

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    bon, on a faim, on s'enerve, on s'enerve, maintenant, j'ai mangé, tout vas bien , désolé pour le coup de gueule.
    la formule ou tu m'envoie la c'est la meme que celle de la faq
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ='D:\MesDocuments\Mondossier\[Monclasseur.xls]Feuil1'!B12
    et je crois que c'est la l'apostrophe qu coince(entre autre)
    quand a l'application.visible, j'y avais pas pensé mais ça pourrais faire l'affaire. en fait, je bosse depuis un bouton dans un fichier, mais je lance une action qui lit trois fichier, et qui en fonction des calculs crée un 4eme fichier, et referme tout excel, avec un fichier résultat créé. pas bien méchant, je fait pas décoler ariane. le résultat est là, pas de soucis, mais par contre esthetiquement, c'est moche comme poux. et comme, je ne fais rien dans les fichier a par en extraire les infos, si je peux rester sur ma magnifique page d'accueil, c'est mieux. aller, bonne soirée, je vais me dégourdir l'esprit devant les experts. (hum)

  13. #13
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par alsimbad
    ...
    ça marche très bien mais je n'aime pas voir les fichier s'ouvrir (screenupdating ne suffit pas à masquer ce mouvement). ...
    je comprends pas la ... moi cela se passe trés bien avec "screenupdating.."

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub CommandButton1_Click()
     Dim wk As Workbook
     Dim i As Integer
     Application.ScreenUpdating = False
     Set wk = Workbooks.Open(Filename:=".....\fichier cible.xls", ReadOnly:=True)
     i = wk.Sheets("Feuil1").Range("G9")
     wk.Close False
     Set wk = Nothing
     Application.ScreenUpdating = True
     MsgBox i
     
    End Sub

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    Bravo bbil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Dim stFichier
     stFichier = Application.GetOpenFilename
       With Application.FileSearch
       .NewSearch
       .LookIn = cheminbalance(stFichier)
       .Execute
        On Error Resume Next
          For Each f In .FoundFiles
          Dim wk As Workbook
     Dim i As Integer
     Application.ScreenUpdating = False
     Set wk = Workbooks.Open(Filename:=f, ReadOnly:=True)
     'i = wk.Sheets("PAP CLTS").Range("G9") marche pas
    ' i = wk.Sheets(1).Range("G9")   marche pas
    ' i = wk.Worksheets("PAP CLTS").Range("G9")  marche pas, mais c'est curieux vu la ligne suivante qui fonctionne
     MsgBox wk.Worksheets("PAP CLTS").Range("G9")
     wk.Close False
     Set wk = Nothing
     Application.ScreenUpdating = True
     MsgBox i
    ça marche mais j'ai du essayer deux ou trois nuances avant de trouver celle qui marche. je vais developper sur l'ensemble du fichier, et je vous tiendrais au courant. je sais pas exactement a quoi ça tient, effectivement, le fichier s'ouvre et n'est pas visible. pour etre efficace, je dois voir si l'ensemble de la macro reste invisible, mais au cas ou, c'est super.merci les gars, avec celle la, je suis proche du but. bonne nuit a tous

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par alsimbad
    ça marche très bien mais je n'aime pas voir les fichier s'ouvrir (screenupdating ne suffit pas à masquer ce mouvement).
    Y'a pas de doute, tu te moques Je n'ai même pas essayé alors que je l'utilise systématiquement. J'ai cru à un phénomène particulier
    Maintenant je me souviens soudainement pourquoi je réclamais le code les autres fois
    Tu peux mettre résolu, phénomène !
    C'était quoi "ton" sujet de discussion que je le remette

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    j'utilisais ça. avoue que la nuance est faible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim stFichier
     stFichier = Application.GetOpenFilename
       With Application.FileSearch
       .NewSearch
       .LookIn = cheminbalance(stFichier)
       .Execute
        On Error Resume Next
        ScreenUpdating = False
          For Each f In .FoundFiles
          Workbooks.Open f
         Select Case ActiveWorkbook.Sheets(1).Range("g9")
    mais tel que c'est ci dessus, c'est absoluement pas efficace. et je ne sais pas pourquoi. alors peut etre que c'est lié à la suite da ma macro, ou a sa position par rapport a la boucle qui ouvre les trois fichiers, j'en saurais plus quan j'aurais developé le sujet.

  17. #17
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    ben tu t'est "bouffé" le Application ... devant screenupdapting... je suppose aussi que l'option explicit n'est pas activé sur ton projet ... et donc VB.. te crée une variable ScreenUpdapting ... qui n'as rien avoir ( à par le nom et le type ) à la propriété ScreenUpdapting de l'objet Application ...

    pour éviter de telle erreurs ...(nom de variables, portées des varibles..) rajoute
    en haut de tes modules et VB.. te signalera s'il y as lieu l'erreur au moment de la "compilation"...


  18. #18
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    arggghhh
    la honte sur moi. je viens a vous repentant et le front bas. je fais mes excuses les plus humbles a ceusse qui ont cherché a m'aider, et en particulier a ouskel. je m'en suis rendu compte ce matin, et j'esperais que je serais le premier à le dire ici, qu'au moins je corrige ma faute par le fait de m'en etre rendu compte tout seul, mais non, je devrai donc boire le calice jusqu'a la lie.
    Pardon les gars, je suis désolé
    ça va c'est assez ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E]Procedure d'ouverture de fichiers xls
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/03/2007, 09h09
  2. [VBA-E] masquer la barre des menus
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2007, 13h40
  3. Ouverture des fichiers .bin
    Par Fredo02 dans le forum Autres Logiciels
    Réponses: 16
    Dernier message: 11/01/2007, 18h26
  4. [VBA - Excel] Problème d'ouverture de fichier
    Par seiryujay dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/12/2006, 10h55
  5. (VBA-E) Erreur sur ouverture de fichier
    Par Stutak dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 27/08/2006, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo