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 :

Erreur 9 n'appartient pas à la selection


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité(e)
    Invité(e)
    Par défaut Erreur 9 n'appartient pas à la selection
    Bonjour à tous,

    Je viens avec une erreur toute basique, mais je n'arrive pas à voir d'où vient le problème...

    J'explique : en gros j'ai un fichier disponible sur l'intranet qui recense les employés, j'utilise cette base dans un de mes fichiers. S'ouvrant en lecture seul, je suis obligé de l'enregistrer sous afin d'utiliser les données.

    Donc en gros : J'ouvre le classeur (1), à l'ouverture il va chercher l'annuaire, classeur(2),le sauvegarde dans un endroit bien précis sous un nom bien précis. Ensuite il copie une plage de cellule de la feuille (2) du classeur(2) vers ma feuille(1) du fichier d'origine classeur(1).

    J'ai fait un fichier excel test qui fonctionne parfaitement avec une userfom et commandbutton pour le lancer, mais une fois dans le "vrai" et au « workbook_Open », ça me met l'erreur, alors que tous est bien nommé... Enfin voila le code :

    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
    21
    22
    Private Sub Workbook_Open()
     
        Dim Chemin As String, Reponse As Boolean
        Dim Classeur_Maitre As String
        Dim Classeur_Slave As String
     
        Application.DisplayAlerts = False
     
       Classeur_Maitre = "Copie de Ficher Création.xls"
     
       Application.Workbooks.Open ("http://xxx/yyyy/zzzz/Annuaire.xls")
       ActiveWorkbook.SaveAs Filename:="S:\99-Commun-tmp\Clem F\Annuaire Save\annuaire.xls"
       Classeur_Slave = "annuaire.xls"
     
    Workbooks(Classeur_Slave).Sheets(2).Range("A1:Z1000").Copy Workbooks(Classeur_Maitre).Sheets(6).Range("A1")
     
                  Workbooks(Classeur_Slave).Close savechanges:=False
     
              MsgBox "Annuaire à jour"
     
    UserForm1.Show
    End Sub
    Le message d’erreur se situe sur cette ligne là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(Classeur_Slave).Sheets(2).Range("A1:Z1000").Copy Workbooks(Classeur_Maitre).Sheets(6).Range("A1")
    Alors que lorsque je passé ma souris sur les classeur slave ou maitre, il m’indique bien les bon .xls…

    Voilà, si vous avez une idée de mon erreur… Merci !

    Je précise que j'utilise les sheets(x) car le nom de la feuille de l'annuaire change régulièrement, mais ne change pas de place.

  2. #2
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    bjr,

    une fois en debug, vérifier lequel des deux plante :

    en tapant dans la fenêtre d'exécution (CTRL+G)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?Workbooks(Classeur_Slave).Sheets(2).Name
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?Workbooks(Classeur_Maitre).Sheets(6).Name
    on peut aussi vérifier le nombre de feuilles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?Workbooks(Classeur_Slave).Sheets.Count
    Une petite interrogation en regardant les noms des classeurs :
    tu copies de Classeur_Slave vers Classeur_Maitre
    ça ne semble pas logique (juste à la vue des noms), n'est-ce pas l'inverse?

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Alors j'ai fais tous les test que tu viens de me proposer, à chaque fois j'ai l'erreur 9 n'appartient pas à la selection, lorsque je demande quelque chose sur le Classeur_Maitre

    Sinon oui c'est bien ça, même si les noms prêtes à confusion.

    J'ai fais les tests :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ?Workbooks("Copie de Fichier Création").Name
    ?Workbooks(Classeur_Maitre).Name
    ?Workbooks("Copie de Fichier Création").Sheets.Count
    ?Workbooks(Classeur_Maitre).Sheets.Count
    ?Workbooks("Copie de Fichier Création").Sheets(6).Name
    ?Workbooks(Classeur_Maitre).Sheets(6).Name
    J'ai toujours eu une erreur 9...

    Alors que concernant le Classeur_Slave toutes les infos sont bonnes.

    Le plus bizarre c'est lorsque je survole le code avec la souris, en mode debug, vba me nomme les Classeur_Slave et Classeur_Maitre, de la bonne manière !



    Est-ce que ça pourrait venir du fait que j'exécute ce code à l'ouverture du classeur?

  4. #4
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Le classeur maître est-il bien ouvert??

    Tu peux aussi vérifier en debug :

    Le nombre de classeurs ouverts :
    Le nom des classeurs ouverts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ?workbooks(1).Name
    ?workbooks(2).Name
    ....

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    Réponse :

    ?workbooks(2).Name
    annuaire.xls
    ?workbooks(1).Name
    Copie de Fichier création.xls

    Donc oui tout est bien ouvert, de plus, la macro est dans Classeur_Maitre...

    En début de code, je pourrais dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Classeur_Maitre = ThisWorkbooks
    Au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Classeur_Maitre = "Copie de Ficher Création.xls"
    Mais je voulais être sur que la macro prenne le bon fichier...

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Bon je rajoute un message, car ça fonctionne maintenant....

    J'ai fais un copier coller de mon fichier test... Enfin maintenant il faut essayer de savoir pour quoi ça, cela fonctionne :

    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
        Dim Chemin As String, Reponse As Boolean
        Dim Classeur_Maitre As String
        Dim Classeur_Slave As String
     
        Application.DisplayAlerts = False
     
       Classeur_Maitre = ActiveWorkbook.Name
     
       Application.Workbooks.Open ("http://xxx/yyy/zzz/Annuaire.xls")
       ActiveWorkbook.SaveAs Filename:="S:\99-Commun-tmp\Clem F\Annuaire Save\annuaire.xls"
       Classeur_Slave = "annuaire.xls"
       Workbooks(Classeur_Slave).Sheets(2).Range("A1:Z1000").Copy Workbooks(Classeur_Maitre).Sheets("Annuaire").Range("A1")
     
    '              Workbooks(Classeur_Maitre).Activate
                  Workbooks(Classeur_Slave).Close savechanges:=True
    '
    et pas ça :

    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
        Dim Chemin As String, Reponse As Boolean
        Dim Classeur_Maitre As String
        Dim Classeur_Slave As String
     
        Application.DisplayAlerts = False
     
       Classeur_Maitre = "Copie de Ficher Création.xls"
     
       Application.Workbooks.Open ("http://xxx/yyyy/zzzz/Annuaire.xls")
       ActiveWorkbook.SaveAs Filename:="S:\99-Commun-tmp\Clem F\Annuaire Save\annuaire.xls"
       Classeur_Slave = "annuaire.xls"
     
    Workbooks(Classeur_Slave).Sheets(2).Range("A1:Z1000").Copy Workbooks(Classeur_Maitre).Sheets(6).Range("A1")
     
                  Workbooks(Classeur_Slave).Close savechanges:=False
     
              MsgBox "Annuaire à jour"
     
    UserForm1.Show



    Ça doit venir du fait que je passe de la sheets("Annuaire") à la Sheets(6) qui fait foirer, hors elle est belle et bien afficher comme "feuil6" dans la fenetre de gauche sous vba...

  7. #7
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Classeur_Maitre = "Copie de Fichier Création.xls"
    avec le i manquant ça marchera mieux

Discussions similaires

  1. [Toutes versions] L'indice n'appartient pas à la selection [ Erreur '9']
    Par blayck972 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/11/2012, 08h24
  2. messaged'erreur: l'indice n'appartient pas à la selection
    Par erlerwade dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/04/2012, 19h26
  3. l'indice n'appartient pas à la selection erreur 9
    Par sof78 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/08/2011, 11h19
  4. [XL-2003] Erreur '0' : l'indice n'appartient pas à la selection
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/04/2010, 15h51
  5. Erreur d'execution '9'. L'indice n'appartient pas à la selection
    Par goby45 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/02/2010, 15h09

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