Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Gestion des doublons Incompréhension du code

  • Initiateur de la discussion Initiateur de la discussion Goufra
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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:
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
1 K
Réponses
3
Affichages
922
Réponses
3
Affichages
430
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
613
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…