Doublons et calcul

freshyback Messages postés 34 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 16 mars 2008 - 7 mars 2008 à 13:43
freshyback Messages postés 34 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 16 mars 2008 - 7 mars 2008 à 17:10
Bonjour tout le monde,
Je suis en train de réaliser une macro qui va servir à faire les etapes suivantes :

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.

Mon début de code est le suivant

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

        Worksheets(CStr(Me.ComboBox2)).Activate
        Range("F4").Select
Call Module3.TrouveDoublon
End If

    Worksheets(CStr(Me.ComboBox1)).Activate

        Range("F4").Select

Call Module3.TrouveDoublon

End If

End Sub

et mon code dans le module est le suivant :

Type TableauType
  Contenu As String
  Coordonnee As Integer
End Type

Sub TrouveDoublon()
  Dim Tableau() As TableauType
  Dim Cellule, Haut, Bas, Compteur, C2
    Dim LaFeuille As Worksheet
   

 
  Colonne = ActiveCell.Column
  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(Compteur).Coordonnee, Colonne)
        Cells(Tableau(C2).Coordonnee, Colonne)
      End If
    Next
  Next
 
End Sub

A priori c'est pas tout à fait çà

Quelqu'un pour m'aider?

Merci!!

3 réponses

freshyback Messages postés 34 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 16 mars 2008
7 mars 2008 à 16:12
J'arrive à identifier les doublons mais pour ce ki en est du calcul je  rame un peu voila mon code pour l'instant

Private Sub CommandButton1_Click()
  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 i 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)
     
    Tableau = Plage.Value
    ReDim Preserve Resultat(2, 1)
   
    On Error Resume Next
    'boucle sur la plage à tester
    For i = 1 To Plage.Count
        'Utilise une collection pour rechercher les doublons
        '(les collections n'acceptent que des données uniques)
        Un.Add Tableau(i, 1), Tableau(i, 1)
       
        'S'il y a une erreur (donc presence d'un doublon)
        If Err <> 0 Then
           
            'boucle sur le tableau des doublons pour verifier s'il a deja
            'été identifié
            For j = 1 To m + 1
                'Si oui , on  incrément le compteur
                If Resultat(1, j) = Tableau(i, 1) Then
                    Resultat(2, j) = Resultat(2, j) + 1
                    Err.Clear
                    Exit For
                End If
            Next j
               
                'Si non, on ajoute le doublon dans le tableau
                If Err <> 0 Then
                    Resultat(1, m + 1) = Tableau(i, 1)
                    Resultat(2, m + 1) = 1
                   
                    m = m + 1
                    Err.Clear
                    ReDim Preserve Resultat(2, m + 1)
                End If
        End If
    Next i
 

quelqu'un peut m'aider?
Merci  
0
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
7 mars 2008 à 16:49
Au pire ajoute un colonne temporaire comme ca :
=IF(COUNTIF(C:C,C1)>1,"Dup","")  'CHERCHE LES DOUBLONS DE LA COLONNE C POUR LA VALEUR DE C1
Et apres fait un
Do While/Loop qui met la bonne formule selon la valeur dup ou "" ... ?

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
0
freshyback Messages postés 34 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 16 mars 2008
7 mars 2008 à 17:10
ui mais c'est une valeur aléatoire donc jpe pas vraiment faire cke tu propose!!!
T'a pas une autre idée?
Parck'en fait ce ke je faire c'est :

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.
0
Rejoignez-nous