freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 mars 2008
-
7 mars 2008 à 13:43
freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 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
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
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 20101 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 "" ... ?
freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 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.