Probleme macro recherche

relomydie -  
 relomydie -
Bonjour,

j'ai un souci avec la macro suivante:

Private Sub CommandButton5_Click()
arg1 = Cells(17, 1)
If arg1 > 0 Then
Worksheets("Feuil3").Select
Range(arg1).Select
End If
End Sub

et le message "la méthode range de l'objet worksheets a échoué", pourquoi?

Je veux simplement qu'il me trouve une cellule dans une autre feuille.

Merci de votre aide
Configuration: Windows XP
Internet Explorer 6.0

7 réponses

Résumé de la discussion

Le problème porte sur une macro VBA qui doit atteindre une cellule sur une autre feuille en utilisant une variable arg1, mais la méthode Range échoue lorsque arg1 n’est pas un Range valide. Des réponses préconisent de rendre arg1 explicitement un objet Range, par exemple Set arg1 = Range("A17"), puis If arg1.Value > 0 Then Worksheets("Feuil3").Select Range(arg1.Address).Select End If. D’autres précisent de vérifier le contenu de A17 et de distinguer entre l’adresse à rechercher et la valeur à tester, en utilisant arg1.Address ou Range("A17").Value selon le cas. En pratique, l’emploi de .Address et la qualification des feuilles dans Range(arg1.Address) évitent les erreurs lorsque les noms de feuilles varient ou lorsque des modules déplacent la portée des références.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    tu confonds objet et variable

    qu'y-t-il dans arg1? ou quel est le contenu de cell(17,1)?

    veux-tu te déplacer à l'adresse indiquée dans "arg1" ou aller à cell(17,1) sur la feuille3?

    tu devrais écrire qq chose comme ça

    set arg1=range("A17") ' objet contenant toutes les infos de la cellule A17

    If arg1.value > 0 Then
    Worksheets("Feuil3").Select
    Range(arg1.address).Select
    End If

    En espérant que cela t'aidera
    0
  2. relomydie
     
    alors j'ai essayé mais le message suivant apparaît "la methode select de la classe range a échoué".

    En fait ce que je souhaite faire c'est avoir une macro qui me cherche la cellule A17 de la feuille fiche chantier dans la feuille 3 et qu'il se positionne dessus.
    0
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    bon j'avais pas bien compris.
    ' arg1 est une variable

    Sub test()

    arg1 = Range("A17").Value ' Valeur de A17 mis dans arg1

    If arg1 > 0 Then

    Sheets("Feuil3").Select ' si la feuille s'appelle bien "Feuil3" dans le même classeur
    Range("a17").Select ' on va à la cellule A17
    End If

    ne confond pas non plus Sheets : la feuille du classeur
    et workbook le classeur.

    j'ai testé ça fonctionne.
    0
    1. relomydie
       
      J'ai de nouveau le premier message:
      la méthode select de la classe range a échoué.

      Je ne comprends pas pourquoi?

      Vois-tu une erreur de frappe?

      Private Sub CommandButton5_Click()
      arg1 = Range("a17")
      If arg1 > 0 Then
      Sheets("Feuil3").Select
      Range("a17").Select
      End If
      End Sub

      Merci
      0
      1. Bidouilleu_R Messages postés 1209 Statut Membre 296 > relomydie
         
        " Vois-tu une erreur de frappe? " non mais un oubli peu-être
        sur quelle feuille commences-tu? ou est ton bouton?
        En supposant sur la feuille1
        la methode select échoue si l'enfant ou le parent n'est pas accessible.
        la cellule dépend de la feuille.
        sépare feuille et cellule et tu sauras ce qui ne va pas.
        un exemple ci dessous.


        Private Sub CommandButton5_Click()

        sheets("Feuil1").select
        arg1 = Range("a17")
        If arg1 > 0 Then
        Sheets("Feuil3").Select
        Range("a17").Select
        End If
        End Sub
        0
      2. relomydie > Bidouilleu_R Messages postés 1209 Statut Membre
         
        "sur quelle feuille commences-tu?" "ou es ton bouton"
        Je commence sur la feuille fiche chantier et le bouton est sur cette feuille.

        Je souhaite que la macro recherche la valeur de la cellule A17 de la feuille fiche chantier et la trouve et se positionne dans la feuille 3.

        MAis en rajoutant sheets("fiche chantier").select le message apparaît toujours.


        Par exemple, la cellule A17 de la feuille fiche chantier est: A170763depl (cette valeur est une concaténation de deux cellules voisines)

        Je veux que la macro me trouve cette valeur dans la feuille 3 et se positionne dessus.

        Je ne sais pas si c'est plus clair?
        0
  4. relomydie
     
    je pense que tu as laché prise, mais faut pas se prendre la tete.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    non j'avais un rdv hier soir
    je regarde et je te dis.
    0
  7. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    bon j'ai trouvé mes excuses.

    dans command buton 5 tu mets
    call recherche1 ' par exemple
    end sub

    puis alt f11

    insertion module
    et tu mets ça et c'est ok

    Sub recherche1()
    arg1 = Range("A17").value
    Sheets("feuil3").Select
    Range(arg1).Select
    End Sub
    si tu as besoin n'hésite pas
    0
    1. relomydie
       
      Merci, mais je ne comprends toujours pas pourquoi il me mets ce message:

      "la méthode range de l'objet worksheets a échoué"
      0
    2. relomydie
       
      Sub recherche1()
      arg1 = Range("a17").Value
      Sheets("feuil3").Select
      Range(arg1).Select ----> c'est à ce niveau qui surligne l'erreur
      End Sub
      0
    3. relomydie
       
      Ok donc pour la valeur 3, je ne comprends pas trop.
      Que faudrait il à la place? car ce qu'il signifie reste un mystere....

      Car en tapant cette macro j'obtiens le message suivant:

      "la méthode select de la classe range a échoué".

      Je dois terminer ce programme pour le boulot avant ce soir et tout allait bien jusqu'à cette macro.

      Penses-tu qu'il y a un moyen plus simple en faisant une macro, de faire une recheche de cellule d'une feuille dans une autre?

      Merci beaucoup de prendre de ton temps pour m'aider
      0
    4. Bidouilleu_R Messages postés 1209 Statut Membre 296 > relomydie
       
      D'après les informations que tu donnes
      La cellule A17 contient A170763depl
      la fonction left récupère dans arg1 les 3 premiers charactère soit A17
      sheets("Feuil3").select ' selectionne la feuille
      la méthode range(arg1).select correspond à range("A17") et celle-ci fonctionne très bien chez moi
      je ne vois pas où est le problème
      Essaie d'executer le code en pas à pas F8 et regarde le contenu de arg1
      0
    5. Bidouilleu_R Messages postés 1209 Statut Membre 296 > relomydie
       
      En fait pour explication
      dans la cellule A17 tu fais une concaténation et A17 contient A17xxxxx
      pour être sûr de récupérer cette adresse il te faudrait un espace par exemple : A17 xxxxx
      ou une autre information mais cela c'est toi qui doit le dire

      la méthode range qui échoue, dans commandbutton là je n'ai pas d'idées.
      j'utilise ces boutons pour lancer un module VBA
      0
  8. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    voici ce que tu écris
    ' Par exemple, la cellule A17 de la feuille fiche chantier est: A170763depl

    'je suppose donc que A17 de la feuille chantier contient : A170763depl

    si arg1 prend la valeur "A170763depl" il ne trouvera pas d'adresse correspondante.
    j'ai donc changé comme ci-après mais le code pas "propre en ce sens
    que la valeur 3 est arbitraire dans : arg1 = Left(Range("a17").Value, 3)
    il faudrait pouvoir obtenir un argument de recherche supplémentaire
    à moins que cela te convienne.

    Sub recherche1()
    arg1 = Left(Range("a17").Value, 3)
    Sheets("feuil3").Select
    Range(arg1).Select '----> c'est à ce niveau qui surligne l'erreur
    End Sub

    A+ Roger
    0