Macro pour doublons

  • Initiateur de la discussion Temjeh
  • Date de début
T

Temjeh

Guest
Bonsoir le Furum

J'ai déja poser ce genre de question mais pas exactement celle-là

Dans une feuil1 je veut sélectionner les col 1,2,3 (avec macro)et supprimer tout les doublons de la colonne 1 et supprimer leur ligne en même temps.

J'ai essayé avec filtre élaboré mais ca marche pas trop car il cache les doublon ne les suppriment pas!! puis il y a un ptit bug en sélection multiple

Merci beaucoup pour votre aide

Temjeh
 
T

titioui

Guest
Bonjour, mon problème est légèrement différent :

je cherche à éviter des doublons dans une colonne unique.
Je m'explique : quand je rentre un numéro dans la colonne D, un avertissement me dirait que le numéro existe déjà dans cette colonne ! (je précise que les données peuvent être numériques ou alphanumériques)

Quelqu'un a - t -il une réponse ? Merci
 
M

myDearFriend

Guest
Bonsoir titioui, le Forum.


En effet, titioui, cette macro n'est pas adapté à ton problème...
Sur ce site, il existe un Moteur de Recherche qui te permettra de trouver réponse à ta question sans aucun problème.

Tu y trouveras nombre de messages sur le sujet, et parmis eux : Lien supprimé.

Je te conseille également de faire un tour par la Lien supprimé, où tu trouveras notamment le fichier "Doublons" de Celeda et Monique, sans oublier bien sûr l'excellent "Coffret des listes XLD 2" de Celeda.


Cordialement.

Didier_mDF
myDearFriend-3.gif
 
D

David

Guest
Salut à tous

je trouve le code de zon dément, chez moi ça marche dément, 2 jours que je cherche comment enlever les doublons et zon est arrivé.

je sais que c'est un peu tard vu que c'était au mois de juin 2004, mais mieux vaut tard que jamais.


Meeeerrrrcccccciiiiiii
 
R

RAH

Guest
Coucou Zon, Je me joins à tous pour te remercier pour ton code, et étant moi-même un n00b de première en la matière, je ne sais trop comment l'adapter à mes besoins qui ne sont pourtant pas très éloignés : en fait, je voudrais la même chose (trier la liste et virer les doublons opur n'en concerver qu'une seule itération), sauf que j'ai besoin de garder l'original intact.

Donc, il faudrait que la fonction prenne en argument un ou plusieurs arrays (si possible spécifiable en dehors du code), genre A1:A20, puis A23:A28, et recopie juste à côté (en B) la nouvelle liste, en commençant par la même ligne que le début des arrays spécifiés :D (B1 et B23, donc).

En outre, j'ignore si c'est possible, mais ce serait carrément idéal que la macro se lance dès que les arrays sont modifiés (soit directement, soit parce qu'ils incluent des valeurs prise dans une autre feuille, et que celles-ci ont été changées).

Bref, moi aussi, je crie au secours :)

Merci d'avance :p
 
S

samuel

Guest
Hello,

Je suis à la recherche d'une macro pour les doublons. Vu le succès de ta solution, je voulais telecharger ton fichier mais il demande un mot de passe.

J'utilise les macro d'excel, peut être faut-il le vrai logiciel ???

A bientôt

Bonne fin de WE
Samuel
 
M

myDearFriend

Guest
Bonsoir Samuel, le Forum.


Je suppose que tu veux parler du fichier mDF_Doublons31.zip Samuel ?

Si c'est le cas, je t'informe qu'une fois lancé, tu trouveras un nouveau bouton nommé "Doublons" dans la barre d'outils principale d'Excel. C'est grâce à ce bouton que tu lanceras la macro elle-même.

Et si toutefois, tu désires accéder tout de même au code VBA correspondant, le mot de passe est "mydearfriend"....


Cordialement.

Didier_mDF
myDearFriend-3.gif
 
Z

Zon

Guest
Salut ,

Désolé pour le retard,

Pour titioui

Un exemple en VBA , à toi d'adapter les plages colles le code ci dessous dans le module de la feuille où tu veux controler la saisie:

Const ZoneSaisie$ = "D1:D300" 'Plage où on saisie les données
Const ZoneCritere$ = "C1:C300" 'Plage de critere

Private Sub Worksheet_Change(ByVal Target As Range)
 With Target
   If .Cells.Count > 1 Then Exit Sub
   If Not Intersect(Range(ZoneSasie), .Cells) Is Nothing Then
    If DetectDoublons(Range(ZoneCritere), .Value) Then
      MsgBox "trouvé"
      .Value = ""
    End If
   End If
 End With
End Sub

Function DetectDoublons(Plage As Range, Crit) As Boolean
 DetectDoublons = Evaluate("COUNTIF(" & Plage.Parent.Name & "!" & Plage.Address _
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& ",""" & Crit & """)") > 0 And Crit <> ""
End Function

Pour RAH:

Je sens l'usine à gaz poindre par ce que tu demandes, pour des plages de quelque lignes l'oeil ou les formules peuvent faire l'affaire.

Mais pour te mettre sur la voie, tu peux mettre 30 arguments à l'argument range
ex: Set Plage = Range([A1:23], [A28.A35],[C28.C35])


Pour détecter si la zone des critères a changée, tu peux t'inspirer de ce que j'ai laissé pour titoui. si tu t'en sors pas mets un fichier exemple avec le code que tu as essayé d'adapter...

Enfin voici une fontion pour demander à l'utlisateur de choisir une plage

Function PlageS(Ch$) As Range
On Error Resume Next
Set Plage = Application.InputBox(Ch, , , , , , , 8)
End Function

Pour l'utiliser:
Dim Pl as range
dim T

set pl=plages("Sélectionnez la zone1")
if not pl is nothing then t=pl.value
....

A+++
 
R

RAH

Guest
Merci pour les précisions, mais je n'ai pas le niveau ou le temps ;)

Je me suis donc contenté d'une formule qui fonctionne à base de COUNTIF, et d'une macro de triage pour mettre les blancs à la fin en fait.

Mais merci encore ;)
 

Discussions similaires

Réponses
15
Affichages
727
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 112
Messages
2 085 411
Membres
102 885
dernier inscrit
AISSOU