Incrémentation de "+1" par double clic

Bonjour,

Dans mon fichier exemple joint lorsque je double clic sur la dernière cellule vide de la colonne « A » cette dernière augmente la numérotation de « +1 ». Tout marche bien mais je voudrais que cette incrémentation ne se fasse pas sur la valeur max comme dans le module avec la ligne de code

Target = Application.Max(Columns(1)) + 1

Mais de plus 1 sur la dernière valeur saisie dans la colonne « A ». Comment je peux modifier cette ligne de commande ?

Question bounus :lol : est-ce que par hasard quelqu'un peut me dire pourquoi les lignes de codes (qui sont désactivées) :

Cells(Target.Row, 2).Value = Date

et

Cells(Target.Row, 4).Value = UCase(code)

ne fonctionnent pas ?

Cordialement.

Bonjour,

Je ne comprends pas tout !..

L'objectif n'est il pas insérer une nouvelle ligne avec une incrémentation ?

Cdlt.

Bonsoir à tous

Salut Jean-Eric

J'avoue que moi aussi je n'ai pas tout compris

Cependant, si c'est pour ajouter le chiffre 1 à la dernière valeur saisie en colonne A, il faudrait une colonne en plus qui serait masquée et qui placerait le jour et l'heure de la saisie par double-clic, et qui prendrait la valeur MAX de cette colonne

sinon, je ne vois pas

Bonjour,

pour compléter on fait max+1 pour être sûr à 100% d'avoir une clé unique.

Avec ce que tu demandes, tu cours le risque d'avoir des doublons si un utilisateur fait une bourde ou si des tris sont faits.

eric

Bonjour,

Une proposition à étudier.

Cdlt.

Bonjour,

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim lo As ListObject, rCell As Range, Code As Variant, Answer As VbMsgBoxResult, Counter As Double
    If Target.ListObject Is Nothing And Not Target.Offset(-1).ListObject Is Nothing Then
        Do
            Code = Application.InputBox(prompt:="Quel est le code session ?", Title:="Saisie code", Type:=2)
        Loop While Len(Code) = 0 And Code <> False
        If Not Code = False Then
            Application.ScreenUpdating = False
            Cancel = True
            Set lo = Me.ListObjects(1)
            With lo
                If .InsertRowRange Is Nothing Then
                    Set rCell = .HeaderRowRange.Cells(1).Offset(.ListRows.Count + 1)
                    Counter = .ListColumns(1).DataBodyRange.Cells(.ListRows.Count, 1) + 1
                Else
                    Set rCell = .InsertRowRange.Cells(1)
                    Counter = 1 ' A définir !...
                End If
            End With
            With rCell
                .Value = Counter
                .Cells(1, 2).Value = Date
                .Cells(1, 3).Value = ("DAF pas envoyée")
                .Cells(1, 4).Value = Code
            End With
            Answer = MsgBox("Est-ce une DAF ?", vbYesNoCancel, "Fenètre de saisie pour DAF ou MODAF")
            Select Case Answer
                Case vbYes: rCell.Offset(, 4).Value = 1
                Case vbNo: rCell.Offset(, 5).Value = 1
                Case Else:
            End Select
        End If
    End If
End Sub

Merci M12, eriic et Jean-Eric pour vos retours.

Pour eriic : Tu as raison quand tu dis

Avec ce que tu demandes, tu cours le risque d'avoir des doublons si un utilisateur

mais il arrive exceptionnellement que je dois saisir un numéro manuellement d’un enregistrement d'une autre personne dans ce tableau. Je sais ce n'est pas très clair ce que je dis mais concrètement je peux me retrouver à avoir une valeur dans colonne "A" supérieur à la dernière saisie et qui fausserait ma numérotation "normale".

Pour Jean-Eric : impec ta proposition elle donne le travail demandé. Je prends et je mets le sujet en résolu .

Pour mon info tu peux m’expliquer la variable « ListObject » ? et pourquoi la variable « date » ne marche pas sous la version excel 2010 ? J’ai le message d’erreur ci-dessous que je ne n’ai pas sous excel 2016 .

erreur

Encore merci au forum.

Cordialement.

Re,

Point 1 : ListObject

Quand on met les données sous forme de tableau (ou table de données), son équivalent en VBA est ListObject.

Cet objet a des méthodes et des propriétés spécifiques.

Point 2 :

Tu me poses une colle, car Date doit fonctionner (et ceci pour toutes les versions d'Excel).

Mais parle-t-on de mon classeur sous Excel 2010 ?

Essaie de remplacer :

.Cells(1, 2).Value = Date

par :

.Cells(1, 2).Value = VBA.Date

A te relire.

Cdlt.

Bravo Jean-Eric pour ta suggestion juste en rajoutant "VBA." devant la variable et c'est bingo. Du coup je l'ai mis également devant "UCase(code)" que j'avais dans mon module de départ et qui buggait de la même manière que "date" et c'est OK également.

Comment tu as fait pour trouver ce truc de "VBA." à ajouter devant la variable ? C'est super et encore merci

Cordialement.

Bonjour,

pourquoi la variable « date » ne marche pas sous la version excel 2010 ? J’ai le message d’erreur ci-dessous que je ne n’ai pas sous excel 2016

Dans VBE 'Outils / Références...' tu n'en aurais pas une marquée Manquant des fois ?

Si oui, la décocher.

eric

Je n'arrive pas à trouver "VBE 'Outils / Références"

Cordialement

VBE c'est l'éditeur de code VBA, pas excel.

Effectivement j'avais dans VBE 'Outils / Références...'une ligne marquée Manquante. Je l'ai décochée et c'est OK. Merci.

Cordialement.

Rechercher des sujets similaires à "incrementation double clic"