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 :

Windows.Activate() -> Erreur d'exécution '9'


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 5
    Par défaut Windows.Activate() -> Erreur d'exécution '9'
    Bonjour à tous !

    J'ai un léger soucis à l'exécution d'une macro et je ne trouve pas la solution.

    Le problème : Dans le code, quand j'essaie d'accéder à un autre document Excel depuis la macro, je reçois une erreur 9 ("L'indice n'appartient pas à la sélection")

    Le code incriminé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    no_semaine = InputBox("Veuillez saisir le numéro de la semaine :", "Fenêtre de saisie")
        name_eflex = "eflex semaine " & no_semaine & ".XLS"
        MsgBox Str(no_semaine)
        MsgBox StrComp(name_eflex, "eflex semaine 32.XLS", vbTextCompare)  ---> Renvoi '0', les deux chaînes sont donc identiques (-1 si Str(no_semaine))
        Windows(name_eflex).Activate                                                ' TEST PASSAGE DOC; À VIRER APRÈS
        Windows("eflex semaine 32.XLS").Activate                                 ' TEST PASSAGE DOC; À VIRER APRÈS
    L'erreur survient aux lignes avec commentaires (Qui, comme indiqué, sont là pour tester l'erreur) alors que la deuxième est le nom très exacte du document ouvert à coté et dans le même classeur.

    Help please, je désespère

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    Salut à toi,

    Pourquoi passer par Windows(index) ? Comme ces fenêtres sont des classeurs Excel, utilise plutôt comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Wb As Workbook 'Tu déclares
     
    Set Wb = Workbooks([Son nom]) 'Si le wb est déjà ouvert, pas du tout conseillé !!
    'Faire plutôt : 
     
    Set Wb = Workbooks.Add 'Pour un nouveau classeur
    Set Wb = Workbooks.Open (Filename:="C:/chemin/Fichier.xls") 'à l'ouverture. TU peux lui rajouter plein de paramètres
     
    'Ensuite, tu peux faire ton 
    Wb.Activate 'sans intérêt
    Dis-moi ce que tu en penses

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 5
    Par défaut @Quentin
    Salut et merci d' accorder de l'attention à mon problème

    Le problème c'est que les documents que ma macro doit exploiter sont des documents "temporaires", il s'agit d'exports d'autres logiciels dans des tableurs qui ne sont pas sauvegardés. Leur nom possède toujours la même structure mais c'est à peu près tout.

    Mais même dans le cas où je veux accéder à un tableau que j'ai moi-même créé et enregistré sur l'ordi, impossible d'y accéder en connaissant son path et son nom.
    C'est surtout ce point qui me gêne vu que je ne peux pas du tout utiliser les données des autres documents.

    À noter, je viens de changer de poste informatique, l'ancien sur lequel je travaillais n'avait pas de soucis d'exploitation d'autres documents et sur les deux machines que j'utilise actuellement le soucis est persistant.
    Je me demandais s'il n'y avait pas un paramétrage de sécurité que j'aurais loupé mais je pense avoir fait le tour sur Excel.

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    En fait, l'erreur 9 provient du fait que le nom spécifié n'est pas correct d'après VBA ou simplement que la fenêtre en question ne fait pas partie de la même instance de l'application Excel.

    En effet, parfois tu as plusieurs instances d'Excel lancées, tu peux le constater car il t'es possible de lancer plusieurs fois l'éditeur VBA en parallèle. En gros :

    1 - Application
    --1.1 workbook A
    ----1.1.1 worksheet
    ----1.1.2 worksheet

    --1.2 workbook B
    ----1.2.1 worksheet
    ----1.2.2 worksheet


    2 - Application
    --2.1 workbook C
    ----2.1.1 worksheet
    ----2.1.2 worksheet
    ----2.1.3 worksheet

    --2.2 workbook D
    ----2.2.1 worksheet
    ----2.2.2 worksheet


    Si tu es dans la seconde instance de l'application, tu pourras uniquement travailler avec les workbooks C et D. Les A et B seront carrément invisibles pour VBA et il te sortira la même erreur.
    Après, comment faire pour voir quand-même ces workbooks ? Je ne sais pas trop... à moins de trouver un moyen de les affecter à une variable dans ta macro, je ne sais pas.

    J'avais oublié la fonction AppActivate, je ne sais pas si elle peut en quoi que ce soit t'aider... Elle permettra uniquement de mettre en avant une fenêtre par son intitulé :

    Si ton bloc-notes est ouvert, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    AppActivate "Bloc-Notes"
    End Sub

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 5
    Par défaut
    Pour le moment, je travaille sur des copies enregistrées des exports et bien placée dans la même application

    Nom : Capture.PNG
Affichages : 3122
Taille : 48,0 Ko

    Avec donc, on peut le voir, le document "GT semaine 32.XLS" (Modifié depuis le premier post de ce topic, il y avait eu une erreur de nommage.)

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    Ah...

    Question bête : si tu boucles dans les windows/workbooks, tu trouves ça aussi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Boucle()
    Dim Wd As Window
    Dim Wb As Workbook
     
    For Each Wd In Application.Windows
        Debug.Print Wd.Caption
    Next Wd
     
    For Each Wb In Application.Workbooks
        Debug.Print Wb.Name
    Next Wb
     
    End Sub
    Après, tu peux peut-être "tricher" et analyser les fenêtres jusqu'à tomber sur celle que tu veux, du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Test()
    Dim Wd As Window
    Dim WdCherchée As Window
     
    For Each Wd In Application.Windows
        If Wd.Caption Like "*GT semaine*" Then Set WdCherchée = Wd : Exit For
    Next Wd
     
    WdCherchée.Activate
     
    End Sub
    Mais bon, c'est de la bidouille... Je suis quand-même curieux de savoir si tu obtiens quelque chose comme ça !

    En fait, j'ai l'impression que tu ne peux simplement pas sélectionner une window par son caption... En passant par Workbooks ça devrait mieux le faire, non ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/08/2015, 09h46
  2. erreur d'exécution '48' sur windows 98 SE
    Par florenzo28 dans le forum Windows 2000/Me/98/95
    Réponses: 1
    Dernier message: 18/02/2006, 22h27
  3. Erreurs d'exécution sous delphi 5
    Par nkd dans le forum Langage
    Réponses: 3
    Dernier message: 06/11/2004, 17h25
  4. [Apache Perl] Erreur à l'exécution de mes cgi
    Par GLDavid dans le forum Apache
    Réponses: 4
    Dernier message: 28/08/2004, 20h23
  5. [windows]associer une extension à un exécutable ..
    Par peppena dans le forum Windows
    Réponses: 2
    Dernier message: 01/06/2004, 18h25

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