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 :

Question simple VBA.


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Points : 34
    Points
    34
    Par défaut Question simple VBA.
    Bonjour à tous!

    Comment fait-on pour activer un classeur dont on ne connait pas le nom entier?

    Le classeur s'appelle "RapportsVirementsDCP_D_AAAA-MM-JJ.xls",
    AAAA-MM-JJ étant une date qui varie.

    Je ne connaît donc que le radical, à savoir "RapportsVirementsDCP_D_".
    L'utilisation de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks("RapportsVirementsDCP_D_*.xls").Activate
    ne fonctionne pas.

    Auriez-vous une idée, please?

  2. #2
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    575
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 575
    Points : 262
    Points
    262
    Par défaut
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveWorkbook.Name
    Ca te renvoie le nom de ton classeur activé.
    J'espère que ca répond à ta question

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Points : 34
    Points
    34
    Par défaut
    En fait, ce classeur n'est pas activé (il est simplement ouvert).

    Mon objectif est de l'activer, justement, sachant que je ne connais pas son nom exact (je ne connais que le radical).

  4. #4
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    575
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 575
    Points : 262
    Points
    262
    Par défaut
    Je ne comprends pas trop là
    Si tu l'as ouvert, je ne vois pas pourquoi tu ne connaitrais pas son nom.
    Ou alors il y a un truc que j'ai raté

  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    mais tu l'ouvre comment ton fichier Excel ? ta macro elle est bien dans ce fichier non ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Points : 34
    Points
    34
    Par défaut
    Héhé, je dois mal m'exprimer dsl.

    Le fichier est ouvert manuellement par un utilisateur (autre que moi), parmi d'autres classeurs.

    Ma macro est censée activer ce classeur préalablement ouvert à un moment donné, et le nom du classeur va évoluer dans le temps, pas ma macro.

    Je dois donc commander l'activation d'un classeur dont le nom va évoluer (enfin la fin du nom, cf ci-dessus).

    En gros je dis "activer le classeur dont le nom commence par RapportsVirements......."

    Info importante : il n'y aura qu'un seul classeur de ce type ouvert à la fois, donc pas de confusion possible pour la macro.

    Et non, ma macro n'est pas dans ce fichier.

  7. #7
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    575
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 575
    Points : 262
    Points
    262
    Par défaut
    ok, j'ai compris.
    Alors autre question. Pourquoi l'utilisateur ne lancerait pas la macro et lors de ce lancement ca t'ouvre une boite de dialogue dans la quelle tu récupère le chemin de ton classeur excel ?

  8. #8
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Sinon tu peux regarder du coté de la fonction Dir, ou tu peux chercher les fichiers en mettant les caractères de rehcerche *
    Regarde dans l'aide en ligne, tout y est parfaitement expliqué

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Points : 34
    Points
    34
    Par défaut
    C'est une idée, en effet.

    Je trouvais juste ça plus simple d'utiliser la syntaxe suivante (ou une équivalente), mais cela ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks("RapportsVirements_DCP_D*.xls").Activate
    C'est bizarre je ne vois pas trop où est l'erreur.

    Sinon, on m'a conseillé d'utiliser ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For i = 1 to Workbooks.Count
    If Left(Workbooks(i).Name,23)) = "RapportsVirements_DCP_D" Then
          Workbooks(i).Activate
    Next i
    qui devrait marcher, mais il est vrai que je serais curieux de savoir pourquoi la solution des caractères génériques ne fonctionne pas.

    Je vous remercie d'avance pour vos suggestions.

  10. #10
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    J'ai dit une connerie je viens de voir que l'utilisateur ouvre le fichier manuellement

    Faut faire gaffe, si l'utilisateur ouvre un deuxième process Excel, la macro ne fonctionnera pas, faut qu'il ouvre le fichier Excel dans le meme process que celui du fichier ou tu as la macro

    Je donne une idée en vrac : il faudrait parcourir les fichiers Excels ouverts, et faire un Instr dessus. je ne sais pas comment parcourir les fichiers Excel je vais chercher, je te donne juste l'idée principale.
    Pour l'instr il suffit que dans ta boucle tu fasse un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for... 'parcoure les fichiers Excel
                     if instr(1,FichierExcel,"RapportsVirements",vbTextCompare) <> 0 then
                            s = fichierExcel.name
                     end if
    next
    Faut juste trouver comment faire la boucle, mais je pense que ça doit etre trouvable ici

  11. #11
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    ah bah vi c'est ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 1 to Workbooks.Count
    pour parcourir les ficheirs Excel ouvert chui con

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour Monf29,

    En fait c'est votre 3ème question pour le même sujet.

    Au départ votre question était :

    J'aimerais donner l'ordre d'ouvrir un fichier excel dans ma macro :
    L'instruction est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Workbooks.Open  "C:\mon_dossier\RapportsVirementsDCP_D_*.xls
     
    (et non pas Activate)
    Bien évidemment, comme cela a été dit à la fin du 1er sujet, c'est valable si vous avez un fichier qui change de nom en fonction de la date. Si vous avez "x" fichiers dont le nom commence par les mêmes caractères (avant *), ils vont tous s'ouvrir.

    Dans ce cas vous pouvez utiliser la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.GetOpenFilename
    pour avoir le choix du fichier à ouvrir.

    Amicalement.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Points : 34
    Points
    34
    Par défaut
    Ok, donc on ne peut pas utiliser des caractères génériques.

    La boucle est efficace, elle marche bien.
    Grâce à elle, je peux ensuite récupérer directement le nom du classeur, (ActiveWorkbook.Name), ce qui fait que je n'ai plus de pb après.

    En tout cas, merci pour tout, ce forum est vraiment super, et merci aux gens qui se décarcassent à trouver des solutions!

    PS : je n'avais pas votre message, jacques_jean, mais il s'agit bien d'activer un classeur déjà ouvert. Ce classeur est le seul qui commence par "RapportsVirements" parmi tous les autres fichiers ouverts. En revanche, la syntaxe "Workbooks("RapportsVirements*.xls").Activate" ne fonctionne pas.

    Il ne s'agit plus là d'un pb bloquant (on m'a fourni une solution très satisfaisante) mais je m'interroge tout de même sur les caractères génériques.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Re Monf29,

    Comme je l'ai dit c'est le mot "Ouvrir" dans votre sujet initial qui m'a amené a donner cette réponse.

    Mais le principal est que votre problème soit solutionné.

    En ce qui concerne :

    mais je m'interroge tout de même sur les caractères génériques.
    pas de problème, cela fonctionne très bien pour ouvrir ou supprimer des fichiers.

    "*" veut dire "tous les caractères quel que soit leur nombre.
    "?" veut dire un seul caractère quel qu'il soit.

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

Discussions similaires

  1. [VBA-E]question simple
    Par David38 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/03/2006, 16h16
  2. Question simple sur la libération des objets
    Par gibet_b dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2004, 10h01
  3. DTS : Question simple sur sources de données
    Par guignol dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/05/2004, 12h09
  4. [LG]Choix du pascal ou autre ? Questions simples...
    Par vlacq dans le forum Langage
    Réponses: 5
    Dernier message: 30/01/2004, 23h42
  5. Question simple sur les threads :)
    Par momox dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/06/2003, 04h13

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