Erreur "i n'appartient pas à la selection "

SalmaZ Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
SalmaZ Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je suis débutante en vba et je n'arrive pas à résoudre ce problème. On me dit que l'indice i n'appartient pas à la séléction.

Merci.

Sub compareSheets()
Application.ScreenUpdating = False

Dim i As Integer
Dim j As Integer
Dim cmp As Integer
Dim nbLignes1 As Integer
Dim nbLignes2 As Integer

Worksheets("Données CSV").Cells.Interior.Pattern = xlNone


nbLignes1 = Worksheets("Données CSV").Range("A65536").End(xlUp).Row
nbLignes2 = Worksheets("Données Apollo").Range("A65536").End(xlUp).Row

For i = 1 To nbLignes1
cmp = 0

For j = 1 To nbLignes2
If Worksheets("Données CSV").Range("E" & i + 2).Value = Worksheets("Données Apollo").Range("A" & j + 8).Value Then
cmp = cmp + 1
End If
Next j

If cmp = 0 Then
Worksheets("Données CSV").Rows(i).Interior.ColorIndex = 3
End If

Next i



Application.ScreenUpdating = True
End Sub
A voir également:

2 réponses

scinarf Messages postés 1119 Date d'inscription   Statut Membre Dernière intervention   252
 
Bonjour,

Je dirai normal ...

I va de 1 à 65536 or dans votre test vous faites i+2 donc 65538 qui ne doit probablement pas exister.

Question :

êtes vous obligée de parcourir l'ensemble du fichier Excel ?

Ceci :
If Worksheets("Données CSV").Range("E" & i + 2).Value = Worksheets("Données Apollo").Range("A" & j + 8).Value Then
peut être remplacé par ceci:
If Worksheets("Données CSV").cells(5,i+2) = Worksheets("Données Apollo").cells(1,j+8) Then

Personnellement je prefère utiliser Cells que Range, cela permet une navigation en ligne et en colonne plus facilement.

Pour que votre programme marche sans soucis vous pouvez ajouter :
"if(i +2 <= 65536) then "
juste avant la 2eme boucle for.

Si vous avez d'autre question ne pas hésiter.
1
SalmaZ Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup scinarf mais le problème ne venait pas de là finalement. Excel ne reconnaisait pas la Worksheets("Données Apollo"). J'ai du passer par :

Set principal = ThisWorkbook
principal.Sheets(2).Activate
0
scinarf Messages postés 1119 Date d'inscription   Statut Membre Dernière intervention   252
 
Si tu souhaites manipuler le nom tu peux toujours faire ceci :

dim NomFeuille as string

NomFeuille = sheets(2).name

sheets(Nomfeuille).cells(.......)
0
SalmaZ Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Merci scinarf.

Sais tu comment réinitialiser une feuille. J'ai un tableau dynamique dans lequel je récupere des données. Je voudrai créer un bouton qui me permet de supprimer le tableau de la ligne 3 jusqu'a la dernière ligne et de la colonne 1 à la derniere colonne. Peux-tu m'aider ?
0
scinarf Messages postés 1119 Date d'inscription   Statut Membre Dernière intervention   252
 
faire un Range(cells(1,3),cells(1,65536)).ClearContents
Ca devrait marcher.
0
SalmaZ Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Merci scinarf
0