Erreur "i n'appartient pas à la selection "
SalmaZ
Messages postés
6
Statut
Membre
-
SalmaZ Messages postés 6 Statut Membre -
SalmaZ Messages postés 6 Statut Membre -
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
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
2 réponses
-
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. -
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