Gestion des doublons

Résolu
freshyback Messages postés 34 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 16 mars 2008 - 10 mars 2008 à 19:21
freshyback Messages postés 34 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 16 mars 2008 - 12 mars 2008 à 18:50
Bonjour,

J'aimerais faire la macro suivante :

Selection de  2 feuilles via une combobox
Puis à l'aide de la selection on va se positionner sur la première feuille sur la colonne F et chercher les doublons.
Pour les valeurs avec doublons on fait la somme des lignes des colonnes H,I et J indépendamment.
Pour les valeurs sans doublons on conserve les valeurs des colonnes H,I et J

Ensuite
on fait pareil sur la deuxième feuille (qui contient les mêmes codes
que la première feuille dans la colonne F mais pas les mêmes valeurs
dans H, I et J)

Enfin on soustrait les valeurs des 2 feuilles sur les colonnes H,I et J correspondant aux mêmes codes dans la colonne F.

J'ai commencer mon code uniquement pour identifier les doublons mais pour le reste je suis un peu concé mai je continue de chercher
Quelqu'un aurait des idées.............

Sub test  ()
Dim celluleTrouvee As Range
Dim FirstCell As String

If IsEmpty(ActiveCell) Then
MsgBox "Pas de recherche sur une cellule vide."
Exit Sub
End If
FirstCell = ActiveCell.Address
Set celluleTrouvee = Worksheets(""). _
Range("A1:C150").Find(What:=ActiveCell. _
Value, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext)
celluleTrouvee.Activate
If ActiveCell.Address = FirstCell Then
MsgBox "Il n'y a pas de doublon correspondant à cette valeur."
Exit Sub
End If
MsgBox ActiveCell.Address & " est un doublon."
Do While Not (celluleTrouvee Is Nothing)
Set celluleTrouvee = Worksheets("Feuil1"). _
Range("A1:C150").FindNext(ActiveCell)
celluleTrouvee.Activate
If ActiveCell.Address = FirstCell Then
Set celluleTrouvee = Nothing
Exit Do
End If
MsgBox ActiveCell.Address & " est un doublon."
Loop
MsgBox "Fin de recherche."
End Sub

2 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
11 mars 2008 à 07:18
Salut,


ta methode me semble compliquee et risquee car la fonction find ne marche que dans un sens soit ligne soit colonne mais pas les 2. Ors ta plage vas de A1 a C150. De plus un find qui ne trouve rien plante le code si tu n' as pas prevu le coup ce qui est ton cas. Donc les lignes qui contiennent find ou findnext doivent etre precedees de On Error Resume Next.

Ce que je te propose c' est une autre methode que voici:

Sub test()
    Dim MaCellule As Range, i As Long, msg As String
    Dim FirstCell As String, ValeurRecherche As Variant
    With ActiveCell
        ValeurRecherche = .Value 'ici le point est OBLIGATOIRE !
        FirstCell = .Address 'ici le point est OBLIGATOIRE !
    End With
    If ValeurRecherche = "" Then
        msg = "Impossible de faire une recherche a partir d'une cellule vide. "
    Else
        i = 0
        With Worksheets("Feuil1") ' ici tu peux remplacer feuil1 par Userform1.Combobox1.value
          For Each MaCellule In .Range("A1:C150") 'pour chaque cellule de la plage A1:C150
            'si la valeur de la cellule est = a la valeur recherchee et que ce n' est pas la cellule active
            If MaCellule.Value = ValeurRecherche And MaCellule.Address <> FirstCell Then
                MaCellule.Value = "" 'alors on efface
                i = i +1 'et on compte le nombre de cellule effacee
            End If
        Next
        End With
        If i > 0 Then
            msg = i & " doublon(s) de la cellule " & FirstCell & " a(ont) ete supprime(s). "
        Else
            msg = "Aucun doublon de la cellule " & FirstCell & " n'a ete trouve. "
        End If
    End If
    MsgBox msg, vbInformation, "Fin de recherche."
End Sub

Vala

A+
3
freshyback Messages postés 34 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 16 mars 2008
12 mars 2008 à 18:50
salut big fig je suis ok pour ta methode mais mais coeur de problème reside ensuite sur le fait que le doi faire la somme de ligne qui ont des doublons et çà je débute et je sais vraiment pas le faire!!!!!

AURAIS TU des idées??????

Merci d'avance.....
0
Rejoignez-nous