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 :

Commande VBA Find


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Décembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2013
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Commande VBA Find
    Bonjour,

    Je tente d'effectuer une recherche dans une colonne dont chaque élément (cellule) contient une formule.
    Ma commande Find ne trouve pas l'élément recherché. On dirait que ma recherche ne tient pas compte du résultat des formules.

    Merci pour votre aide.

    Voici mon code:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub ChercheFiches()
     
        Dim Trouve As Range
        Dim PlageDeRecherche As Range
        Dim Valeur_Cherchee As String
        Dim AdresseTrouvee As String
        Set PlageDeRecherche = Nothing
        Set Trouve = Nothing
     
            Sheets("Fiches service").Select
            Range("a1").Select
     
                Valeur_Cherchee = "Admin 2001"
                Set PlageDeRecherche = ActiveSheet.Columns(1)
     
                Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookIn:=xlFormulas, LookAt:=xlWhole)
     
                If Trouve Is Nothing Then
                    GoTo PackagenonTrouvé
                Else
                    AdresseTrouvee = Trouve.Address
                    Range(AdresseTrouvee).Select
                    GoTo PackageTrouvé
                End If
     
    PackagenonTrouvé:
                Set PlageDeRecherche = Nothing
                Set Trouve = Nothing
                MsgBox ("non trouvé")
                GoTo fin
     
    PackageTrouvé:
     
                MsgBox ("trouvé")
     
    fin:
     
    End Sub

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour,

    le code ne se trompe jamais, il fait ce qui lui est demandé ! L'erreur vient donc de toi car dans ta ligne n° …

    - ah zut le code n'a pas été balisé, merci d'utiliser l’icône # dédiée au code ! -

    … une recherche est effectuée dans les formules au lieu des résultats (valeurs) ‼
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut command VBA find
    Bonjour,

    Cela ne suffirait-il pas à ton bonheur.
    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
     
    Sub ChercheFiches()
     
    Dim Trouve As Range
    Dim PlageDeRecherche As Range
    Dim Valeur_Cherchee As String
    Set PlageDeRecherche = Nothing
    Set Trouve = Nothing
     
    Valeur_Cherchee = "machin"
    Set PlageDeRecherche = Sheets("Feuil2").Columns(1)
     
    Set Trouve = PlageDeRecherche.Find(what:=Valeur_Cherchee, LookIn:=xlFormulas, LookAt:=xlWhole)
     
    If Trouve Is Nothing Then
       MsgBox ("non trouvé"): Exit Sub
    Else
       Trouve.Select
       MsgBox "trouvé"
       MsgBox Trouve.Address  ' Pour vérification du résultat
    End If
    End Sub
    Cordialement,

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    LookIn:= spécifie si la recherche se fait dans la formule ou le résultat de la formule.
    si xlFormulas : la recherche se fait dans la propriété Formula
    si XlValues : la recherche se fait dans le résultat affiché.


    Cordialement

    Docmarti
    Cordialement

    Docmarti.

  5. #5
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut commande VBA find
    Bonjour Docmarti,

    Merci pour tes précisions.
    En effet, dans ma proposition il faut remplacer xlformulas par xlvalues.

    Cordialement,

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Pourtant Paul je pense avoir été clair …

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut command VBA find
    bonjour Marc,

    En effet, à la relecture, ta réponse était claire. Hélas, je perds chaque jour des neurones et il me faut de plus en plus souvent plusieurs réponses pour que le déclic se produise.

    En plus, je suis retourné dans l'aide 2013 qui sur ce point n'apporte aucune précision. L'aide (F1), trop souvent, n'est utile qu'à ceux qui savent déjà.

    Cordialement,

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Oui c'est juste, parfois l'aide est succincte … Et dans ce cas, il y a une astuce, utiliser l'Enregistreur de macros !

    Car en se donnant la peine de bien alimenter la boite de dialogue de la recherche par exemple,
    les options sont donc bien paramétrées dans le code ! …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

Discussions similaires

  1. Powerpoint 2003: Commande Vba pour Ouvrir le Slide Finder
    Par solipas dans le forum VBA PowerPoint
    Réponses: 0
    Dernier message: 02/08/2007, 14h50
  2. [VBA EXCEL] Macro commande vba vers windows
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/04/2007, 12h05
  3. Indication d'avancement d'une commande VBA
    Par eddyG dans le forum Access
    Réponses: 4
    Dernier message: 24/10/2006, 16h03
  4. Execution dynamique de commandes VBA
    Par Neilos dans le forum Général VBA
    Réponses: 1
    Dernier message: 10/08/2006, 12h56
  5. Réponses: 5
    Dernier message: 09/09/2005, 17h51

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