Selection.Find et variables indicées

Résolu

Bonjour à tous!
Dans le bout de code test suivant :
Dim Spec as Range
Dim TypeC(7) as String
For j = 1 To 6
        MsgBox TypeC(j)
        Stop
        Spec = Selection.Find(TypeC(j))
        MsgBox Spec
        Stop
 Next j

la ligne Selection.Find bugue ...
Je me demande si elle accepte une variable indicée comme TypeC(j) ???
Si oui, je ne vois pas mon erreur ???


Windows / Chrome 123.0.0.0

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur

    bonjour,

    N'hésite pas, quand tu as une erreur, à partager le texte du message d'erreur.  Ce texte est précieux, pour toi comme pour nous.

    Connais-tu l'instruction "set"?  Tu l'as pourtant déjà utilisée plusieurs fois.  N'hésite pas à analyser le code que tu utilises, afin d'en comprendre chaque subtilité.

    Quand tu écris "Spec = Selection.Find(TypeC(j))", c'est équivalent à écrire "Spec.value = Selection.Find(TypeC(j))".

    Si tu veux que la variable Spec pointe vers un autre objet, tu dois écrire "Set Spec = Selection.Find(TypeC(j))".

    1. yg_be, merci pour tes précisions concernant les différences d'écritures:
      "Spec = ...." et "Set Spec=...". J'ai bien compris et j'ai donc modifié mon code sachant que Selection.Find renvoie un Range : ça fonctionne nickel !
      Merci à tous les autres pour vos réponses.
      Cordialement, Mikel
       

  2. Bonjour,

    Vous n'avez mis aucune valeur dans votre tableau TypeC

    1. Si, j'ai au préalable initialisé TypeC(1)="aaaa", TypeC(2)="bbbb", etc...

    2. Contributeur
      @mikel831

      N'hésite pas à montrer un code qui correspond au souci rencontré, plutôt qu'un autre code.  Tu crées souvent de la confusion en partageant un autre code.

  3. Contributeur

    Tu te demandes si le souci n'est pas causé par l'utilisation d'une variable indicée.

    Dans ce cas, tu aurais pu tester ceci: Spec = Selection.Find("").  Cela t'aurait permis de vérifier ton hypothèse.