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 l'indice n'appartient pas à la sélection [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Points : 73
    Points
    73
    Par défaut Erreur 9 l'indice n'appartient pas à la sélection
    Bonjour

    La macro réalisé a pour objectif de parcourir des onglets et de commencer à faire des actions que sur des onglets commençant par "toto" par exemple.

    Lorsque je réalise le parcours de ces onglets dans une feuille excel le premier onglet commençant par "toto" effectue correctement son action . En revanche lorsque j'entame le 2e onglets l'action s'arrete et m'averti que
    "J'ai une erreur 9 :l'indice n'appartient pas à la sélection"

    Dans un classeur chaque onglets sont protegé donc j'ai crée une méthode qui leve la protection d'un classeur ceci est fonctionnel.

    Voici la manière que j'ai codé pour effectuer le parcours des onglets dans un classeur

    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
     
     
       'afficher les onglets toto
                Dim Current  As Worksheet
                  For Each Current In Worksheets
     
                     If Left(Current.Name, 5) = "Toto" Then
     
                          Worksheets(Current.Name).Select // erreur enclenché au deuxieme onglet commençant par Toto. 
                           ' réalise un traitement 
                            Current.Visible = False //rendre l'onglet invisible
                      Else
                           Current.Visible = False
                       End If
     
                     Next Current
    Je ne vois pas de quel manière je pourrais me débloquer .
    dans le débugger je constate bien que le programme effectue le parcours des onglets
    Je pensais donc à des solutions qui sont de masquer l'onglet un fois que c'est traité . et ensuite j'avais opté à positionner l'instruction ActiveSheet.name en début de traitement mais ceci ne semble pas fonctionner

    Si vous avez une idée je suis preneur
    Merci
    Stardeus

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Pour masquer toutes le feuilles commençant par Toto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub MasquerToto()
    Dim Current As Worksheet
     
    For Each Current In ThisWorkbook.Worksheets
        Current.Visible = UCase(Left(Current.Name, 4)) <> "TOTO"
    Next Current
    End Sub
    Attention, dans ton classeur il faudra qu'au moins une feuille ne commence pas par Toto

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    Le masquage ne semble pas poser probleme dans ce cas ci . Mais c'est le fait de lire un autre onglet commençant par "toto" qui me plante

    Dans mes tests j'ai utilisé un fichier contenant 2 onglets commençant par "toto" ceci ne traitait que le premier et non le 2e. Donc j'ai supprimer le premier onglet manuellement et j'ai relancé la macro ceci a effectué le traitement.

    je ne comprend pas ce que veut dire cette erreur 9. Qu'elle en est la raison ?
    Avez vous une idée ?

    merci
    Stardeus

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu parles de traitement et tu ne montres pas ton code de traitement.
    Je soupçonne que tu fais des Select à des feuilles masquées.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    En fait lorsque je fais le débuggage , les onglets ne correspondant au critères sont masqué et ne sont pas traités et n'entre pas dans la section traitement

    Voici le code de traitement :
    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
    23
    24
    25
     
     
          Dim Current  As Worksheet
    For Each Current In Worksheets
        If Left(Current.Name, 5) = "Toto" Then
             Worksheets(Current.Name).Select // erreur enclenché au deuxieme onglet commençant par Toto. 
      nbligne = Worksheets(Current.Name).Range("G" & Worksheets(Current.Name).Rows.Count).End(xlUp).Row
     
      nbNonEmptyCell = WorksheetFunction.CountA(Worksheets(Current.Name).Rows(6))
     
      For IRange = 0 To 1 Step 2
                            Set Rng1 = Union([G6:G110], [H6:H110])
                            Windows("test").Activate
                            iDest = nbligneDest + 1
                            i = 1
                            Sheets("Extract").Cells(iDest, i).Value = ListBox1.List(iList)
                            For Each c In Rng1.SpecialCells(xlCellTypeVisible, 23)
                                 i = i + 1
                                 Sheets("Extract").Cells(iDest, i) = c
                            Next c
       Next IRange
    Else
       Current.Visible = False
    End If
    Next Current

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Points : 319
    Points
    319
    Par défaut
    Bonjour,

    Le probleme ne viendrait t'il pas de ta ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Windows("test").Activate
    Ecrit plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Windows("test.xls").Activate

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

Discussions similaires

  1. ERREUR N°9 : l'indice n'appartient pas à la sélection avec .visible
    Par saninx dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/05/2015, 10h36
  2. [XL-2010] Erreur 9 l'indice n'appartient pas la sélection
    Par Ardiden31 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/04/2015, 15h42
  3. [XL-2010] Erreur 9 l'indice n'appartient pas la sélection
    Par Ardiden31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/04/2015, 15h26
  4. [XL-2010] erreur '9' l'indice n'appartient pas à la sélection
    Par jad73 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/03/2013, 23h47
  5. [XL-2010] Erreur 9 l'indice n'appartient pas à la sélection
    Par PATDRO dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/08/2012, 23h23

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