Numéro unique

Bonjour a tous,

Je suis à la recherche d'une formule (avec ou sans vba)

qui permet d'obtenir un numéro (ou nom) UNIQUE

Je possède un annuaire avec de nombreux contacts entreprises

et je souhaite utiliser les données sur un autre classeur avec les fonctions Index/Equiv.

(Nom / Prénom / Tel / Mail / Adresse / CP / Ville / etc....)

Dans mon classeur actuel, j'ai mis en colonne A ce fameux numéro unique en appelant la formule =ligne() qui me renvoi le numéro de ligne mais cela ne convient pas puisque j'utilise des filtres pour mes recherches.

Avez-vous une solution a me proposer ? Mes recherches n'ont pas porter leurs fruits !

Je souhaiterais aussi qu'a l'ajout d'un nouveau contact, le tableau excel implante un nouveau numéro jamais utilisé.

Par exemple si je copie une ligne déjà existante où je souhaite changer uniquement le nom, le nouveau numéro se crée automatiquement.

J’espère avoir était assez clair dans mes explication.

Merci par avance de votre aide.

Salut Benito,

Dans mon classeur actuel, j'ai mis en colonne A ce fameux numéro unique en appelant la formule =ligne() qui me renvoi le numéro de ligne mais cela ne convient pas puisque j'utilise des filtres pour mes recherche

Le résultat de la formule =LIGNE ne change pas même si tu utilise un filtre.

Par contre! si tu supprime une ligne, alors la le résultat va se modifier.

Est-ce que tu a besoin de maintenir le même numéro unique ?

Si oui, alors il faudra passer par VBA.

Je souhaiterais aussi qu'a l'ajout d'un nouveau contact, le tableau excel implante un nouveau numéro jamais utilisé.

Encore une fois l'utilisation de la formule =LIGNE suffit avec l'insertion d'un tableau.

Cf le fichier ci-joint : Insère une nouvelle ligne et fais une nouvelle saisie.

Tu verra que la colonne où il y a la formule =LIGNE défile automatiquement.

Si tu souhaite vraiment passer par VBA alors fais nous un retour

Restant à dispo !

128pour-benito.xlsx (11.01 Ko)

Bonjour,

en effet sur des filtres ça "tient" mais sur des tris c'est la cata

avoir en colonne un numéro qui correspond au numéro de ligne d'Excel, autant laisser la colonne d'entête le faire.

Par contre un numéro d'enregistrement (ou d'identification) qui reste "collé" aux données quelque soit le tri ou le filtre, alors il faut que la donnée face "partie" des données et qu'elle soit écrite en "dur", non ?

@ bientôt

LouReeD

Ci joint un fichier minimaliste :

Il suffit d'entrer un nouveau nom et le code se charge de trouver l'ID max auquel il ajoute 1 et inscrit le résultat en colonne A: du coup l'ID en en "dur" et il suit la ligne quelque soit le tri et/ou le filtre.

Pour remplir le tableau il suffit d'entrer un nouveau nom en colonne B sur la première ligne vide.

Attention ! Le code ne gère pas les erreurs de sélection multiples de cellules, ne prend pas en charge le fait de trouver des trous dans les ID afin de les combler...

@ bientôt

LouReeD

Bonjour

et merci pour votre rapidité de retour !

Le tableau fait par Juice correspond exactement a mon type de fichier.

