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 d'éxecution 9 : l'indice n'appartient pas à la sélection


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Stagiaire base de données
    Inscrit en
    Mai 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire base de données

    Informations forums :
    Inscription : Mai 2018
    Messages : 23
    Points : 11
    Points
    11
    Par défaut Erreur d'éxecution 9 : l'indice n'appartient pas à la sélection
    Bonjour à tous,

    Voici mon problème : j'ai deux fichiers excel contenant chacun diverses informations sur des achats. Dans chaque fichier on retrouve un code client ( un client est désigné par le même code dans les deux fichiers ). Dans l'un des fichiers, le client est associé à une catégorie. Je souhaite que cette catégorie se retrouve dans l'autre fichier en face du bon client.

    J'ai d'abord utilisé deux boucles for, le code marchait très bien mais, le fichier étant important, le code prenait autour d'1h30 à s'exécuter...
    J'ai alors trouvé une autre façon de faire plus rapide que je ne connaissais pas en fouillant un peu : passer par deux variables de type Variant.

    Cependant, lors de l'exécution du code, survient l'erreur d'exécution 9.
    Voici mon 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
    23
    24
    25
    26
    27
    28
    29
    30
    Sub segmentPersonnesFichierOTC()
    nomClasseur = InputBox("Entrer le nom du classeur contenant les informations sur les OTC")
    Set feuilOTC = Workbooks.Item(nomClasseur).Worksheets.Item(1)
    Dim plage As Range
    Dim v As Variant
    Dim w As Variant
    Dim plage2 As Range
    Dim m As Long
    Dim i As Long
    Dim j As Long
     
    n = WorksheetFunction.CountA(Me.Range("A:A"))
    m = WorksheetFunction.CountA(feuilOTC.Range("A:A"))
    Set plage = Me.Range("A2:K" & n)
    Set plage2 = feuilOTC.Range("A2:G" & m)
    v = plage
    w = plage2
     
    For j = 1 To m
        For i = 1 To n
            If v(i, 1) = w(j, 1) Then
                w(j, 11) = v(i, 7)
             End If
         Next i
    Next j
     
    plage = v
    plage2 = w
     
    End Sub
    Le problème semble venir du " w(j, 11) = v(i, 7) " de la ligne 22.
    Quelqu'un aurait-il une solution à me proposer ?

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Tu utilises la fonction "CountA()" qui te retourne le nombre de cellules non vide en colonne A le problème est que tu définis les plages à partir de A2 donc, arrivé au nombre de lignes retournée par NBVAL() tu te retrouve hors du tableau donc, il te faut retrancher le décalage à savoir ici, 1 si tu commences à A3 ça sera -2 etc... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For j = 1 To m - 1
        For i = 1 To n - 1
            If v(i, 1) = w(j, 1) Then
                w(j, 11) = v(i, 7)
             End If
         Next i
    Next j

  3. #3
    Membre à l'essai
    Homme Profil pro
    Stagiaire base de données
    Inscrit en
    Mai 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire base de données

    Informations forums :
    Inscription : Mai 2018
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Bonjour Theze, merci de ta réponse

    J'ai donc retranché mes compteurs comme tu me l'a conseillé mais le problème persiste.
    Il survient toujours lorsque le programme arrive au "w(j, 11) = v(i, 7)", cependant plusieurs valeurs de i ont été passées, on peut en déduire que le problème ne vient pas de là. Est-ce que tu aurais une idée d'où pourrait venir le problème dans ce cas ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Stagiaire base de données
    Inscrit en
    Mai 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Stagiaire base de données

    Informations forums :
    Inscription : Mai 2018
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Je n'ai rien dit, j'ai trouvé une deuxième erreur venant de mon fichier, mais tu avais quand même raison, sans retrancher le décalage le programme ne pouvait pas marcher quand même. Merci beaucoup pour ton aide

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Mais c'est avec grand plaisir

Discussions similaires

  1. [XL-2010] Erreur d'execution '9' : L'indice n'appartient pas à la sélection
    Par twentycent dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/02/2013, 12h58
  2. Réponses: 3
    Dernier message: 19/06/2012, 16h38
  3. Réponses: 13
    Dernier message: 27/04/2012, 10h57
  4. erreur d'exécution 9, l'indice n'appartient pas à la sélection
    Par Quentin15 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/06/2011, 17h34
  5. [XL-2007] Erreur d'exécution '9' : l'indice n'appartient pas à la sélection
    Par Akhane dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/02/2011, 21h04

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