Suppression doublon dans une colonne après consolidation fic
Bonjour le Forum,
Je coince depuis quelques jours sur une macro d'importation que j'ai créé en glanant des codes ici et là.
Problème :
1/ Je souhaiterais extraire uniquement les lignes avec des valeurs numériques dans la colonne D pour une plage définie comme suit : A12:Vx (avec X = dernière ligne non vide de la colonne A) et les coller en valeur dans l'onglet "data".
2/ Je souhaiterais extraire uniquement les lignes avec des formules dans la colonne D pour une plage définie comme suit : A12:Vx (avec X = dernière ligne non vide de la colonne A) et les coller en valeur dans l'onglet "dataTotal".
3/ Concernat la gestion des doublons, j'ai créé une macro qui concatène les colonnes A et C dans la colonne X. Cela me sert de clé. J'utilise ensuite le Dictionary pour identifier les doublons. Problème: il reste encore des doublons !!! Voici le code de la macro :
Sub Doublons()
Columns(24).Select
Selection.FormulaR1C1 = "=RC[-23]&"" ""&RC[-21]"
Columns(24).Copy
Columns(24).Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.DisplayAlerts = False
Dim Unique As Object, Cel As Range
Set Unique = CreateObject("Scripting.Dictionary")
For Each Cel In Range("x2", Range("x2").End(xlDown))
If Not Unique.Exists(Cel.Value) Then Unique.Add Cel.Value, Cel.Value
Cel.EntireRow.Delete Shift:=xlUp
'Range("x2:x" & Unique.Count) = Application.Transpose(Unique.items)
Next Cel
End SubJe joins un fichier pays mais le fichier de compilation est trop lourd malgré le zip.
S'il vous le faut merci de m'envoyer un message privé.
Je vous remercie d'avance pour toute aide que vous pourriez m'apportée.
Cordialement,
Gigelle
Bonsoir,
Je te donne une piste pour la suppression
on part du bas vers le haut
for i=derniere_ligne to premiere_ligne step -1
Test unicité sous forme d'un if
If ...
Donc pas unique
row(i).delete
End if
next
Bonsoir VB_Troyes,
Merci pour cette piste. Je vais l'explorer et vous tiens au courant.
Cordialement
Gigelle
Re :
J'ai essayé ce code
Sub doublons()
' concatene les données de la col A et C
Columns("w:w").Select
Selection.FormulaR1C1 = "=RC[-22]&"" ""&RC[-20]"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.DisplayAlerts = False
Dim DernLigne As Long, n1 As Long
DernLigne = Worksheets("data").Range("x" & Rows.Count).End(xlUp).Row
For n1 = 1 To DernLigne
With Worksheets("data").Cells(n1, 1)
' supprime les doublons
ThisWorkbook.Sheets("data").Range("a1").CurrentRegion.RemoveDuplicates Columns:=23, Header:=xlGuess
End With
Next n1
End SubCependant, il ne prend pas en compte l'indication de bas en haut que j'ai traduit par With Worksheets("data").Cells(n1, 1).
Quelqu'un aurait-il la gentillesse de m'aider ?
D'avance, je vous en remercie.
En d'autres termes, j'importe des fichiers qui peuvent être amenés à changer. Ce que je voudrais c'est garder les doublons qui correspondent au dernier fichier importé.
Exemple :
A1 Anne B1 15
A2 Vincent B2 13
A3 Claire B3 10
A4 Nicolas B4 9
A5 Vincent B5 14
En colonne A, les prénoms et en B les notes. Si je réinporte le fichier de l'élève Vincent, sa note a été corrigée à 14 au lieu de 13. Je veux garder le doublon correspondant à la ligne 5 et non à la ligne 2.
Or avec le remove duplicate, Excel supprime les doublons de haut en bas. Et dans ma macro d'importation, les nouveaux fichiers sont collés les un après les autres. Donc pour prendre en compte les mises à jours des fichiers importés, il faudrait que Excel supprime les doublons de bas en haut.
J'espère que c'est plus clair ?
Merci d'avance.
Bonsoir
Pourriez vous joindre le fichier excel correspondant
merci
Bonjour le Forum,
Je pense avoir trouvé une macro qui fonctionne et qui procède comme suit :
a) Ouverture des fichiers pays
b) Sélection de la plage à copier
c) Collage de la plage dans le fichier Compil
d) Indexation des numéros de lignes jusqu’à la dernière ligne non vide
e) Tri décroissant sur la colonne Index
f) Suppression des doublons en prenant en compte le résultat de la concaténation des colonnes A et C
g) Tri croissant de la colonne Index
Concernant le point b), j’aimerais maintenant poser la double condition suivante :
1) Si la cellule A est différente de 0, alors sélectionner le CurrentRegion (ctrl *) et décaler de 9 lignes vers le haut (afin de ne pas prendre les lignes de Total, Checks et Total YTD)
2) Si la colonne D (Janvier) contient des valeurs (nombres), pour la sélection correspondant au 1) sélectionner toutes les lignes.
Par exemple pour le fichier Algérie, cela reviendrait à sélectionner les plages contiguës suivantes : A12 à V17 ; A19 à V24 ; A26 à V31 ; A33 à V38 ; A40 à V45 ; A47 à V52, etc ; et si les valeurs 0 étaient inscrites dans les cellules A75 à A81, la plage A75 à V80 n’aurait pas été sélectionnée.
Comment puis -je procéder sachant que je voudrais également copier /coller les lignes de sous-total c’est-à-dire les lignes 18, 25, 32, etc dans un autre onglet du fichier Compil ??
Je joins mon fichier Compil avec le code de la macro et deux fichiers pays pour exemple.
La macro 3 correspond à la macro d'importation et la macro 12 correspond à la macro de suppression des doublons.
Je vous remercie d’avance de votre aide.