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 Sub

Je joins un fichier pays mais le fichier de compilation est trop lourd malgré le zip.

20algerie.xlsx (51.92 Ko)

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 Sub

Cependant, 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.

23algerie.xlsx (51.94 Ko)
20algerie-2.xlsx (51.95 Ko)
26compil-pays-3.7z (69.00 Octets)
Rechercher des sujets similaires à "suppression doublon colonne consolidation fic"