Bonjour,
Pour une de mes macros j'ai besoin de faire à un moment un petit travail qui, bien que ne paraissant pas bien compliqué, me pose plus de problèmes que prévus.
Comme c'est des données confidentielles je ne peux pas vous passer le fichier, mais pour que vous puissiez réellement m'aider j'ai fait un petit fichier annexe simplifier (normalement il y a une vingtaine de colonnes et des milliers de ligne mais dans l'exemple que je vous montre j'ai fait plus simple car ça revient au même).
En fait j'ai un tableau donc une colonne contient des id classés (c'est des nombres, donc, du plus petit au plus grand). Mais certains sont en double et je voudrais et je voudrais enlever ces doublons tout en récupérant certaines données qui sont sur l'une et pas sur l'autre (par ex soit il contient qqch dans la 3eme colonne et pas dans les colonnes suivantes, soit il ne contient rien dans la 3eme mais contient de l'info dans les suivantes). J'ai mis en rouge tous ceux qui sont en double donc on fait un filtre pour travailler uniquement sur ceux là.
Par exemple si en C6 et C7 j'ai la valeur 1 alors c'est un doublon. En E6 j'ai 100 et en E7 j'ai rien. en F:H6 j'ai rien et en F:H7 j'ai quelquechose. Alors je vais copier E6 et le mettre en E7 puis supprimer la ligne 6. Vous voyez ?
Voici le code :
merci d'avance pour votre précieuse aide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Sub testFactice123() ActiveSheet.Range("$C$5:$H$26").AutoFilter Field:=1, Criteria1:=RGB(255, 199, 206), Operator:=xlFilterCellColor temp = 0 temp = 0 boul1 = False boul2 = False ligneTemp = 1 For Each c In [_FilterDataBase].Resize(, 1).SpecialCells(xlCellTypeVisible) ligne = c.Row If ligne > 2 Then If Cells(ligne, 5) = "" Then If boul1 = True Then Cells(ligne, 5) = temp boul1 = False Else ligneTemp = ligne boul2 = True End If End If If Cells(ligne, 5) <> "" Then If boul2 = True Then Cells(ligneTemp, 5) = Cells(ligne, 5) boul2 = False Else temp = Cells(ligne, 5) boul1 = True End If Rows(ligne).Select Selection.Delete Shift:=xlUp End If End If Next c End Sub
Partager