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 :

Recherche avec find


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Par défaut Recherche avec find
    Bonjour,

    Je sais que ce sujet a déjà beaucoup été traité mais les résultats obtenus par une recherche sur le forum ne me permettent pas de m'en sortir. J'ai essayé mais je n'y arrive pas complètement...
    J'ai une feuille avec 5 colonnes (nom, prénom, date naissance, n° dossier, classeur).
    J'ai jusqu'ici encodé presque 200 lignes mais le problème est que j'ai souvent des doublons.
    Je voudrais, lorsque j'ai entré les valeurs des 4 premières colonnes, et si d'autres lignes ont déjà le même contenu, que je sois averti de l'existence de ces doublons...

    J'ai d'abord essayé uniquement une recherche sur le contenu de la première colonne et je fais apparaitre une messagebox si la ligne existe déjà.

    Le find trouve et pointe bien chaque ligne dans la feuille ou le nom existe déjà mais part dans une boucle infinie si je ne place pas un end en fin de procédure mais alors le find s'arrète à la première occurence seule et ne m'avertit pas de l'existence des suivantes

    J'ai essayé une boucle et aussi des conditions... Comment faire pour qu'une messagebox apparaisse et que le find me pointe chaque ligne ou existe le même nom que celui entré dans la dernière ligne de la feuille sans partir dans une boucle infine ?

    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
    Dim Nom As String
    Dim compare As Boolean
    Dim lastRow As Integer
    
    Nom = Range("A" & target.Row).Value
    
    lastRow = target.Row
    
        compare = Cells.Find(What:=Nom, After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
    
    
    Rem If compare = True And target.Row <> lastRow Then
    
    MsgBox ("Ce nom existe déjà !")
    
    Rem End If
    
    End
    
    End Sub

  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
    Tu as un très bon exemple dans l'aide en ligne, à Find.
    Tu regardes et si tu as toujours un pb, tu dis
    A+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Tu as un très bon exemple dans l'aide en ligne, à Find.
    Tu regardes et si tu as toujours un pb, tu dis
    A+
    J'ai trouvé un exemple ici http://msdn2.microsoft.com/fr-fr/lib...9a(VS.80).aspx. J'ai testé mais il y a un pb avec la déclaration des variables pas acceptées en vba. Et aussi ici http://support.microsoft.com/kb/466742/fr et là j'ai le même problème en gros qu'avant : une occurence trouvée ---> msgbox --> sort sans aller aux suivantes alors qu'il y en a d'autres... J'ai copié/collé tel quel pourtant...

    Je ne sais pas si c'est de cet exemple que tu parlais ?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 572
    Par défaut
    tien, j'avais ça qui trainait. a adapter a ton cas, mais ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub remp2()
    With Worksheets("Boucle").Range("a:a")
        Set c = .Find("*INC", LookIn:=xlValues)
     
    If Not c Is Nothing Then
        firstaddress = c.Address
           Do
            MsgBox "trouvé" & c.Address
            Set c = .FindNext(c)
           Loop While Not c Is Nothing And Not firstaddress = c.Address
    End If
    End With
    End Sub

  5. #5
    Membre éclairé Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Par défaut re
    recherche de doublons:

    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
    Sub TrouveDoublon()
        Dim Tableau() As TableauType
        Dim Cellule, Haut, Bas, Compteur, C2
        Colonne = 15
        Haut = Selection.End(xlUp).Row
        Bas = Selection.End(xlDown).Row
        ReDim Tableau(Bas)
        For Compteur = Haut To Bas
            Tableau(Compteur).Contenu = Cells(Compteur, Colonne)
            Tableau(Compteur).Coordonnee = Cells(Compteur, Colonne).Row
        Next
        For Compteur = Haut To Bas
            For C2 = (Compteur + 1) To Bas
                If Tableau(Compteur).Contenu = Tableau(C2).Contenu Then
                    Cells(Tableau(C2).Coordonnee, Colonne + 1).Value = 1
                    Cells(Tableau(C2).Coordonnee, Colonne - 13).Interior.ColorIndex = 6
                    Cells(Tableau(C2).Coordonnee, Colonne - 12).Interior.ColorIndex = 6
                    Cells(Tableau(C2).Coordonnee, Colonne - 11).Interior.ColorIndex = 6
                    Cells(Tableau(C2).Coordonnee, Colonne - 10).Interior.ColorIndex = 6
                    Cells(Tableau(C2).Coordonnee, Colonne - 9).Interior.ColorIndex = 6
                End If
            Next
        Next
    End Sub

Discussions similaires

  1. [XL-2007] Rechercher avec FIND et xlValues
    Par Docmarti dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/06/2013, 14h17
  2. [XL-2007] Problème de recherche avec Find
    Par dmoluc dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 27/07/2012, 17h03
  3. recherche de lignes avec find et grep
    Par ikuzar dans le forum Administration système
    Réponses: 2
    Dernier message: 30/10/2010, 12h59
  4. [XL-2003] Probleme de recherche avec .Find
    Par djoumusic dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/03/2010, 12h41
  5. Recherche d'un texte avec "find data"
    Par Kiroukool dans le forum Toad
    Réponses: 0
    Dernier message: 31/01/2008, 15h34

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