La méthode 'Range' de l'objet '_Worksheet' a échoué

Bonjour,

J'ai écrit un code permettant de faire un listing de tâches à réaliser en affichant 3 états différents de la tâche : non commencée, en cours et réalisée. J'ai modifié mon code afin d'afficher la date de début de la tâche dans la colonne "E" lorsque dans la colonne "C" je rentre "En cours" et la date de fin de tâche dans la colonne "F" lorsque je rentre "x" dans la colonne "C". Lorsque je remplis la colonne "C", l'erreur "La méthode 'Range' de l'objet '_Worksheet' a échoué" apparaît et je n'arrive pas à la résoudre. Quelqu'un peut-il m'aider svp?

Ci-joint le fichier en question, les captures d'écran de l'erreur et du code en question.

Merci d'avance

Cordialement

code vba suivi erreur code vba

bonsoir

sous excel 365 je n'arrive pas a reproduire ton dysfonctionnement.... ou je ne sais pas m'y prendre avec ton fichier....

mais j'aurais une remarque.... tu utilise une fonction événementielle, pourquoi refaire toutes les lignes alors que tu connais pas ligne qui vient d'etre changée... avec target.row..... a mon avis c'est une perte de temps d’exécution du code.... mais bon....

fred

bonjour

salut au passage Fred

a priori tu n'as pas besoin de VBA

joins un fichier avec des valeurs et des explications

Salut à toi Jmb....

Fred

Merci pour vos réponses,

Je ne sais pas comment faire autrement.

j'ai oublié de préciser qu'il faut être sur la page "matériel manquant"

En fait, dans la colonne "B", je rentre ma tâche. La date de prise en compte s'affiche en "A" et la ligne est rouge tant que dans "C" la case est vide. Cela signifie que la tâche n'est pas commencée. Quand je commence ma tâche, je rentre dans la colonne "C" "En cours", la ligne devient bleue et la date de début de tâche doit s'afficher à la colonne "E" mais mon erreur apparaît. Une fois la tâche terminée, je rentre dans "C" "x", la ligne devient verte et la date de fin doit s'afficher dans la colonne "F" mais l'erreur apparaît là aussi.

après réflexion.... je penses que le problème vient justement du fait que tu refais toutes les lignes... car tu fais un appel récursif de cette fonction worksheet.change...

pour palier au problème il faudrait mettre en début de code

Application.EnableEvents = False

et a la fin...

Application.EnableEvents = False

Fred

Super! Après légère optimisation de mon code ça fonctionne comme je le souhaite.

Je vous remercie!! Auriez-vous une explication à me fournir car je ne comprends pas bien le problème que j'avais et en quoi cette fonction m'a permis de le résoudre s'il vous plaît ?

Re bonsoir

comme je l'ai déjà dis... c'est lié au fait qu'il y a un appel récursif de la fonction worksheet_change.

je m'explique... il y a une modification du contenu d'une cellule, on appel la fonction worksheet_change. dans le code, tu modifie la couleur d'une cellule en partant de la ligne 1..; donc on appel la fonction worksheet_change... qui va changer la couleur d'une cellule de la ligne 1 et donc refaire un appel de la fonction worksheet_change,....; et ainsi de suite (boucle "infinie"), jusqu’à remplir la mémoire disponible jusqu'au plantage....

l'instruction application.enableevents = false

désactive le lancement de la fonction worksheet_change sur changement d'une nouvelle cellule de la feuille...

mais si on veut que cela re fonctionne à la fin il ne pas pas oublié de réactivé les événements...

A+

Fred

Rechercher des sujets similaires à "methode range objet worksheet echoue"