Un numéro unique

pour le N° ça fonctionne.

il faut changer Private Sub btnsauvegarde_Click() ? pourquoi ?

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

il faut changer Private Sub btnsauvegarde_Click() ? pourquoi ?

De ce que je vois cela peut poser des soucis.

Faites un test peut-être

Ok tout fonctionne très bien.

merci encore de votre aide et de votre patience.

Ok si cela fonctionne mais bon je reste sur l'idée que ce sera à modifier

Si terminé pensez à ferme le fil

Cordialement

bonjour

Sub Test()
MsgBox NouveauGUID()
End Sub

Function NouveauGUID() As String
NouveauGUID = Replace(CreateObject("Scriptlet.TypeLib").GUID, "{", "")
NouveauGUID = Replace(NouveauGUID, "}", "")
End Function

Rebonjour,

Tout fonctionne bien mais j'ai un problème.

Si j'ai oublié renseigner le N° de carte ou si le N° de l'adhérent est déjà dans la base et que je sauvegarde j'ai une erreur. (ou fichier joint)

debogage

J'ai mis le classeur excel modifié.

3exemple.xlsm (55.15 Ko)

Merci de votre réponse et de votre aide.

Bonjour le fil,

Je me permet de m'immiscer dans la conversation

Il faut sortir de la sub au début si les valeurs ne sont pas présente

Private Sub btnsauvegarde_Click()
  If Len(Me.txtn_carte) = 0 Then
    Me.lblmessage_numerocarte = "Veuillez saisir le NUMERO de la CARTE."
    Me.txtn_carte.SetFocus
    Exit Sub
  ElseIf Len(Me.cbocotisation) = 0 Then
    Me.lblmessage_cotisation = "Paiement Cotisation ?"
    Me.cbocotisation.SetFocus
    Exit Sub
  End If
...

Vous n'aurez ainsi plus le message d'erreur qui se produit sur la ligne

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

Transformation du chiffre texte en chiffre entier

A+

Merci c'est trop bien ça fonctionne.

Merci de votre aide.

Bonjour,

Si j'ai oublié renseigner le N° de carte ou si le N° de l'adhérent est déjà dans la base et que je sauvegarde j'ai une erreur. (ou fichier joint)

je vous avais écrit que vous auriez des soucis....
En principe vous ne pouvez pas oublier le num de carte puisqu'il est toujours dans votre USF soit parce qu'il est déjà dans le tableau soit parce qu'il est créé à l'ouverture de l'USF. Vous devriez d'ailleurs ne pas rendre la textbox "txtcarte" accessible. Mettez-la propriété Enable de la txtbox sur FALSE

De mon coté, je vous donne le code de sauvegarde que j'avais préparé hier et qui inclut la solution de JExcel2Fr.

Private Sub btnsauvegarde_Click()

If Len(Me.txtn_carte) = 0 Then
   Me.lblmessage_numerocarte = "Veuillez saisir le NUMERO de la CARTE."
   Me.txtn_carte.SetFocus

ElseIf Len(Me.cbocotisation) = 0 Then
    Me.lblmessage_cotisation = "Paiement Cotisation ?"
    Me.cbocotisation.SetFocus
End If

Dim TS As ListObject
Dim ligne As Integer

Set TS = Range("Source").ListObject

If MsgBox("Désirez-vous sauvegarder les modifications?", _
            vbQuestion + vbYesNo + vbDefaultButton2, "CONFIRMATION MODIFICATION") = vbYes Then

    With TS
        ligne = .ListColumns(2).Range.Find(CStr(Me.txtnom), LookIn:=xlValues, lookat:=xlWhole).Row - TS.HeaderRowRange.Row

        If Me.txtdate <> "" Then .DataBodyRange(ligne, 4) = CDate(Me.txtdate)
        .DataBodyRange(ligne, 5) = CInt(Me.txtn_carte)
        .DataBodyRange(ligne, 6) = Me.cboformation
        If Me.txtdateformation <> "" Then .DataBodyRange(ligne, 7) = CDate(Me.txtdateformation)
        If Me.cbocotisation <> "" Then .DataBodyRange(ligne, 8) = CDbl(Me.cbocotisation)
    End With
End If
End Sub

Rem :
- La Msgbox mettra "Non" par défaut pour vous obliger à cliquer sur OUI. La raison est qu'en mettant sur Oui par défaut il suffirait que vous appuyiez sur la touche Entrée de votre clavier pour peut-être envoyer par erreur les infos dans le tableau
- A vérifier pour les autres codes mais je pense que vous n'aurez plus besoin du code Private Sub Worksheet_SelectionChange dans la feuille Source et donc du tableau dans la feuille Masquée "Mes listes"

Cordialement

Rechercher des sujets similaires à "numero unique"