IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fonction Find dans un "Range" ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut Fonction Find dans un "Range" ?
    Bonjour tout le monde !!

    Tout d'abord voici le code qui me pose problème (désolée pour les puristes mais j'apprends sur le tas... )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim main As String
    Dim CAT As Range
    Dim CatR As Range
    Dim SubR As Range
    Dim x As String
     
    Sheets("Menu_deroulante").Select
     
    Set CatR = Range(Cells(1, 2), Cells(21, 8))
    Set SubR = Range("A25", "BG53")
     
    Sheets("Input_form").Activate
    main = Cells(7, 3).Value
     
    Sheets("Menu_deroulante").Activate
    CatR.Select
     
    Selection.Find(What:=main, after:=ActiveCell, LookIn:=formulas, lookat:=xlPart, searchorder:=xlByColumns, searchdirection:=xlNext, MatchCase:=False).Activate
    x = activecells.Column
    J'ai du faire une erreur quelque part car il me renvoit une erreur 1004 en me disant qu'il est "Unable to get the Find Property of the Range Class"....

    Z'avez vu, en plus il est désagréable avec moi !!!

    Une ame charitable pour me donner un ch'tit coup de main ??

    Merci !

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Dim main As String
    Dim CAT As Range
    Dim CatR As Range
    Dim SubR As Range
    Dim x As String
     
    Dim c As Range 'ajouté
     
        'modifié... le reste
        Set CatR = Sheets("Menu_deroulante").Range(Cells(1, 2), Cells(21, 8))
        Set SubR = Sheets("Menu_deroulante").Range("A25", "BG53")
     
        main = Sheets("Input_form").Cells(7, 3).Value
     
        With CatR
            Set c = .Find(What:=main, LookIn:=xlvalues, lookat:=xlPart, searchorder:=xlByColumns)
            If Not c Is Nothing Then
                 x = c.Column
               Else
                 'donnée inexistante
            End If
        End With
        Set c = Nothing

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut
    Merci mille fois Ouskel'n'or !!

    Je tente ça demain et vous tiens au courant...

    Bonne soirée !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut
    Bon, j'ai essayé, j'ai toujours la même erreur. Est-ce que ça pourrait provenir du fait que la valeur de la variable "main" soit du texte ?

    Et sinon, merci pour le truc du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    main = Sheets("Input_form").Cells(7, 3).Value
    c'est excellent et bien pratique.

    Histoire que je m'améliore un peu, tu peux m'expliquer pourquoi tu utilises une variable supplémentaire pour la recherche ?

    Merci !!

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Corrige cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Set c = .Find(What:=main, LookIn:=xlValues, lookat:=xlPart, searchorder:=xlByColumns)
    C'est, ou xlvalues, ou xlformulas
    Citation Envoyé par Calimero06
    tu peux m'expliquer pourquoi tu utilises une variable supplémentaire pour la recherche ?
    Parce que si la donnée n'est pas trouvée, ou tu as un message ou ça provoque une erreur... à gérer
    Bonne journée.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut
    Ca marche !!! Génial !!

    Merci pour tout et pour tes explications, j'aime bien comprendre un minimum ce que je fais !!

    Question subsidiaire, est-ce qu'on peut gerer les liste de validation avec une macro : je m'explique, à partir de ce code, en fait, je défini les données de la liste de validation suivante, en copiant/collant la zone que j'ai trouvé avec la macro. Je voulais savoir s'il a moyen, comme pour les USF de le gerer directement.

    Bonne journée !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [E-03] Aide sur la Fonction .Find dans VBA
    Par Gunsx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/01/2009, 22h36
  2. Réponses: 5
    Dernier message: 15/04/2005, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo