Gestion des doublons Incompréhension du code

Goufra

XLDnaute Occasionnel
Bonjour,

Gestion des doublons
Je rencontre deux difficultés avec le code que j’ai trouvé sur le site
Formation Excel VBA JB
(Site que je vous recommande, vous avez quasiment la réponse à toutes vos questions)

Dans mon exemple :

1/ la plage c5 :c27 est définie, son nom est plage1
Pour que le code fonctionne je dois écrire en c4 plage1.
Tout autre nom en C4 ou cellule vide en C4 provoque une erreur.

Je ne comprends pas .



2/ Définition des variables
Je n’arrive pas à définir la variable, a me semble-t-il, j’obtiens variable objet ou variable de bloc with non définie

Dim lg%, cl%, Mondico As Object , a As object

Dim plage As Range, c As Range, dest As Range

Je vous remercie par avance de votre aide.

Bonne journée à vous
JC Goufra
 

Pièces jointes

  • goufra.xlsm
    17.1 KB · Affichages: 39
  • goufra.xlsm
    17.1 KB · Affichages: 38
  • goufra.xlsm
    17.1 KB · Affichages: 37

david84

XLDnaute Barbatruc
Re : Gestion des doublons Incompréhension du code

Bonjour,
1/ la plage c5 :c27 est définie, son nom est plage1
Pour que le code fonctionne je dois écrire en c4 plage1.
Tout autre nom en C4 ou cellule vide en C4 provoque une erreur.

Je ne comprends pas .
a = [plage1] suffit (Plage1 étant une plage définie).
A+
Edit : concernant la déclaration des variables, ouvre la fenêtre des variables locales et fais fonctionner ton code en mode pas à pas : tu verras ainsi le type de variable une fois celle-ci initialisée.

Salut Pierrejean
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Gestion des doublons Incompréhension du code

Bonjour le fil, bonjour le forum,

En pièce jointe ton fichier modifié avec le code ci-dessous :

Code:
Option Explicit

Sub test1()
Dim d As Object 'déclare la variable d (Dictionnaire)
Dim c As Range 'déclare la variable c (Cellule)


Range("Recap").CurrentRegion.Offset(1, 0).Clear 'efface les ancienes données
Set d = CreateObject("Scripting.Dictionary") 'définit le dictionnaire d
For Each c In Range("Plage1") 'boucle sur toutes les cellules c de la plage nommée "Plage1"
    d(c.Value) = "" 'alimente le dictionnaire d
Next c 'prochaine cellule de la boucle
Range("recap").Offset(1, 0).Resize(d.Count, 1) = Application.Transpose(d.keys) 'récupère le dictionnaire sans doublons dans la cellule en dessous de la plage nommée "recap"
Set d = Nothing 'vide le dictionnaire d
'tri alphabétique des données récupérées
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("recap"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
    .SetRange Range("recap").CurrentRegion
    .Header = xlYes
    .Apply
End With
End Sub
Le fichier :
 

Pièces jointes

  • Goufra_v01.xlsm
    25.1 KB · Affichages: 32

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 202
Membres
103 157
dernier inscrit
youma