Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA - Erreur d'ecécution '9'

  • Initiateur de la discussion nobilis
  • Date de début
N

nobilis

Guest
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
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Tout d'abord petit rappel : Il s'agit d'un forum de partage de connaissance et personne n'a signé de contrat avec obligation de résultat dans l'heure qui suit . :angry:

Bon ceci étant dit, pour ton prob tu es s&ucirc;r que ta valeur y n'arrive pas à 51 par hasard ??
 

Abel

XLDnaute Accro
Bonjour nobilis,

A la louche, je dirais que c'est le 'y' du 'tabCol(y)' qui déborde de ce qui lui est autorisé.

Il lui faut, si c'est ça, un 'Redim tabCol(y)' avec une nouvelle valeur de 'y'.
Ou alors, un 'Dim tabCol(51)' au début.
Essaie déjà avec 51 (tiens, c'est une bonne valeur 51. Arf !)


Abel.
 

Discussions similaires

Réponses
9
Affichages
241
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…