Un numéro unique

Bonjour,

j'ai une application excel pour gérer les adhérents d'une association que a 400 adhérents.

Chaque fois que ajoute un adhérent je lui donne N° de carte unique et agrémenter,

des fois on peux oublier un numéro ou mettre 2 fois le même N° de carte.

Pouvez vous m'aider?

Merci de votre réponse.

6exemple.xlsm (53.25 Ko)

Bonjour

Lorsque vous parlez de numéro, il s'agit du numéro de carte ?
Comment lui donnez-vous le numéro ?

Lorsque vous ouvrez l'USF, on ne devrait pas avoir de données normalement, non ?

Le fichier que j'ai donné c'est une exemple, vous pouvez changer les N°.

Je donne le N° chaque fois que l'adhérent paye sa cotisation

Oui comment fonctionnez-vous avec le fichier

L'USF sert à ajouter des données dans la feuille Source je suppose

Je donne le N° chaque fois que l'adhérent paye sa cotisation

L'USF sert à ajouter, modifier ou supprimer des données dans la feuille Source

pour ouvrir l'USF il fait cliquer 2 fois sur un nom.

Dans le code Private Sub btnsauvegarde_Click() vous avez mis une ligne qui contrôle si le numéro à été mis pourtant

Bonjour à tous,

Le monsieur te demande :
"Où va le n° quand tu as validé? il va s'ecrire dans la feuille Source ? .

Crdlmt

pour ouvrir l'USF il fait cliquer 2 fois sur un nom.

Ok et quand le nom n'existe pas vous faites comment ?

Là si je clique sur B21, cela me renvoie le nom BREST ??

je voudrai que quand je met un N° qui agréementer automatique.

Ce si est un exemple.

Oui

je voudrai que quand je met un N° qui agréementer automatique.

Ce si est un exemple.

Ah, le fait d'être automatique, c'est différent de votre demande initiale

Pour l'exemple j'avais compris mais cela ne répond pas à la question de savoir comment vous faites lorsque l'adhérant n'existe pas
Là à la vue du fichier, vous n'utilisez pas l'usf pour ajouter un nouvel adhérant puisqu'à chaque ouverture vous avez des données dans l'USf

Désolé de mes questions mais je dois comprendre comment vous fonctionnez dans tous les cas.

Si l'adhérant n'existe pas j'ajoute une ligne

Sans l'usf alors ?

non dans la dernière ligne

Là dans votre exemple ce sera sur la ligne 21 que vous allez rajouter

Pour le numéro automatique, il suffit de contrôler à l'ouverture de l'usf s'il y a une numéro de carte
Si numéro existe, on ne fait rien
Si pas de numéro, on ajoute une numéro en se basant sur le numéro maximum trouvé en colonne E auquel on ajoute 1

exemple : Pour BREST, on lui met le numéro 7896

Ok comme cela ?

NB : attention que je considère que vous n'utilisez pas l'USF pour ajouter un adhérant.

J'ai mis un fichier qui na que les noms.

Aujourd’hui quand un adhérent paye sa cotisation lui un N° (1, 2, 3....).

ce que je voudrai que ce N° soit automatiquement ajouter.

3exemple.xlsm (52.68 Ko)

Je n'avais pas besoin d'un fichier. le premier suffisait car il est plus correct dans l'utilisation.

Mais vous ne répondez pas à la question essentielle est de savoir comment vous remplissez le tableau. Avec USF ou sans USF

Pour moi de ce que je comprends vous remplissez le tableau sur la feuille Source sans utilisez l'USF. Correct ??

Excusement

Je me suis uniquement l'USF.

Le fichier que je me sert tous les jours a 700 noms c'est pour ça que le sert uniquement l'USF.

Bon faites les modifications suivantes

1. Dans la feuille SOURCE, remplacez le code Private Sub Worksheet_BeforeDoubleClick par celui ci-dessous

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = False
If Not Intersect(Target, Range("Source").ListObject.DataBodyRange) Is Nothing Then
    frmmodification.Show
End If
Cancel = True
End Sub

2. Dans l'USF, remplacez le code Initialize par celui ci-dessous

Private Sub UserForm_Initialize()
Dim TS As ListObject
Dim ligne As Integer

Set TS = Range("Source").ListObject
With TS
    ligne = ActiveCell.Row - .DataBodyRange.Row + 1
    Me.cbocivilite = .DataBodyRange(ligne, 1) 
    Me.txtnom = .DataBodyRange(ligne, 2) 
    Me.txtprenom = .DataBodyRange(ligne, 3)
    Me.txtdate = .DataBodyRange(ligne, 4)
    If Me.txtn_carte = vbNullString Then
        Me.txtn_carte = WorksheetFunction.Max(.ListColumns(5).DataBodyRange) + 1
    Else: Me.txtn_carte = .DataBodyRange(ligne, 5)
    End If
    Me.cboformation = .DataBodyRange(ligne, 6)
    Me.txtdateformation = .DataBodyRange(ligne, 7)
    Me.cbocotisation = .DataBodyRange(ligne, 8)
End With
End Sub

Pour faire apparaitre l'USF vous devez faire un double clic dans une cellule du tableau. Le double clic ouvrira l'USF avec les infos de la ligne
Si un numéro existe, le numéro de carte sera celui mentionné dans la ligne
Si le numéro de carte n'existe pas dans la ligne, le code mettra un nouveau numéro

Faites un test
Je reviens plus tard pour la suite

Merci de votre patience c'est presque bon le N° ne change pas il reste le N° 1

Merci de votre patience c'est presque bon le N° ne change pas il reste le N° 1

Logique car votre code Private Sub btnsauvegarde_Click() renvoie une valeur Texte en non numéro. POur info, une textbox renvoie toujours une valeur Text

Dans un premier temps, vous pouvez modifier cette ligne --> ActiveCell.Offset(0, 3) = Me.txtn_carte comme ceci :

ActiveCell.Offset(0, 3) = CInt(Me.txtn_carte)

Après de ce que je vois il faudrait revoir le code Private Sub btnsauvegarde_Click().

Si intérêt je regarde. Dites moi


EDIT

Dans le code Initialize que je vous ai donné avant , il y a une petite erreur à corriger

remplacez ces lignes

    If Me.txtn_carte = vbNullString Then
        Me.txtn_carte = WorksheetFunction.Max(.ListColumns(5).DataBodyRange) + 1
    Else: Me.txtn_carte = .DataBodyRange(ligne, 5)
    End If

Par celles-ci

    Me.txtn_carte = .DataBodyRange(ligne, 5)
    If Me.txtn_carte = vbNullString Then
        Me.txtn_carte = WorksheetFunction.Max(.ListColumns(5).DataBodyRange) + 1
    End If
Rechercher des sujets similaires à "numero unique"