Erreur 91 sur certains postes avec Find

Bonjour,

Je n'arrive pas à trouver une syntaxe de cette formule qui fonctionnerait sur tout les postes, il y en a toujours un qui n'arrive pas au bout de la macro, et bloque la-dessus:

Cellule_Valeurs_possibles.NAME = "Valeurs_possibles"

Erreur 91

    Dim Cellule_Valeurs_possibles As Range

        Set Cellule_Valeurs_possibles = Cells.Find(What:="Valeurs possibles :", _
        LookIn:=xlValues, LookAt:=xlPart)

        Cellule_Valeurs_possibles.NAME = "Valeurs_possibles"

    Cellule_Valeurs_possibles.Select


Je sais plus quoi faire...

Lo.

4 réponses

  1. Contributeur
    Bonjour,

    Sans doute qu'il ne trouve pas.
    Il faut toujours tester le résultat d'un .find, un utilisateur peut avoir changé le tableau :
        Set Cellule_Valeurs_possibles = Cells.Find(What:="Valeurs possibles :", _
                                                   LookIn:=xlValues, LookAt:=xlPart)
        If Cellule_Valeurs_possibles Is Nothing Then
            MsgBox "non trouvé"
        Else
            Cellule_Valeurs_possibles.Name = "Valeurs_possibles"
            Cellule_Valeurs_possibles.Select
        End If 

    eric
    0
    1. Bonjour Eric,

      Malheureusement, ce doit être quelque chose de plus obscure...
      Puisse-que cette feuille est crée par le tableau lui-même via une macro, sur la base d'un modèle VeryHidden verrouillé par mot de passe et accessible que de la macro...

      C'est vraiment un problème lié au poste.

      J'ai eu un problème similaire avec Environ qui ne fonctionne sur certains poste qu'avec le préfixe VBA.

      Je soupçonne un truc dans ce goût-là, mais quoi ?!

      Lo.
      0
      1. Même chose avec :
        Set Sheets_Add = Sheets.Add(After:=Sheets(Sheets.Count))

        ou
        Set Sheets_Add = ActiveWorkbook.Sheets.Add(After:=Worksheets(Worksheets.Count))
        0
      2. Contributeur
        Bonjour,

        Si seulement on avait les messages d'erreur...
        eric
        0
    2. Comme quoi c'est bien mystérieux !

      Pour avoir le type d'erreur exacte, aujourd'hui j'ai demander à cet utilisateur de refaire la manip qui avait plantée la semaine dernière...

      Et là, ça fonctionne !!!

      Il faut que je diffuse plus largement ce fichier pour multiplier les tests, on verra ce que ça donne...

      Pour l'instant, stand-by.

      Merci.
      Bon WE

      Lo.
      0
      1. Bonjour,

        L'erreur c'est reproduite sur un poste...
        Et cette fois j'ai l'alerte complète ! ;-)

        Erreur d'exécution '91':
        Variable objet ou variable de bloc With non définie

        ActiveSheet.UsedRange.Select
        Dim Cellule_Valeurs_possibles As Range
        Set Cellule_Valeurs_possibles = Cells.Find(What:="Valeurs possibles :", _
        LookIn:=xlValues, LookAt:=xlPart)
        Cellule_Valeurs_possibles.NAME = "Valeurs_possibles"
        Cellule_Valeurs_possibles.Select

        Ligne surlignée:
        Cellule_Valeurs_possibles.NAME = "Valeurs_possibles"

        Lo.
        0
        1. Contributeur
          Bonjour,

          Sans doute ton .find qui ne trouve pas "Valeurs possibles :", et tu ne testes pas le résultat pour traiter l'erreur.
          Et ActiveSheet c'est vague, ça peut-être n'importe quelle feuille si l'utilisateur a eu le temps de l'activer.

          1) selon le cas :
          - soit travailler en désignant cette feuille avec un
          With Sheets("ma feuille qui va bien")
          .[A1]=3 'note le . devant pour dire que tu travailles avec le with

          - soit activer la feuille qui va bien avant
          Et comme tu as des .Select (le plus souvent inutiles mais bon ce n'est pas le sujet) tu n'as pas le choix il faut qu'elle soit active.

          2) et si tu n'es pas sûr à 110% de trouver avec ton .find il faut le tester :
          Set Cellule_Valeurs_possibles = Cells.Find(What:="Valeurs possibles :", _
          LookIn:=xlValues, LookAt:=xlPart)
          if Cellule_Valeurs_possibles = Nothing then
          msgbox "Au secours !"
          else
          Cellule_Valeurs_possibles.NAME = "Valeurs_possibles"
          Cellule_Valeurs_possibles.Select
          endif

          Maintenant il y a sûrement d'autres possibilités, c'est la plus probables.

          eric
          0