XL pour MAC Supprimer les doublons en VBA

yoanriv

XLDnaute Nouveau
Bonjour,
je souhaiterai supprimer les doublons d'une colonne en VBA. et valider la fenêtre qui s'ouvre automatiquement.
Pouvez vous m'aider ?
Merci
 

Staple1600

XLDnaute Barbatruc
Re

Si vraiment, du VBA tu veux alors en voici
(tout le mérite revient à l'enregistreur de macros ;))
VB:
Sub No_Dupes_Baby()
Dim x&
x = Selection.Column
Application.DisplayAlerts = False
Columns(x).RemoveDuplicates Columns:=1, Header:=xlYes
End Sub
 

yoanriv

XLDnaute Nouveau
Moi j'ai ça qui s'ouvre

Sans titre.jpeg

Comment faire Ok dans la macro ?
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

•>yoanriv
Sur Windows, cette ligne de code désactive l'affichage des alertes
Application.DisplayAlerts = False
Essaie cette macro de test pour voir si elle fonctionne ou pas sur Mac
VB:
Sub Test()
Application.DisplayAlerts = False
Sheets(1).Delete
End Sub
A tester sur un classeur vierge avec deux feuilles
Normalement cette macro supprime la feuille 1 sans que s'affiche le message d'alerte.
Est-ce le cas sur ton Mac?
Si il s'affiche, alors il faut trouver la syntaxe équivalente sous Mac.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

Une autre manière de faire avec un tableau et sans message.
nota: la colonne résultat sans doublon sera triée.
VB:
Sub TEST()
   'on traite la colonne E de la feuille nommée Feuil1
   SupprDoublonColonne Sheets("Feuil1").Range("e:e")
End Sub

Sub SupprDoublonColonne(Colonne As Range)
' L'argument Colonne est un range qui est une colonne unique
Dim derlig&, nbTotLig&, i&, n&, t

   ' vérif si Colonne est bien une colonne entière
   nbTotLig = Colonne.Parent.Columns(1).Rows.Count
   If Colonne.Columns.Count > 1 Or Colonne.Rows.Count <> nbTotLig Then
      MsgBox "l'argument de cette fonction n'est pas une colonne : Echec!", vbCritical
      Exit Sub
   End If

   ' Tri et suppression des doublons
   With Colonne
      derlig = .Cells(.Rows.Count, 1).End(xlUp).Row
      If derlig = 1 Then Exit Sub
      .Resize(derlig).Sort key1:=Colonne(1, 1), order1:=xlAscending, Header:=xlNo, MatchCase:=False
      t = .Resize(derlig).Value: n = 1
      For i = 2 To derlig
         If t(i, 1) <> t(n, 1) Then n = n + 1: t(n, 1) = t(i, 1)
      Next i
      For i = n + 1 To derlig: t(i, 1) = Empty: Next
      .Resize(derlig) = t
      'MsgBox "il reste " & n & " élément(s)."
   End With
End Sub

NOTA! si la colonne comporte un en-tête, me le dire. Je modifierai la macro en conséquence...
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour mapomme

Tu tombes bien
Si je n'abuse ton pseudo (hélas pour ma pomme) n'est pas en lien avec Steve J.
Mais peut-être ta culture binaire sait pourquoi sur un Mac, Application.DisplayAlerts semble inopérant ?

PS: Sinon tu as vu que j'ai besoin de ta lampe de poche dans le fil de chalie2015 ?

EDITION: Question du dimanche avant mon dernier devoir civique (may be?)
Pourquoi tu t'abstiens d'utiliser la fonction native d'Excel pour supprimer les doublons?
Pour le plaisir d'aller dans VBE en pyjama, les doigts plein de miettes de croissant, alors que l'odeur d'un bon café chaud inonde la pièce où ton PC ronronne?
Euh pardon, je m'égare, c'est mon imagination qui s'emballe
T'es peut-être plus branché muffin et bacon au petit déj ;)
Mais cela laisse autant de gras sur le clavier que les croissants
 
Dernière édition:

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali