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 Macros et VBA Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2018
    Messages : 50
    Par défaut Fonction Find dans Macros et VBA Excel
    Bonjour,
    J'ai une question sur la fonction Find:
    j'ai un onglet "Périmètre" qui contient:

    Col A Col B Col C
    1.1 Test1 10.10
    1.2 Test2 15.20

    Dans un autre onglet "SYNTHESE", j'ai

    Col A Col B Col C
    1.1 Test1
    1.1.2 Test2
    1.2 Test2

    Lorsque j'utilise la fonction Find
    Le champ donnee2 contient "Test2" provient de l'onglet "Périmètre"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                    donnee2 = Fe.Cells(Ligne, "B").Value
                    Set ca = Worksheets("SYNTHESE").Range("A2:B" & Tligne).Find(What:=donnee2, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
                    If Not ca Is Nothing Then
                            therow = ca.Row
    Le résultat au niveau du therow = 2 qui correspond à la 2 lignes de "SYNTHESE" et je veux therow = 3 en fonction de mon paramètre donnee1
    question peux t'on ajouter un 2 critères dans un Find ou une autre solution pour régler mon problème?
    Merci de votre collaboration pour résoudre mon problème.
    Bien cordialement.
    MamaB

  2. #2
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2018
    Messages : 50
    Par défaut [XL-2019] fonction Find dans Macros et VBA Excel
    Bonjour,
    Erreur dans le code fourni, voici la bonne version:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                    donnee2 = Fe.Cells(Ligne, "B").Value
                    Set ca = Worksheets("SYNTHESE").Range("B2:B" & Tligne).Find(What:=donnee2, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
                    If Not ca Is Nothing Then
                            therow = ca.Row

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par MamaB Voir le message
    je veux therow = 3 en fonction de mon paramètre donnee1
    C'est quoi "donnee1" ?

    question peux t'on ajouter un 2 critères dans un Find
    Non

    Un If correspond à la commande "Recherche" de Excel : elle ne contient qu'un champ de recherche.

    une autre solution pour régler mon problème?
    Faire une boucle qui teste ligne par ligne avec un If Then.

    Méthode plus subtile : mettre le Find dans un boucle While.
    Tester le résultat de la recherche en fonction des autres critères et, si ceux-ci ne conviennent par, poursuivre la recherche avec un FindNext dans la boucle.
    Le mieux étant d'utiliser le paramètre de sortie de boucle du While pour tester les critères secondaires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    With Worksheets("SYNTHESE")
       donnee2 = Fe.Cells(Ligne, "B").Value
       Set ca = .Range("B2:B" & Tligne).Find(What:=donnee2, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
       If Not ca Is Nothing Then
          therow = ca.Row
          Do Until .Cells(therow, "A") = Fe.Cells(Ligne, "A").Value
             Set ca = .Range("B2:B" & Tligne).FindNext
             If ca Is Nothing Then Exit Do
             therow = ca.Row
          Loop 
       End If
    End With

  4. #4
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2018
    Messages : 50
    Par défaut [XL-2019] fonction Find dans Macros et VBA Excel
    Merci Menhir
    Cela fonction parfaitement.
    Bien cordialement.
    MamaB

Discussions similaires

  1. [XL-2016] Fonction FIND dans Macros et VBA Excel
    Par MamaB dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/03/2019, 17h07
  2. [XL-2013] Fonction Find dans VBA
    Par emamousse dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 30/09/2016, 17h22
  3. Réponses: 2
    Dernier message: 14/02/2011, 19h30
  4. [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
  5. [VBA-E]PB langue anglais/français dans macro pour document excel
    Par samthepirate dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/04/2007, 13h05

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