Adresser n° ID unique identique pour doublons

Salut à tous,

Alors voilà, je suis en train faire un peu de classement d'archives au boulot ici, et on me demande de remplir un fichier excel en tenant compte de plusieures choses, notamment:

  • Un n° adressé à chaque élément physique se trouvant dans les boîtes d'archive
  • Un n° adressé à chaque dossier différent
  • Un n° de dossier (recherché via l'intranet)

Par exemple, si un classeur ne comporte qu'un seul dossier, et que j'ai numéroté ce classeur 1, ça donne :

1 - 1 - n° intranet

Si ensuite le classeur 2 comporte lui 3 dossiers différents, ça donne :

2 - 2 - n° intranet

2 - 3 - n° intranet

2 - 4 - n° intranet

Si enfin le 3ème et le 4ème claseur ont tous les deux le même dossier (par ex trop grand pour rentrer dans un seul classeur), alors ça donne :

3 - 5 - n° intranet

4 - 5 - n° intranet

Etc...

Ce qui me prose problème, c'est que les dossiers répartis dans plusieurs classeurs différents ne se suivent pas toujours, et cela peut mener à des erreurs si je ne fais pas rigoureusement attention, ce qui est difficile quand il y a plus de 500 boîtes (contenant 3 à 7 classeurs) à référencer...

Ce que je voudrais, c'est créer une formule qui regarde s'il y a des doubles dans la liste des n° de dossier, et qui attribue à chaque dossier un numéro unique partant de 1, qui aficherait donc une prédiction de n° adressé au dossier, afin que je ne me perde pas dans mes comptes.

En y réfléchissant, il faudrait une formule qui soit répartie en plusieurs temps:

  • D'abord, regarder dans la colonne des n° intranet et répertorier (dans l'ordre d'apparition) chaque n° unique, en zappant les doublons.
  • Adresser à chacun d'entre eux un n° unique (allant de 1 pour le 1er à X pour le Xème)
  • Regarder à nouveau, sur chaque rangée, le n° intranet, et aller chercher et recopier le n° généré qui lui est attribué dans une cellule parallèle afin que je puisse comparer et vérifier.

Pour ce qui est de l'attribution d'un n° unique/dossier, ce qui me parait le plus simple serait de créér une colonne incrémentée automatiquement préfaite (tout bête), mais je ne sais pas comment amener les n° intranet dans l'ordre et en zappant les doublons dans une colonne parallèle.

Pour le reste, je pense à VLOOKUP (RECHERCHEV), mais je n'ai pas vraiment d'idée..

Voici le fichier excel, pour une meilleure compréhension x)

Je tiens à préciser que je n'envisage pas la solution du filtre, j'aimerais que cela se mette à jour dès que j'entre un n° intranet.

Merci d'avance =)

40book1.zip (8.09 Ko)

Up ? ... =/

Bonjour,

Pour que ce soit un peu plus clair met en colonne F par exemple, quelque résultats souhaiter.

et reposte le classeur

A+

Voilà, j'ai fait un schéma détaillé de ce que je cherche à faire

Il se trouve en PJ

Cordialement,

58book2.xlsx (12.94 Ko)

Si j'ai bien compris, ça revient à supprimer les doublons de la colonne C.

lermite a écrit :

Si j'ai bien compris, ça revient à supprimer les doublons de la colonne C.

Pas du tout... Il faut garder les doublons, mais leur adresser le même n° qu'à l'original. S'il y a des doublons, cela signifie simplement qu'un même dossier est réparti dans plusieurs classeurs. Mais ils doivent impérativement être référencés pour les archivistes.

Si,si, j'ai bien compris sauf qu'il faut d'abord faire une copie des colonne B et C et ensuite enlever les doublons de la copie.

Ça donne exactement le résultat de ton exemple.

A+

lermite a écrit :

Si,si, j'ai bien compris sauf qu'il faut d'abord faire une copie des colonne B et C et ensuite enlever les doublons de la copie.

Ça donne exactement le résultat de ton exemple.

A+

Il faut juste copier la colonne C dans une colonne à part et supprimer les doublons. Une fois ça étant fait, il me suffit de faire une recherchev du NOMCOM dans la liste à part et j'aurai automatiquement le n° recherché.

Le truc c'est que: Je n'arrive pas à copier la colonne C sans prendre les doublons...

Sub SuppDoublon()
Dim Plage As Range
    With Sheets("Sheet1")
        Set Plage = Range(Cells(1, 2), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 3))
        Plage.Copy [F1]
        Set Plage = .Range(Cells(1, 6), .Cells(Cells(Rows.Count, 6).End(xlUp).Row, 7))
        Plage.RemoveDuplicates Columns:=2, Header:=xlYes
    End With
End Sub

Copie les colonnes B et C en F et G ensuite supprime les doublons.

