Incrémentation_auto

salut

comment faire pour si je veux saisir un nbr dans une cell et le nbr deja existe dans la palge suppr le .

et la quantité de ce produit augmente regardez l'exemple svp

14ex.xlsx (10.23 Ko)

Bonjour,

A mettre dans le module de la feuille car procédure événementielle :

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Plage As Range
    Dim Cel As Range

    With ActiveSheet: Set Plage = .Range(.Cells(4, 5), .Cells(.Rows.Count, 5).End(xlUp)): End With

    Set Cel = Plage.Find(Target.Value, Plage(Plage.Count), xlValues, xlWhole)

    If Not Cel Is Nothing Then

        Application.EnableEvents = False
        Cel.Offset(, 2).Value = Cel.Offset(, 2).Value + 1
        Target.Value = ""

    End If

    Application.EnableEvents = True

End Sub

puis enregistrer en .xlsm !

Re,

Petite correction, prendre ce code et pas l'autre (oubli de gérer la cible qui est la colonne E et doit être supérieur à la ligne 4 !) :

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Plage As Range
    Dim Cel As Range

    If Target.Column <> 5 Then Exit Sub
    If Target.Row < 4 Then Exit Sub
    If Target.Count > 1 Then Exit Sub

    With ActiveSheet: Set Plage = .Range(.Cells(4, 5), .Cells(.Rows.Count, 5).End(xlUp)): End With

    Set Cel = Plage.Find(Target.Value, Plage(Plage.Count), xlValues, xlWhole)

    If Not Cel Is Nothing Then

        Application.EnableEvents = False
        Cel.Offset(, 2).Value = Cel.Offset(, 2).Value + 1
        Target.Value = ""

    End If

    Application.EnableEvents = True

End Sub

Bonjour lembmc, Theze,

Un autre proposition (code beaucoup moins pro):

Sub test()

Dim i  As Integer, j As Integer, dl As Integer

dl = Range("E" & Rows.Count).End(xlUp).Row 'définit la dernière cellule de la colonne E

For i = 4 To dl         'de la ligne 4 à la dernière
 For j = 4 To dl - 1    'de la ligne 4 à  l'avant dernière

   If Range("E" & dl) = Range("E" & j) Then  'si la dernière cellule de la colonne E est égale à une cellule de la colonne E
       Range("E" & dl).ClearContents         'on efface la dernière cellule de la colonne E
        Range("G" & j) = Range("G" & j) + 1  'on incréménte de 1 la cellule de la colonne G correspondante

   End If

      If Range("E" & dl) <> "" And Range("G" & dl) = "" Then 'si cellule E remplie et cellule G correspondante vide
          Range("E" & dl) = Range("E" & dl)                  'on conserve la cellule E
           Range("G" & dl) = 1                               ' on attribue 1 à la cellule G correspondante

      Else

      If Range("E" & dl) = "" Then   'si cellule E vide
          Range("G" & dl) = ""           'cellule G vide

      End If
   End If

 Next j
Next i

End Sub
8copie-de-ex.xlsm (19.03 Ko)

Cordialement,

un grand merciiiiiii

Salut

c'est mon tableau est auto comment faire ça

5ex.xlsx (10.86 Ko)

Bojour lembmc,

Un essai :

Mais comme je te le disais, mon code n'est pas très pro, il y a surement moyen de faire plus simple et plus court

7copie-de-ex-3.xlsm (16.64 Ko)

Cordialement,

A Theze : J'ai testé ton code, sauf erreur de ma part, il ne fonctionne qu'en partie: si un nouveau numéro est crée, il s'efface, alors qu'il devrait être conservé et sa quantité à 1. En tout cas, bravo pour ton code très bien écrit j'ai encore du boulot

merci c'est été résolu

Rechercher des sujets similaires à "incrementation auto"