Modifier nom avec un USF

Cow18, bien d’accord avec vous
Je n’ai d’ailleurs toujours pas compris en quoi la solution de FFO résolvait le souci
Lorsque je regarde ce que j’avais proposé au début, j’aurais pu aussi mettre le On Error… et cela revenait au même résultat
Mè bon, peut-être que j’ai rien compris aussi

Je ne parles pas de la première feuille dans laquelle le nom dans la liste de référence colonne “BK" doit être modifiée et qui fait l’objet de ces lignes de code à cette fin :

Set c = Sheets(« Annees »).[BK1:BK100].Find(Nom, LookIn:=xlValues, Lookat:=xlWhole)

c.Value = TextBox2

Effectivement pour celles-ci celui-ci doit être obligatoirement présent dans l’onglet et la plage cités

Donc pas de ligne d’instruction :

On Error Resume Next

Mais pour les feuilles semaine utilisant la même approche sachant qu’elles n’ont pas obligatoirement toutes le nom qui doit être modifié pas d’autre choix que d’avoir recours à cet artifice

Sinon bug pour celles qui en sont dénuées

Ceci pour gérer une situation normal qui avec l’instruction utilisée engendre un blocage

Jusqu’à ce jour j’ai toujours procédé ainsi avec ce processus sans aucune difficulté avec des traitements qui ont toujours donnés grande satisfaction à mes interlocuteurs

Je ne vois pas en conséquence pourquoi s’en priver

Maintenant chacun voit midi à sa porte

@djn, oui, cela revenait au même résultat, le problème, c’est que FFO a des difficultés à convaincre ses propres convictions. Le “on error” est inutile, même contre-productif ! Il faut utiliser un variable déclaré comme “range”, voir exemple ici dessous. Le c est un range, mais avant le “Find”, il est encore “vide” càd “nothing”. Après ce find, il est devenu une cellule oubien il est encore “nothing”, mais certainement, on n’a pas eu un bug !!! Puis la ligne suivante, il faut justement vérifier si c n’est pas nothing pour remplacer son contenu par la valeur voulue.

Sub Test()
     Dim c     As Range, sReponse

     sReponse = Application.InputBox("quel nom", "Donnez un nom", "FFO", Type:=2)
     If VarType(sReponse) = vbString Then
          Set c = Sheets("semaine01").Range("DJ13:EK21").Find(sReponse, lookat:=xlWhole)     'trouver cellule avec ce contenu
          If c Is Nothing Then               'vérifier si on a trouvé une cellule pareil (la première, s'il y a plusieurs)
               MsgBox "on n'a pas trouvé le nom, mais sans bug !!! "
          Else
               c.Value = "autre valeur"
          End If
     Else
          MsgBox "annulée"
     End If
End Sub  

Maintenant chacun voit midi à sa porte

il y a des gens qui ont des portes assez petites.

oui, cela revenait au même résultat, le problème, c’est que FFO a des difficultés à convaincre ses propres convictions.

Bien venu au club !!!

le problème est que si aucune cellule est trouvée, la macro continue et les lignes VBA qui utilisent ce “c” et causent une erreur qui est ignorée par le “on error resume next” mais les autres lignes sont exécutées normallement. Bon, cela peut avoir des conséquences inattendues. A ce point, il faut suivre 2 paths, une pour c=nothing et l’autre, sinon on se trouve dans quelque chose douteuse. Désolé pour cette remarque, mais c’est la vérité.

Votre “on error resume next” cache l’erreur, uniquement ça, la macro continue et peut faire des choses stupides. Ce serait mieux de faire une gestion d’erreur efficace !

Votre “on error resume next” cache l’erreur, uniquement ça, la macro continue et peut faire des choses stupides. Ce serait mieux de faire une gestion d’erreur efficace !”

Et non dans le cas d’espèce l’erreur cachée et une normalité à gérer celle-ci révèle une situation tout à fait normal que représente l’absence du nom dans différents onglets “semaine”

Si je prend l’exemple du nom “Thierry" on ne le trouve que dans l’onglet “semaine05” nullement dans les autres

Dans ce contexte je préfère nettement l’action de la ligne de code error resume next que d’affronter 4 bug ou comme tu le proposes 4 avertissements successif de l’absence de ce nom dans 4 onglets qui n’est que conforme au contexte des données intégrées

Maintenant chacun est libre de sa méthodologie avec ses conséquences à la clef l’essentiel pour moi étant ceci de la part de l’interlocuteur à l’origine de ce sujet :

“Mais finalement j’ai trouvé la solution grâce au code de FFO.

FFO à ajouter : On Error Resume Next

If Left(Sheets(k).Name, 7) = « semaine » Then

On Error Resume Next

Du coup j’ai vais pareil pour Mois

Set c = Sheets(« Mois »).[BK1:BK100].Find(Nom, LookIn:=xlValues, Lookat:=xlWhole)

On Error Resume Next

Maintenant tout fonctionne correctement et aucun bug.

Merci encore et bonne journée à vous et au Forum”

C’est mon seul objectif à atteindre sa satisfaction et je pense y être largement parvenue au regard de ses propos

Le reste a très peu d’importance pour moi même si nous n’avons pas les mêmes dynamiques

Comme je respecte parfaitement toutes les votres respectez la mienne

Merci

set c = Nothing: Set c = Sheets(k).Range("DJ13:EK21").Find(Nom, LookIn:=xlValues, Lookat:=xlWhole)     'le bug ne se fait pas sur cette ligne
If Not c Is Nothing Then c.Value = TextBox2.value     'ici il faut agir selon c is nothing ou c is a range

ceci est correct d’une manière “Less is more”

Comment est-ce possible que vous répétez vos betîses ? Le “on error” cache votre problème/bug mais n’est pas une solution solide, ce n’est pas une manière correcte de traiter vos données. Et oui, la macro fait qu’elle doit faire mais d’une manière “improvisé” “on error” est votre dernier recours, mais à éviter ! Je crains que vous restez sourd pour ces arguments :cry:

Ton analyse t’appartient

C’est nullement la mienne et surtout le plus important celui de notre interlocuteur qui lui est ravi

J’en resterai là

Dommage que tu ne puisses y adhérer

Désolé pour toi