Recherche d'une chaine de caractère dans une feuill

Résolu
winflow Messages postés 179 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai la ligne suivant qui me sort une erreur 91 à savoir que la colonne en question fait partie de colonnes (de B23 à G23). Comment faire la recherche dans ce cas-ci ?

Column(2).Cells.Find("Observations").Row - 2


--
Cordialement

Winflow

3 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Si tu nous disait tout, tout de suite, pour changer...
    1- que souhaites tu faire?
    2- indiques nous ton code (ça tu l'as fait partiellement du moins)
    3- le code erreur (ça c'est bon)
    4- ta question

    exemple de question explicite (qui ressemble à ta question, mais version détaillée) :
    Je dois chercher (et trouver) le mot "observations" dans les colonnes de B à G de ma feuille Feuil1. (1-)
    J'ai écrit ce code : (2-)
    Column(2).Cells.Find("Observations").Row - 2
    Code qui me renvoie une erreur 91. (3-)
    Qu'est ce qui cloche et que modifier (et comment modifier) pour qu'il me trouve le mot "observations"? (4-)
    Pour info, dans mon test, le mot "observations" était situé dans la cellule E25, à l'intérieur de la phrase : "Notez ici vos observations"...

    Cordialement,
    Franck
    0
  2. winflow Messages postés 179 Statut Membre 22
     
    1- Je dois chercher (et trouver) le mot "observations" dans les cellules fusionnées de B à G dans ma feuille Feuil1. Une fois ceci fait, je récupère la ligne correspondante je la soustrait à 2 afin de déterminer où se trouve la dernière ligne d'un tableau de données.

    2-J'ai écrit ce code :
    Column(2).Cells.Find("Observations").Row - 2


    3-Code qui me renvoie une erreur 91.

    4- Qu'est ce qui cloche et que modifier (et comment modifier) pour qu'il me trouve le mot "observations"?

    C'est mieux ?

    Cordialement

    Winflow
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      C'est mieux ?
      Nettement.
      Il y a plus d'infos, c'est plus clair, on va pouvoir t'apporter une réponse.

      En fait, tu utilises la méthode Find pour faire une recherche.
      Très bonne idée.
      Encore faut il la décortiquer un peu pour voir l'erreur.

      - 1ère erreur : Columns(2) avec un "s". (ça je suppose que c'est une erreur de recopie ici, sinon le message d'erreur eut été différent...)
      - 2nde, si tu cherches Columns(2) (colonne B), il ne trouvera pas si Observations est écrit en colonne G...
      Essaye ceci :
      Columns("B:G").Cells.Find("Observations")

      Sache tout de même, que quelque soit la manière dont tu écris ton code, la méthode find renverra une erreur si Observations n'est pas écrit ou est mal orthographié.
      Il faut donc prendre les devants et ne pas chercher directement le numéro de ligne.
      Le principe :
      Au lieu de chercher le mot Observations, on va chercher l'objet Range qui éventuellement contient le mot Observations.
      Exemple (adapté à ta situation) :

      Dim monRange As Range
      
      Set monRange = Columns("B:G").Cells.Find("Observations")
      If Not monRange Is Nothing Then MsgBox "trouvé à la ligne : " & monRange.Row


      Reste à traiter de deux sujets :
      1- Les options facultatives de la méthode Find :
      => Lookat : permet de chercher soit la totalité, soit dans une partie :
      Lookat:=xlwhole
      : va trouver Observations dans "Observations", mais pas dans "Notez ici vos observations"
      Lookat:=xlpart
      va trouver Observations dans les deux cas.
      => Lookin : permet de chercher dans les valeurs, dans les formules etc...
      => ...

      2- est ce que Find va fonctionner avec des cellules fusionnées? Pour ça, tu testes et reviens nous dire...
      0
    2. winflow Messages postés 179 Statut Membre 22
       
      Columns("B:G").Cells.Find("Observations").Row


      Cela fonctionne cependant j'ai plusieurs fois le mot "Observations" comment fait on pour récupérer la première occurence uniquement ?
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Qu'appelles tu la première occurrence?
      Supposons ceci :
      Tu as le mot Observations en :
      B22
      C5
      D2
      Tu as donc deux cellules qui peuvent être considérées comme première occurrence :
      B22 = 1ère en colonne
      D2 = 1ère en ligne.

      Tu souhaites quoi donc?

      ps : j'ai fait un peu de ménage suite à ton édition, pour la clarté de cette discussion.
      0
    4. winflow Messages postés 179 Statut Membre 22
       
      Le mot "Observations" se trouve actuellement en B23:G23, B48:G48 je veux récupérer uniquement celui en B23:G23
      0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    On ne peut pas faire de recherche sur des cellules fusionnées ... Il faut choisir entre : se servir d'Excel pour faire de belles présentations ou se servir d'Excel comme outil de gestion.

    Sinon voir ici pour l'erreur 91
    0
    1. winflow Messages postés 179 Statut Membre 22
       
      D'accord je vais prendre une autre référence
      0