VBA excel erreur d'exécution '9'

Bonjour,

J'ai créé une macro excel qui me permettait de reprendre les informations (nom du sujet, journaliste et technicien) d'un tableau principal pour les placer dans deux tableaux (JT et JT+). Donc, le nom du sujet (reportage) était associé à un journaliste et à un technicien.

J'ai testé la macro plusieurs fois et tout semblait très bien fonctionner. Mais maintenant, j'ai l'erreur suivante qui apparaît : "erreur d'exécution '9' l'indice n'appartient pas à la sélection. --> erreur à la ligne : "If Cells(i + 1, x) <> "" Or Cells(i + 2, x) <> "" Then tabCol(y) = x: y = y + 1" (voir programme ci-dessous)

Pq est-ce que ça ne fonctionne plus alors que tout fonctionait très bien ?

Merci pour votre aide

------------
Dim tabCol(50), x, y As Integer

'Réinitialisation du tableau
For x = 0 To 50
tabCol(x) = 0
Next

y = 0 'Première cellule du tableau
j = 650 'Première ligne du tableau JT

For i = 8 To 400 Step 8

'Remplissage du tabCol avec les n° de colonnes remplies
For x = 3 To 26
If Cells(i + 1, x) <> "" Or Cells(i + 2, x) <> "" Then tabCol(y) = x: y = y + 1
Next x

If Cells(i + 7, 3).Value = "JT" Or Cells(i + 7, 4).Value = "JT" Or Cells(i + 7, 5).Value = "JT" Or Cells(i + 7, 6).Value = "JT" Or Cells(i + 7, 7).Value = "JT" Or Cells(i + 7, 8).Value = "JT" Or Cells(i + 7, 9).Value = "JT" Or Cells(i + 7, 10).Value = "JT" Or Cells(i + 7, 11).Value = "JT" Or Cells(i + 7, 12).Value = "JT" Or Cells(i + 7, 13).Value = "JT" Or Cells(i + 7, 14).Value = "JT" Or Cells(i + 7, 15).Value = "JT" Or Cells(i + 7, 16).Value = "JT" Or Cells(i + 7, 17).Value = "JT" Or Cells(i + 7, 18).Value = "JT" Or Cells(i + 7, 19).Value = "JT" Or Cells(i + 7, 20).Value = "JT" Or Cells(i + 7, 21).Value = "JT" Or Cells(i + 7, 22).Value = "JT" Or Cells(i + 7, 23).Value = "JT" Or Cells(i + 7, 24).Value = "JT" Or Cells(i + 7, 25).Value = "JT" Or Cells(i + 7, 26).Value = "JT" Then
Cells(j, 1).Value = "Sujet " & j - 649
Cells(j, 3).Value = Cells(i + 1, 1).Value & " - Journaliste : " & Cells(i + 1, tabCol((i - 8) / 8)).Value & " , Technicien : " & Cells(i + 2, tabCol((i - 8) / 8)).Value
Else: j = j - 1
End If
j = j + 1 'Passer à la ligne suivante du tableau JT

Next

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    La première boucle effectue 50 passages,
    la deuxième boucle effectue 23 passages, dans le cas ou
    la condition du if est vrai, il y aura 50 * 23 fois que l'instruction
    y = y + 1

    et tabcol(y) depasse la plage ! y n'est jamais remis a zéro ?

    Lupin