XL 2016 resultat sans doublon

lamho27

XLDnaute Occasionnel
Bonjour le forum
j'ai 12 colonnes de 12 mois avec des noms de personnes , je voudrais résumer dans colonne "nom" toutes les nom de 12 mois sans nom répétition ( sans doubler )
merci d'avance
 

Pièces jointes

  • Classeur2.xlsx
    10.5 KB · Affichages: 48

Paf

XLDnaute Barbatruc
Bonjour lamho27

un essai macro:

Code:
Sub Lamho27()
Dim Dico, i As Long, j As Byte
Set Dico = CreateObject("Scripting.Dictionary")

With Worksheets("Feuil1")
For j = 2 To 13 ' pour chaque colonne de B à M
  For i = 3 To .Cells(Cells.Rows.Count, j).End(xlUp).Row
  Dico(CStr(.Cells(i, j))) = ""
  Next
Next
.Cells(3, 14).Resize(Dico.Count, 1) = Application.Transpose(Dico.keys)
End With

A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Avec fonction perso

-maj auto si on modifie les noms
-code réutilisable

Sélectionner N3:N29
=sansdoublons(A3:M17)
valider avec maj+ctrl+entrée

ou

Sélectionner P3:p29
=sansdoublonsTrié(A3:M17)
valider avec maj+ctrl+entrée

JB
 

Pièces jointes

  • SansDoublonsxxx.xls
    49 KB · Affichages: 56
Dernière édition:

Chris401

XLDnaute Accro
Tu n'as pas modifié les cellules des plages nommées MOIS

Ecemple pour janvier, au lieu de :
Code:
=DECALER(Calendrier!$B$2;1;;NBVAL(Calendrier!$B:$B)-1)
Il faut :
Code:
=DECALER(Calendrier!$AQ$2;1;;NBVAL(Calendrier!$AQ:$AQ)-1)

Mais puisque tu as déjà des macros dans ton fichier, tu devrais utiliser la fonction personnalisée de JB
(Regarde les modules dans son fichier)
 

Chris401

XLDnaute Accro
Dans les noms définis

Pour le nom janvier, dans "Fait référence à"
Code:
 =DECALER(Calendrier!$AQ$2;1;;NBVAL(Calendrier!$AQ:$AQ)-1)

Idem pour les autres mois en modifiant les colonnes

Mais regarde avec le code de JB dans ton fichier (Module3) - Plus besoin des noms définis
 

Pièces jointes

  • Copie de test-1.xlsm
    2.8 MB · Affichages: 45

DoubleZero

XLDnaute Barbatruc
Re-bonjour,

... est ce qu'on peut faire automatique sans bouton clic ?...

Dans un module standard :
VB:
Option Explicit
Sub Code_de_Paf()
    Dim Dico, i As Long, j As Byte
    Set Dico = CreateObject("Scripting.Dictionary")
    With Worksheets("Feuil1")
        For j = 2 To 13    ' pour chaque colonne de B à M
            For i = 3 To .Cells(Cells.Rows.Count, j).End(xlUp).Row
                Dico(CStr(.Cells(i, j))) = ""
            Next
        Next
        .Cells(3, 14).Resize(Dico.Count, 1) = Application.Transpose(Dico.keys)
    End With
End Sub

Dans le module de l'onglet de travail :
VB:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = 0
    If Not Intersect(Target, Range("b3:m65000")) Is Nothing Then
        Range(Range("n3"), Range("n3").End(xlDown)) = ""
        Call Code_de_Paf
        Range("n2:n65000").Sort Range("n2"), xlAscending, Header:=xlYes ' trier
    End If
    Application.ScreenUpdating = -1
End Sub

A bientôt :)
 

Discussions similaires

Réponses
22
Affichages
874

Statistiques des forums

Discussions
312 488
Messages
2 088 862
Membres
103 979
dernier inscrit
imed