Je souhaite effectivement que le numéro reste associé a une ligne (j'utilise ces données sur des autres classeurs)

Par exemple Entreprise C toujours associée au numéro 3 même si Entreprise B (numéro 2) est supprimé.

Besoin donc de maintenir le même numéro unique (que le numéro 2 ne soit pas réattribué si déjà créé et/ou supprimé)

Dans le tableau, en fonction du TRI (merci LouReeD pour les infos) le numéro unique varie !!!!

c'est le problème que je n'arrive pas a gérer.

Merci beaucoup pour vos aides

55pour-benito-1.xlsx (12.55 Ko)

Re,

LouReeD dans votre tableau le num ID se crée automatiquement.

J'ai agrandi le tableau et créé plusieurs lignes avec des noms différents.

A la suppression d'un ligne, l'ID initial change et si l'on modifie la syntaxe d'une ligne dans la colonne nom, cela change aussi les numéros préalablement mis en place.

Au niveau du trie, le numéro ID est bien en relation avec sa ligne de création

merci

Je me permet de répondre pour LouReeD (Coucou d'ailleurs !)

Rajoute cette ligne de code :

If ActiveSheet.Cells(Target.Row, 1).Value <> "" Then Exit Sub

Cette ligne évite la modification d'une cellule non vide et donc le bug lié à l'insertion ou la suppression de ligne

Attention ! Le code ne gère pas les erreurs de sélection multiples de cellules, ne prend pas en charge le fait de trouver des trous dans les ID afin de les combler...

En effet je n'ai pas mis "etc" à la suite.

En fonction de ce que l'on veut il y a des gardes fou à mettre !

Merci Juice

@ bientôt

LouReed

RE !

Solution validée ! cela fonctionne après l'ajout de la ligne de code.

A l'usage, il arrive de copier (dupliquer) une ligne complète pour ajouter une nouvelle personne.

Est-il possible de gérer cette copie avec l'ajout d'un nouveau ID et non la copie du même ID (qui ne devient plus unique ! )

Effectivement, mon Annuaire Entreprise répertorie plusieurs fois la même entreprise avec simplement nom différent.

Peut-être avez vous une solution. J'abuse sans doute de vos compétences

Merci beaucoup !

Re-

Je suis pas trop content du résultat, (la boucle test est un peu relou) mais bon faut tester pour avancer

Ci-joint le fichier de LouReeD modifié

Re !

Fichier en évolution ! COOL

L'ajout de nouveaux NOM fonctionne très bien, avec la création d'un nouvel ID a chaque fois.

Problème au niveau de la copie d'une ligne seule, cela copie aussi ID et colle la valeur. !!

Alors que si Copie de 2 lignes, les nouveaux ID sont corrects et uniques dans la continuité croissante des ID existants.

sans doute un ajustement au niveau du code ?

Merci par avance.

Bonsoir,

une dernière version :

Elle support l'ajout d'un nom, l'insertion d'une ligne avec numérotation de l'ID, du coup il suffit de remplir les données de la ligne crée soit par copier/coller d'une autre ligne soit "à la main", la suppression de ligne complète, mais elle supprime également l'ID si le nom "disparaît".

Elle garde en mémoire le dernier numéro d'ID utilisé, car si on a le 20 (le plus grand) et qu'il est supprimé, le suivant serait le 20 hors l'ID est unique et vous auriez deux noms avec le 20 dans vos archives, donc dans cette version le dernier ID est mis en mémoire en entête de colonne ID.

A vous les essais

@ bientôt

LouReeD

Bonjour LouReeD,

Je test la dernière version et cela me semble très correct !

Je met en place cela dans mon annuaire et après une mise en pratique je fait un retour pour savoir comment cela ce passe.

Merci

Re,

Le tableau correspond tout à fait aux attentes avec numéro unique (trie / ajout / suppression etc...). au top !

Après une mise en application concréte, je suis confronté a un problème que je n'avais pas exposé auparavant :

Il y a 2 feuilles sur ce classeur : une pour les entreprises / une pour les clients.

J'aimerais que les 2 feuilles fonctionnent de la même façon avec numéro unique

Pour ne pas mélanger le numéro unique, est-il possible d'ajouter une lettre devant la feuille des entreprises (e1 /e2...) / et une autre devant la feuille des clients (c1 / c2...) ?

J'ai dupliqué le code macro de la feuille 1 sur la feuille 2 mais cela ne fonctionne pas (ni sur la feuille 1 ni sur la feuille 2).

Pas si simple la macro.

Merci !!!!

Bonsoir,

un nouvel essai :

@ bientôt

LouReeD

Bonjour,

Je met en place mon annuaire avec ces méthodes macro et au premier usage je crois que c'est OK.

Je vous tiens au courant de l'évolution.

Merci

Bonjour à tous,

La proposition de LouReed revisitée.

Ah ! Ces tableaux…

A tester.

Cdlt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim n As Long
    If Target.ListObject Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Me.ListObjects(1).HeaderRowRange) Is Nothing Then Exit Sub
    If Not Intersect(Target, Me.ListObjects(1).ListColumns(2).DataBodyRange) Is Nothing Then
        If IsEmpty(Target) Then
            Target.Offset(, -1).Value = ""
        Else
            n = Target.Row - Me.ListObjects(1).HeaderRowRange.Cells(1).Row
            Target.Offset(, -1).Value = "C-" & Format(n, "0000")
        End If
    End If
End Sub

Bonjour,

Attention, sur la version revisité avec colonne ID, s'il l'on supprime une entreprise avec un ID, le numéro redevient attribuable.

La notion de numéro unique disparait alors !!

Le dernier essai de Looreed est fonctionnelle avec en tête de colonne le dernier numéro attribué +1.

Je crois que le problème du numéro unique est résolu et j'essai maintenant de le compiler avec une fonction de recherche intuitive en tête de page. A suivre sur ce sujet la :

https://forum.excel-pratique.com/viewtopic.php?f=2&t=117026&start=10

Sujet RESOLU. Merci a tous !

Re,

J'étais surtout intervenu pour montrer que l'on pouvait éviter l'utilisation de l'évènement EnableEvents.

J'ai revu ma proposition avec le process envisagé par LouReed.

Cdlt.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim n As Long
    If Target.ListObject Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Me.ListObjects(1).HeaderRowRange) Is Nothing Then Exit Sub
    If Not Intersect(Target, Me.ListObjects(1).ListColumns(2).DataBodyRange) Is Nothing Then
        If IsEmpty(Target) Then
            Target.Offset(, -1).Value = ""
        Else
            n = Me.ListObjects(1).HeaderRowRange.Cells(1, 1) + 1
            Me.ListObjects(1).HeaderRowRange.Cells(1) = n
            Target.Offset(, -1).Value = "A-" & Format(n, "0000")
        End If
    End If
End Sub
Rechercher des sujets similaires à "numero unique"