Target.Row introuvable

Bonjour,

Je n'arrive pas à récupérer le n° de ligne correspondant à ma Target.

L'objet Target.Row semble introuvable mais je ne comprend pas bien pourquoi?

Le Fichier test ci-joint reprend le code suivant :

Sub test()
derln = Sheets("Feuil1").Range("D" & Rows.Count).End(xlUp)(1).Row
plage = Range("D2:D" & derln)
    If Range("A1") = "test" Then
        For Each Target In plage
            If Right(Target, 3) = "(2)" Then
                Range("A2").Value = Target.Row
                'Target.EntireRow.Insert Shift:=xlDown
            End If
        Next
    End If
End Sub

Merci d'avance pour votre aide

9test.xlsm (14.79 Ko)

Bonsoir Nairda,

Il y a confusion entre la plage (le range) et le tableau des valeurs de la plage.

Quand vous écrivez plage = Range("D2:D" & derln) , plage devient un tableau à une colonne et autant de lignes que Range("D2:D" & derln). Ce tableau contient toutes les valeurs de la plage. plage(1,1) va contenir A, plage(2,1) va contenir SQ, plage(3,1) va contenir DQS, etc. Quand vous allez parcourir plage dans la boucle, vous allez boucler sur les valeurs du tableau plage.

Une valeur est une grandeur (texte, nombre, erreur, vide, etc). Une valeur ne fait référence à aucune cellule et donc à aucune ligne.

Mais si vous aviez écrit set plage = Range("D2:D" & derln), alors plage devient un objet qui fait bien référence à l'ensemble des cellules contenues dans plages (et non à leurs valeurs). Il manquait juste ce petit mot (set) mais qui change tout.

Bonsoir,

J'ajouterai à ce qui vient d'être dit, la remarques suivante :

Le mieux est de toujours de définir vos variables. Si vous aviez posé : "Dim plage as range", vous auriez eu une erreur de compilation qui vous aurait alerté. Toute variable non définie est toujours de type "Variant".

Avec ce type de variable, votre instruction :

plage = Range("D2:D" & derln)

est interprétée comme :

plage = Range("D2:D" & derln).Value

Merci d’avoir pris le temps de me répondre! Sur vos conseils, je m’en vais faire un tour du côté des cours VBA du site (il serait temps !).

Sujet clos.

Rechercher des sujets similaires à "target row introuvable"