Erreur "i n'appartient pas à la selection "

Fermé
SalmaZ Messages postés 6 Date d'inscription vendredi 10 mai 2013 Statut Membre Dernière intervention 24 mai 2013 - 10 mai 2013 à 12:05
SalmaZ Messages postés 6 Date d'inscription vendredi 10 mai 2013 Statut Membre Dernière intervention 24 mai 2013 - 24 mai 2013 à 09:45
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 samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
10 mai 2013 à 12:44
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 vendredi 10 mai 2013 Statut Membre Dernière intervention 24 mai 2013
10 mai 2013 à 14:57
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 samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
10 mai 2013 à 15:21
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 vendredi 10 mai 2013 Statut Membre Dernière intervention 24 mai 2013
10 mai 2013 à 15:52
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 samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
10 mai 2013 à 16:04
faire un Range(cells(1,3),cells(1,65536)).ClearContents
Ca devrait marcher.
0
SalmaZ Messages postés 6 Date d'inscription vendredi 10 mai 2013 Statut Membre Dernière intervention 24 mai 2013
24 mai 2013 à 09:45
Merci scinarf
0