freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 mars 2008
-
10 mars 2008 à 19:21
freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 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
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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
freshyback
Messages postés34Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention16 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!!!!!