Erreur 91 ... mais pas tout le temps

Bonsoir,

j'ai un souci assez bizarre avec une macro.

En voici une brève explication :

J'utilise un point repere dans une feuille pour identifier des lignes et des colonnes. J'ai écrit dans une case PR_DEB

Ensuite, voici l'extrait qui bug :

Dim PR_DEB as Range

   PR_DEB = Cells.find(what:="PR_DEB")
   Ligne1=PR_DEB.Row

Quand je lance la macro, parfois ça marche, parfois pas. Le FIND retourne un NOTHING. Comme s'il ne trouvait pas la cellule qui contient PR_DEB alors qu'elle est bien là. Elle est dans une colonne masqué pour ne pas bouger.

Quand ça bug, ça pointe sur Ligne1.

Des idées ?

Merci

Bonjour,

déjà ça m'étonne que ça fonctionne parfois. Ca devrait être Set PR_DEB = Cells.Find(what:="PR_DEB")
Et quand on fait un .Find, on doit systématiquement contrôler si ça a été trouvé avec : If Not PR_DEB Is Nothing Then
(à moins d'être sûr à 100% de le trouver)

Ensuite .Find ne cherche que dans ce qui est affiché, donc si la colonne est masquée tu es marron.
Si tu connais la colonne tu peux chercher avec Equiv() : lig = Application.Match("PR_DEB", [C:C], 0)

Sinon fais un mixte des 2.
Si tu as Nothing, balaie toutes les colonnes masquées pour y faire un Equiv()
eric

Merci eriiic pour la réponse.

en effet, j'ai juste omis SET quand j'ai tapé le message dans la macro, c'est avec avec la bonne syntaxe.

sinon, pour ce qui est des colonnes masquées, je ne savais pas que ça posait problème. D'autant plus, que ce qui est étonnant, c'est que ça marche mais pas tout le temps !

je test ça demain en affichant les colonnes concernées par les points repères.

Bonjour eriiic

J'ai testé, et il semblerait que le souci soit ça : La colonne cachée !

Ce qui est étrange, c'est que ça marche parfois !!!

PS : Petite question (rien à voir avec le sujet) : Comment peut-on trouver les "End If" des IF et les Next des For dans macro long ?

Je ne sais plus à quoi correspond quoi ! Et j'ai un message d'erreur m'indiquant que mon Next ne correspond à rien, alors que j'ai un For pour lequel je ne vois pas de Next

Bonjour,

il faut que tu prennes l'habitude d'intenter ton code d'une tabulation sur les structures.

Sub exemple()
    For i = 1 To 5
        If a < 3 Then
            b = b + 1
        Else
            b = b - 1
        End If
    Next i
End Sub

Tu pourrais installer https://rubberduckvba.com/ qui est un addin vba gratuit.
Entre autres, tu as un outils d'alignement d'indentation du code.
Si tes For Next, If Endif etc ne sont pas alignés, tu voies tout de suite où ça pêche.

Si tu débutes je te conseille d'aller dans Outils/Options de VBA et de cocher Déclaration obligatoire des variables.
Ca peut te paraitre fastidieux au début de toutes les déclarer (et tant qu'à faire de les typer au plus proche du besoin à cette occasion), mais ça t'évitera des bugs très difficiles à trouver comme une faute de frappe dans le nom d'une variable.
eric

merci beaucoup pour toutes vos réponses et explications.

Rechercher des sujets similaires à "erreur pas tout temps"