Incrémentation d'un N° selon 1 critère

Bonjour à tous,

Je cherche à incrémenter automatiquement selon un critère. Donc à rechercher la dernière valeur saisie selon ce critère et ajouter +1.

Si vous pouvez m'aider, serait cool.

Merci à vous.

Bouddha62

Voir le fichier ci-joint.

Bonjour,

En B2 :

=SI(A2<>"";A2&SI(MAX(($A$1:A1=A2)*LIGNE($A$1:A1))>0;TEXTE(CNUM(DROITE(INDEX($B$1:B1;MAX(($A$1:A1=A2)*LIGNE($A$1:A1)));4))+1;"0000");"0001");"")

Formule matricielle.

A tirer vers le bas.

Cordialement.

Bonjour,

Solution par code VBA

Private Sub Worksheet_Change(ByVal Target As Range)
Dim prem As String
Dim c
Dim j As Integer
If Not Intersect(Target, Range("A:A")) Is Nothing Then
    With Range("B:B")
        Set c = .Find(Target, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            prem = c.Address
            Do
                j = j + 1
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> prem
        End If
        Select Case j
            Case Is = 0: Target.Offset(0, 1) = Target.Value & Format(j + 1, "0000")
            Case Is < 10: Target.Offset(0, 1) = Target.Value & Format(j + 1, "0000")
            Case 11 To 99: Target.Offset(0, 1) = Target.Value & Format(j + 1, "000")
        End Select
    End With
End If
End Sub

Code à place dans la feuille.

  • Clique droite sur l'onglet et choisir "visualiser le code"
  • Dans la fenêtre, coller le code ci-dessus

Dès que vous inscrivez une donnée en colonne A, elle sera incrémentée

Si ok, merci de cloturer le fil en cliquant sur la case à cocher verte à coté du bouton EDITER

Cordialement

Bonjour,

merci à toi, cette formule fonctionne mais pose un souci quand je la tire vers le bas.(#VALEUR!)

bouddha62

Tu as oublié de lire la réponse jusqu'au bout... ! J'ai pourtant mis matricielle en gras !!!!!

Bonjour ,

merci à toi pour ton aide, mais ton code vba, ne fonctionne pas, message d'erreur "Erreur de syntaxe"

bouddha62


Oups, dsl.

Merci à toi

Bouddha62

Re

Erreur de syntaxe ?? Non j'ai testé avant de poster

Par contre prenez plutôt ce code ci :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim prem As String
Dim c
Dim j As Integer
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A:A")) Is Nothing Then
    With Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row - 1)
        Set c = .Find(Target, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            prem = c.Address
            Do
                j = j + 1
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> prem
        End If
        Target.Offset(0, 1) = Target.Value & Format(j + 1, "0000")
    End With
End If
End Sub

Cordialement

RE, Dan

J'ai tjs un message d'erreur de compilation (If Not Intersect(Target, Range("A:A")) Is Nothing Then)

bouddha62

non cela fonctionne tjs pas

je te joins le fichier

merci

plus là Dan????

bouddha62

Re

Votre fichier n'est plus le même et de plus lorsque le code est exécuté toutes les lignes du code sont en rouge. Cela est du au fait que vous avez fait un copier coller depuis le forum.

Il faut en premier supprimer les espaces devant les instructions

Ensuite dites moi sur quelle ligne vous commencez. la ligne 1 ou la ligne 2 ?

Si vous commencez sur la ligne 2, essayez comme ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim prem As String
Dim c
Dim j As Integer
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A:A")) Is Nothing Then
With Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
Set c = .Find(Target, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
prem = c.Address
Do
j = j + 1
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> prem
End If
Target.Offset(0, 1) = Target.Value & Format(j, "0000")
End With
End If
End Sub

Cordialement

re, Dan,

Le code vba fournit fonctionne correctement. (je commence sur la ligne 2)

Merci à vous,

Bouddha62

c'est encore moi, en fait je commence le code vba à partir de la ligne 1189, car toutes lignes ont déjà un code.

Le but est d'incrémenter en recherche la dernière saisie selon la colonne B par Type déquipement (H) et flux (I), une formule permet en colonne A d'avoir une 1er partie de la formule. Je sais pas si cela est compréhensible?

Voici en Pj le fichier

cordialement

4pavtest.xlsm (82.38 Ko)
Rechercher des sujets similaires à "incrementation critere"