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 :

[VBA-E] Fonction "FIND"


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 16
    Par défaut [VBA-E] Fonction "FIND"
    Bonjour à tout le monde.

    J'utilise Excel et VB

    Voila j'utilise dans une macro le fonction "Find".
    J'aimerais savoir s'il est possible de définir de manière précise ce que l'on recherche, en fait j'aimerais lui passer des paramètres pour faire le distinguo entre les majuscules/minuscule, le mot seul ou le mot dans une phrase. Pour distinguer plusieurs cas:

    Ex: je cherche le mot "France"

    - Faire une action si le mot "France" est trouvé de manière exacte
    - Si je trouve "france" une autre action
    - Si je trouve "ifrance" une autre action

    Si ce n'est pas très clair dites le moi

    Merci d'avance
    Cinc

  2. #2
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    Il y a deux solutions :
    Construire des plages répondant aux critères. Pour cela il faut forcément aller dans le sens du plus restrictif vers le moins.
    Ou alors analyser à chaque concordance, dans une recherche la moins stricte.
    Dans ce cas, par exemple
    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
    Sub Macro1()
     
    Dim PlageStricte As Range, PlageCasse As Range, PlagePartiel As Range
    Dim MaCell As Range, PremCell As Range
     
        With Worksheets(1).Cells
        Set MaCell = .Find(What:="France", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
        If Not MaCell Is Nothing Then
            Set PremCell = MaCell
            Do
                If StrComp(MaCell.Value, "France", vbBinaryCompare) = 0 Then
                    MsgBox "correspondance stricte"
                ElseIf StrComp(MaCell.Value, "France", vbTextCompare) = 0 Then
                    MsgBox "correspondance sans casse"
                Else
                    MsgBox "correspondance partielle"
                End If
                Set MaCell = .FindNext(MaCell)
            Loop While Not MaCell Is Nothing And Not MaCell.Address = PremCell.Address
        End If
        End With
     
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 16
    Par défaut
    Bien merci.

    Je vais essayer les deux méthodes. 8)
    Mais je pense a la deuxième car ce ne sera pas toujours france, ifrance etc..
    La recherche vient en fait d'une saisie de l'utilisateur.

    a bientôt...je pense

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

Discussions similaires

  1. [VBA-E]Fonction .find
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/01/2006, 11h03

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