Méthode FIND

Bonjour à tous

Je sollicite votre aide pour un petit problème, je mets en PI mon fichier

j'ai des chiffres en groupe A , colonne de 1 à 9

j'ai une seconde série de chiffre en groupe B, colonne de 11 à 34

je veux comparer le 1er chiffre du groupe B, s'il est dans le groupe A, je l'affiche dans le groupe résultat , colonne de 36 à 56

s'il n'est pas dans le groupe A , on passe ensuite au 2ème chiffre du groupe B,

problème que je n'arrive pas à résoudre : dans le groupe B en colonne 12, j'ai le chiffre 6, il n'est pas dans le groupe A donc il ne devrait pas s'afficher dans le groupe résultat.

Pouvez-vous m'éclairer, d'avance Un Grand Merci

57classeur1.zip (7.92 Ko)

Salut le forum

Essaye comme ceci

Sub Trouve()
    Dim Nbre As Integer
    Dim ColFin As Integer
    Dim ColB As Integer
    Dim C As Range

    ColB = 11: ColFin = 36

    Do
        With Sheets("cap").Range(Sheets("cap").Cells(4, 1), Sheets("cap").Cells(4, 9))
            Nbre = Sheets("cap").Cells(4, ColB).Value
            Set C = .Find(What:=Nbre, _
                          LookIn:=xlValues, _
                          LookAt:=xlWhole, _
                          SearchOrder:=xlByColumns, _
                          SearchDirection:=xlNext, _
                          MatchCase:=False)
            If Not C Is Nothing Then
                Sheets("cap").Cells(4, ColFin).Value = Nbre
                ColFin = ColFin + 1
            End If
            ColB = ColB + 1
        End With
    Loop Until Sheets("cap").Cells(4, ColB).Value = ""

End Sub

Mytå

Bonjour,

Essai ceci pour voir si ça te convient. Attention, si le nombre est rencontré plusieurs fois en plage B il sera inscrit autant de fois sinon, il faut inverser les plages pour avoir des valeurs uniques (à condition quelles le soient en plage A) :

Public Sub essai()

    Dim Plage_A As Range
    Dim Plage_B As Range
    Dim Cel_A As Range
    Dim I As Integer

    'défini les plages
    With Sheets("cap")

        Set Plage_A = .Range(.Cells(4, 1), .Cells(4, 9))
        Set Plage_B = .Range(.Cells(4, 11), .Cells(4, 34))

    End With

    'pour commencer à inscrire en colonne AJ
    I = 36

    'parcour la plage B à la recherche de chaque valeur
    'en plage A, si trouvée, inscrit et incrémente I
    For Each Cel In Plage_B

        Set Cel_A = Plage_A.Find(Cel, , xlValues)

        If Not Cel_A Is Nothing Then

            Sheets("cap").Cells(4, I).Value = Cel_A.Value
            I = I + 1

        End If

    Next Cel

End Sub

Hervé.

bonjour

un essai ;mais je n'ai peux etre pas tous compris

62gg95.zip (8.09 Ko)

cordialement

Bonjour TULIPE_3

Merci pour ta réponse mais tu as dû te louper quelque part car tu m'as renvoyer la même macro sans aucune modification.

Ce n'est pas grave car j'ai déjà eu 2 reponses, merci quand même

A+

Rechercher des sujets similaires à "methode find"