Erreur d'exécution '9': L'indice n'appartient pas à la sélection

Bonjour tout le monde,

Je travaille sur un projet Excel dans lequel je dois utiliser des macro, seulement je suis débutante et j'aimerai avoir votre aide

Contexte: Pour avoir plus facile dans mon projet, j'ai copié les infos de ma feuille dans un array --> Arr_DataSource() et pour accéder aux données, il suffit de faire Arr_DataSource(i, j) où i= N° ligne et j= N° colonne.

Je souhaiterai avoir le nombre d'occurrence d'un chiffre dans la colonne "J" de mon array. Voici le code que j'ai écrit

MonthRuns = 0

    For i = 2 To LineCount  'LineCount est le numéro de la dernière ligne du tableau
        If Arr_DataSource(i, 10) Like Arr_DataSource(2, 10) Then
        MonthRuns = MonthRuns + 1
        End If
    Next

Mon problème est que lors de l'exécution, j'ai une Erreur d'exécution '9': L'indice n'appartient pas à la sélection

Pouvez-vous m'aider ? Merci d'avance

Bonjour,

Comment as-tu défini Arr_DataSource ? et comment Arr_DataSource est-il alimenté par les données du tableau ?

Bonjour,

Pour savoir le nombre d'occurrences, tu peux utiliser la fonction CountIf sur une plage plutôt qu'une boucle, la fonction étant compilée, elle est très rapide. Dans l'exemple ci-dessous, c'est le chiffre 1 qui est recherché dans la colonne J :

Sub Test()

    Dim Plage As Range

    With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 10), .Cells(.Rows.Count, 10).End(xlUp)): End With
    MsgBox Application.CountIf(Plage, 1)

End Sub

Bonjour,

Comment as-tu défini Arr_DataSource ? et comment Arr_DataSource est-il alimenté par les données du tableau ?

Bonjour Steelson,

j'ai un problème au niveau de la dernière partie de ce code

Sub Scripts()
'
' Scripts Macro
'

'Variables & Definitions:
    Dim LineCount As Integer 'to count the amount of lines
    Dim CellContent As String 'to make test if countent is empty
    Dim Selection As String
    Dim Arr_DataSource(), DsLine As Long, DsCol As Integer
    Dim Period As Integer
    Dim Domain As String
    Dim TRuns As Integer
    Dim MonthRuns As Integer
    Dim TCompleted As Integer
    Dim TFailed As Integer
    Dim Taboarded As Integer

'Transfort the date format from 01/01/2018 to 201801
    Sheets("Data").Select
    Range("J2:J" & Range("A" & Cells.Rows.Count).End(xlUp).Row).FormulaR1C1 = _
    "=(YEAR(RC[-9])*100)+MONTH(RC[-9])"
    'MsgBox (Range("J2"))

'initiation
    LineCount = 2
    Selection = "A" & LineCount
    Sheets("Data").Select
   ' MsgBox ("Selection " + Selection)
    Range(Selection).Select
    CellContent = Range(Selection)
    'MsgBox ("CellContent " + CellContent)
' Selection is at 1st Selection of the array
' Loop starts to count the amount of records in the array

    Do While CellContent <> ""
        LineCount = LineCount + 1
        Selection = "A" & LineCount
        Range(Selection).Select
        CellContent = Range(Selection)
    Loop
    'MsgBox ("Selection " + Selection)
    'MsgBox ("CellContent " + CellContent)

'The array starts at A2 and ends at LineCount -1
    LineCount = LineCount - 1
    Selection = "A2:K" & LineCount
    'MsgBox ("Array Sellection " + Selection)
    Arr_DataSource = Range(Selection)
    'MsgBox (Arr_DataSource(758, 10)) 'test if the period is ok in the array

' Rechercher le nombre d'occurrence de la date contenu dans Arr_DataSource(2, 10)

    MonthRuns = 0

    For i = 2 To LineCount
        If Arr_DataSource(i, 10) Like Arr_DataSource(2, 10) Then
        MonthRuns = MonthRuns + 1
        End If
    Next
    MsgBox (TRuns)

  End Sub

Bonjour,

Pour savoir le nombre d'occurrences, tu peux utiliser la fonction CountIf sur une plage plutôt qu'une boucle, la fonction étant compilée, elle est très rapide. Dans l'exemple ci-dessous, c'est le chiffre 1 qui est recherché dans la colonne J :

Sub Test()

    Dim Plage As Range

    With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 10), .Cells(.Rows.Count, 10).End(xlUp)): End With
    MsgBox Application.CountIf(Plage, 1)

End Sub

Bonjour Theze,

Merci pour ta réponse, seulement je ne travaille par sur une feuille mais un tableau

Si tu fais ceci :

Selection = "A2:K" & LineCount

tu affectes la valeur A2:Kx aux cellules sélectionnées !!

Change le terme Selection qui est "réservé" par excel !

Attention aussi aux indices x et y !!

Voici un outil simple ...

Si tu fais ceci :

Selection = "A2:K" & LineCount

tu affectes la valeur A2:Kx aux cellules sélectionnées !!

Change le terme Selection qui est "réservé" par excel !

Merci pour ta remarque, tu as raison, je vais modifier le terme Selection

Par ailleurs j'ai résolu le problème; C'était la limite supérieure de ma boucle for qui était plus grande que la taille du tableau

Rechercher des sujets similaires à "erreur execution indice appartient pas selection"