DOUBLONS

Signaler
Messages postés
34
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
16 mars 2008
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
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.

Voila mon debut de code
Mais à l'execution il ne se passe vraiment rien
Pouvez vous maider !!!!!!!!!!!!!!!!

Private Sub comparaison()
  If ComboBox1.Value <> "" And ComboBox2.Value <> "" Then

        Worksheets(CStr(Me.ComboBox2)).Activate
        Range("F5").Select
       
       

    Dim Plage As Range
    Dim Tableau(), Resultat() As String
    Dim k As Integer, j As Integer, m As Integer
    Dim Un As Collection
    Dim Doublons As String
       
    Set Un = New Collection
    'La plage de cellules à tester
    Set Plage = Range("F5:F" & Range("A65536").End(xlUp).Row)
     
   
Dim comp, comp16
Dim comp1, comp10
Dim comp2, comp11
Dim comp3, comp12
Dim comp4, comp13
Dim comp5, comp14
Dim comp6, comp15

    Dim MaCellule As Range, i As Long, msg As String
    Dim FirstCell As String, ValeurRecherche As Variant
    With ActiveCell
        ValeurRecherche = .Value
        FirstCell = .Address
    End With
    If ValeurRecherche = "" Then
        msg = "Impossible de faire une recherche a partir d'une cellule vide. "
    Else
        i = 0
        With Worksheets(CStr(Me.ComboBox2))
          For Each MaCellule In Plage
            If MaCellule.Value = ValeurRecherche And MaCellule.Address <> FirstCell Then
             
             
                comp = ActiveCell.Offset(0, 8).Value + MaCellule.Offset(0, 8).Value
               comp1 = ActiveCell.Offset(0, 9).Value + MaCellule.Offset(0, 9).Value
               comp2 = ActiveCell.Offset(0, 10).Value + MaCellule.Offset(0, 10).Value
               comp3 = ActiveCell.Offset(0, 11).Value + MaCellule.Offset(0, 11).Value
               comp4 = ActiveCell.Offset(0, 12).Value + MaCellule.Offset(0, 12).Value
               comp5 = ActiveCell.Offset(0, 13).Value + MaCellule.Offset(0, 13).Value
               comp6 = ActiveCell.Offset(0, 14).Value + MaCellule.Offset(0, 14).Value
             
              For j = 5 To 500
             
              Sheets("variations").Range("A& j").Value = MaCellule.Value
                      
               ActiveCell.Offset(0, 8).Value = comp
               ActiveCell.Offset(0, 9).Value = comp1
               ActiveCell.Offset(0, 10).Value = comp2
               ActiveCell.Offset(0, 11).Value = comp3
               ActiveCell.Offset(0, 12).Value = comp4
               ActiveCell.Offset(0, 13).Value = comp5
               ActiveCell.Offset(0, 14).Value = comp6
              
            Next
      
                i = i + 1
            End If
        Next
        End With
       
          With Worksheets(CStr(Me.ComboBox1))
          For Each MaCellule In Plage
   
            If MaCellule.Value = ValeurRecherche And MaCellule.Address <> FirstCell Then
             
             
                comp10 = ActiveCell.Offset(0, 8).Value + MaCellule.Offset(0, 8).Value
               comp11 = ActiveCell.Offset(0, 9).Value + MaCellule.Offset(0, 9).Value
               comp12 = ActiveCell.Offset(0, 10).Value + MaCellule.Offset(0, 10).Value
               comp13 = ActiveCell.Offset(0, 11).Value + MaCellule.Offset(0, 11).Value
               comp14 = ActiveCell.Offset(0, 12).Value + MaCellule.Offset(0, 12).Value
               comp15 = ActiveCell.Offset(0, 13).Value + MaCellule.Offset(0, 13).Value
               comp16 = ActiveCell.Offset(0, 14).Value + MaCellule.Offset(0, 14).Value
             
              For j = 5 To 500
             
              Sheets("variations").Range("A& j").Value = MaCellule.Value
                      
               ActiveCell.Offset(0, 8).Value = comp - comp10
               ActiveCell.Offset(0, 9).Value = comp1 - comp11
               ActiveCell.Offset(0, 10).Value = comp2 - comp12
               ActiveCell.Offset(0, 11).Value = comp3 - comp13
               ActiveCell.Offset(0, 12).Value = comp4 - comp14
               ActiveCell.Offset(0, 13).Value = comp5 - comp15
               ActiveCell.Offset(0, 14).Value = comp6 - comp16
              
            Next
   
                i = i + 1
            End If
        Next
        End With
          

    End If
 

End If

Unload comparaison

Sheets("Variations").Select

Merci de votre aide

2 réponses

Messages postés
34
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
16 mars 2008

Allo? quelqu'un pourrai m'aider Je galère vraiment !!!
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Tu peux commencer par changer cette ligne<strike>
Worksheets(CStr(Me.ComboBox2)).Activate</strike>
Worksheets(ComboBox2.Text).Activate

Pour les doublons à additionner, commence par trier ta feuille.
Ensuite, tu crées une boucle qui commence par la fin en remontant et tu vérifies les valeurs qui servent à vérifier les doublons.

Donc si Range("XYZ" & i) = Range("XYZ" & i - 1), tu additionnes les valeurs (H, I, J) sur la ligne i-1 et tu supprimes la ligne i

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI