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 :

activer un classeur ouvert sans connaitre son nom


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 35
    Par défaut activer un classeur ouvert sans connaitre son nom
    Bonjour,

    Dans ma macro, je souhaiterai activer un classeur qui serait déjà ouvert par l'utilisateur afin d'y ajouter des informations complémentaires dans une cellule. Le seul hic, c'est que ce classeur, bien qu'ayant les mêmes onglets et informations se nomme différement pour chaque personne.

    Est-ce qu'une fonction du genre: Windows(*jesaispasquoi*.xls).activate existerait ?

    Quelqu'un a-t-il une solution pour m'aider.

    Merci

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    dans la collection Workbooks, tu trouveras tous les classeurs ouverts dans cette instance d'excel.

    Au delà de ça, bonne chance pour trouver celui que tu cherches.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    For Each wb In Workbooks
     Debug.Print wb.Name
    Next
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 35
    Par défaut
    Merci Godzestla pour ta réponse,

    Donc, imaginons que je n'aie que celui qui execute la macro et celui qui doit recevoir les modifications, ça devrait le faire. Plus qu'à mettre le premier nom trouvé en variable et j'aurai ma solution...

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Oui,

    dans ce cas de figure, si le nom est <> de Thisworkbook.name, alors tu as ce que tu cherches.

    Mais attention au add-ins (XLA et XLS) ouverts par défaut.

    Mieux vaux tester avant pour être bien certain qu'il n'y a pas d'autres classeurs ouverts.

    Tu peux aussi filtrer sur le chemin du classeur en utilisant .Fullname.

    Bonne chance.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 35
    Par défaut


    Merci pour l'aide... j'ai trouvé ce que je cherchai... et tout fonctionne...

    Nickel

    Pour info (si cela peut être utile à qqun)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim WB As String
    If Workbooks.Count = 2 Then
    For i = 1 To 2
    If Not Workbooks(i).Name = ThisWorkbook.Name Then WB = Workbooks(i).Name
    Next i

  6. #6
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    J'aime mieux comme ceci, perso :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim WB As String
    If Workbooks.Count = 2 Then
    For i = 1 To 2
    If Workbooks(i).Name <> ThisWorkbook.Name Then WB = Workbooks(i).Name
    Next i

  7. #7
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Bonjour,

    Juste pour donner la solution que j'utilise pour pas m'embêter avec les XLA et autres que Godzestla indique.
    L'idée, j'affecte à une variable le fichier en cours (donc celui avec la macro) ensuite avec le Getopenfilename, l'utilisateur ouvre le fichier voulu et devient donc le Workbook actif qu'on peut donc aussi affecter à une variable, et voilà...

    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
    Sub BonFichier()
    Dim WkbS As Workbook, WkbC As Workbook
    Dim LeFichier As String
     
    Set WkbS = ThisWorkbook 'Affecte à WkbS (source) le fichier actif, qui contient la macro
     
    LeFichier = Application.GetOpenFilename("Fichier Excel (*.xls*), *.xls*")
    If LeFichier <> "False" Then
        Application.Workbooks.Open LeFichier
        Set WkbC = ActiveWorkbook 'Affecte la variable ou fichier qui vient d'être ouvert, donc de l'utilisateur
    End If
     
    'A partir d'ici tu peux utiliser les variables WkbS et WkbC
     
    End Sub
    A+

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

Discussions similaires

  1. Activer un classeur ouvert sans connaitre son nom
    Par djjilou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/04/2012, 17h47
  2. supprimer un raccourci sans connaitre son nom !
    Par MIKKA dans le forum Windows
    Réponses: 4
    Dernier message: 26/02/2009, 17h01
  3. Instancier une classe sans connaitre son nom
    Par Molkobain dans le forum Langage
    Réponses: 8
    Dernier message: 16/02/2009, 14h49
  4. modifier une propriété sans connaitre son nom
    Par cyberchand dans le forum C#
    Réponses: 2
    Dernier message: 17/04/2007, 16h17
  5. Comment ouvrir un fichier sans connaitre son nom
    Par APoLLoN1234 dans le forum C++
    Réponses: 8
    Dernier message: 10/09/2006, 18h04

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