L'indice n'appartient pas a la sélection

Bon matin !!

J'ai créer une macro et il m'arrive assez 'aléatoirement' ce message d'erreur

Erreur d'exécution :

l'indice n'appartient pas a la sélection

l'erreur est apparu après que j'ai changer la suite du code. Suite à l'erreur j'ai mis le reste du code en commentaire mais l'erreur se poursuit. Quelqu'un peut il m'aider ??

Merci de votre temps,

Gabriel

MsgBox "début"
'___
With ActiveWorkbook.Worksheets("Vue d'ensemble")
max = Range("B5").End(xlDown).Row
nbcells = Application.CountA(Range("B2:B" & max))
End With

'___
Set dico = CreateObject("Scripting.Dictionary")
nb = 0

For j = 5 To nbcells
    If e.Cells(j, 2).Interior.Color = RGB(207, 228, 231) Then
        nb = nb + 1
        dico(j) = ""            

    End If
Next

k = dico.keys
mess = ""

tt = k(0) + 6      
'MsgBox tt
suppFin = k(1) - 1 'l'erreur m'indique cette ligne la !!
'MsgBox suppFin

Bonjour,

Voici un essai de modification du code :

sub test()
dim t()
With ActiveWorkbook.Worksheets("Vue d'ensemble")
    dl = .Range("B" & .rows.count).End(xlup).Row
    nbcells = Application.CountA(.Range("B2:B" & dl))
    For j = 5 To nbcells
        If .Cells(j, 2).Interior.Color = RGB(207, 228, 231) Then 'en supposant que e est "vue d'ensemble"
            n = n + 1: redim preserve t(1 to n)
            t(n) = j            
        End If
    Next
End With
if n > 0 then tt = t(1) + 6      
'MsgBox tt
if n > 1 then suppFin = t(2) - 1 'l'erreur m'indique cette ligne la !!
'MsgBox suppFin
end sub

J'ai enlevé le dico qui ne sert à rien ici car aucun doublon possible et pas de gestion de couple key/item. J'ai mis un tableau à la place.

J'ai supposé que la variable e était la feuille "vue d'ensemble".

Est-ce que la colonne B contient des formules ? La variable nbcells a-t-elle un réel intérêt ?

L'erreur venait sans doute du fait que le dico ne contenait qu'un élément et donc que le tableau avec les clés (variable k), s'arrêtant à 0, n'avait pas d'élément 1.

Cdlt,

Merci beaucoup !!

La variable e est bien la feuille "vue d'ensemble" et oui, on trouve des formules sur la colonne B et nbcells et important pour la suite du programme.

Je vais relire sur les différences entre tableaux et dictionnaire pour éviter de refaire la même erreur !!

Merci encore et bonne journée,

Bonjour,

Si la colonne B contient des formules, nbcells devrait valoir dl - 1 selon toute vraisemblance.

Et c'est étonnant de voir une boucle for j = 5 to nbcells. Je n'ai pas vu le fichier mais il m'aurait paru normal de voir for j = 2 to dl, d'où ma question.

Le dictionnaire sert principalement à gérer les doublons. Etant donné que les clés sont les numéros de ligne, il ne peut y en avoir (de doublons). Je pense donc qu'il est préférable d'utiliser une variable tableau (qui sert également à stocker plusieurs éléments) pour la rapidité de l'exécution et pour éviter toute confusion.

Merci, très bonne fin de journée à vous aussi !

Rechercher des sujets similaires à "indice appartient pas selection"