A+

lermite a écrit :
Sub SuppDoublon()
Dim Plage As Range
    With Sheets("Sheet1")
        Set Plage = Range(Cells(1, 2), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 3))
        Plage.Copy [F1]
        Set Plage = .Range(Cells(1, 6), .Cells(Cells(Rows.Count, 6).End(xlUp).Row, 7))
        Plage.RemoveDuplicates Columns:=2, Header:=xlYes
    End With
End Sub

Copie les colonnes B et C en F et G ensuite supprime les doublons.

A+

Merci, ça marche nickel Cependant, peux-tu m'expliquer dans le code quelles sont les références de la colonne C ? Car dans ma feuille officielle il s'agit d'une autre colonne (G). Et aussi, puisqu'il s'agit d'une macro, y a-t-il un moyen de l'éxécuter à chaque action ?

Merci du temps que tu me consacres =)

Avec les "lettres" tu comprendras peut-être mieux.

Sinon, donne les colonnes où tu copie j'adapterais.

Sub SuppDoublon()
Dim Plage As Range
    With Sheets("Sheet1")
        Set Plage = Range(Cells(1, "B"), Cells(Cells(Rows.Count, "A").End(xlUp).Row, "C"))
        Plage.Copy [F1]
        Set Plage = .Range(Cells(1, "F"), .Cells(Cells(Rows.Count, "F").End(xlUp).Row, "G"))
        Plage.RemoveDuplicates Columns:=2, Header:=xlYes
    End With
End Sub

Pour actionner à chaque action... Quel action ?

Ben rafraîchir la liste créée par cette macro au fur et à mesure que j'ajoute des NOMCOM =)

Tu les ajoute comment ? sois un peu plus précis dans tes réponses Svp.

J'ajoute les NOMCOM (Colonne C) un par un une fois que je les ai trouvé en intranet. Je construis la feuille petit à petit, et comme il y en a énormément, je voulais être sûr que leur répertoriage se fasse sans soucis (qu'ils aient tous un n° unique, en sachant que je puisse tomber sur des doublons qui auraient alors le même n° que l'original)

Je ne sais pas trop comment rendre ça plus explicite =/ Désolé vraiment >.<

Non, maintenant c'est clair.

Suivant le mode d'ajout les solutions sont différentes.

Tu parle de doublon ? si la macro est relancée c'est ce que tu veux ?

Tu à compris pour les colonnes ?

En fait, je me rends compte que ça ne marchera jamais... Parce qu'une fois que j'ai cette liste copiée sans doublons, et que je demande aux cellule d'effectuer une recherchev du NOMCOM dans cette liste pour en tirer un numéro prédéfini, ça me renvoie une erreur.. parce que la liste doit d'abord être triée par ordre alphabétique.

Sauf si...

Est-ce que tu pourrais m'écrire une macro qui:

Sélectionne la colonne G, la copie dans la colonne P en enlevant les doublons

Trie la colonne P (en incluant la colonne Q) par ordre alphabétique

Dans chaque cellule de la colonne B, effectuer une RechercheV de chaque nomcom de la rangée dans la table P:Q en prenant la rangée 2 (ex: =RECHERCHEV(G2,$P:$Q, 2)

Trier la colonne Q (en incluant la colonne P) par ordre croissant

En pj, le classeur afin que tu puisses visualiser

Merci d'avance, j'espère que je ne t'en demande pas trop..

11book2.xlsm (16.45 Ko)

J'ai suivi ce que tu demande pour en arriver à la conclusion que (probablement) toutes ces manipulations ne sont pas nécessaires.

Test ce code et tu dis.

Sub Lister()
Dim MyDico, Lig As Long, Cle As Long
    Cle = 1
    Set MyDico = CreateObject("Scripting.Dictionary")
    With Sheets("Sheet1")
        For Lig = 2 To .[G65535].End(xlUp).Row
            If MyDico.Exists(.Cells(Lig, "G").Value) Then
                Cells(Lig, 2).Value = MyDico.Item(.Cells(Lig, "G").Value)
            Else
                MyDico.Add .Cells(Lig, "G").Value, Cle
                Cells(Lig, 2).Value = Cle
                Cle = Cle + 1
            End If
        Next Lig
    End With
End Sub

Désolé pour le temps de réponse, journée chargée au boulot ajd...

Ca marche nickel, sauf qu'aucun NOMCOM n'est collé dans la colonne P, ce qui ne permet aucune vérification =\

En fait... ce code ne fait rien de tout cela, non ? C'est la fonction VBA dictionnaire qui s'occupe d'indexer tout les NOMCOMs

Merci beaucoup pour ton aide en tous cas

PS, as-tu été voir mon apport dans la catégorie "Applis" de ce forum ?

Comment ça..?

Rechercher des sujets similaires à "adresser unique identique doublons"