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
A voir également:
- Erreur "i n'appartient pas à la selection "
- A qui appartient ce numéro - Guide
- I love pdf avis ✓ - Forum PDF
- O ou i pour allumer - Forum Word
- Comment écrire le symbole On/Off - Forum Facebook
- I-info - Télécharger - Médias et Actualité
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.
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
Set principal = ThisWorkbook
principal.Sheets(2).Activate