Incrémentation D'article

Salut les Forumeurs Accro au VBA,

Voilà mon nouveau petit soucis, vous aller pouvoir voir dans la "Private Sub Anouveau_Click()"

Que j'essai de trouver la codification de mon nouvelle article.

J'aimerais qu'il soit ainsi :

D00001

D00002

Bien sûr si il existe un D00003 on passe directement a D00004 et si il existe un D00235 (quand j'y serais) que l'on passe de D00234 à D00236 lorsque l'on fait nouvel article.

Voilà bah je pense avoir tout dis , si il y a des question je suis preneur.

PS : J'ai délimité une zone 'début d'essai 'fin d'essai sur le Sub afin que je puisse m'y retrouver un peu et comprendre votre code.

PS1: J'ai cette base la pour le 00001 00002 si ca peut aider.

Select Case valeur
    Case Is < 10: Range("A5") = "'0000" & valeur
    Case 10 To 99: Range("A5") = "'000" & valeur
    Case 100 To 999: Range("A5") = "00" & valeur
    Case 1000 To 9999: Range("A5") = "0" & valeur
    Case 10000 To 99999: Range("A5") = "'" & valeur
    Case Else: MsgBox "vous avez atteint la limite des 99999 numéros autorisés"
End Select

Merci par avance de votre aide.

16classeur1.xlsm (100.61 Ko)

bah les gars vous n'etes plus la ?

bonjour spouns

dans ton classeur il manque

FormMenu.Show

qui est demander par les 2 boutons

il manque

Sheets("Fiches PDM")

et rien qui fait appel a

FormArt

Dans le menu developpeur directement tu accèdes au Userform directement et tu as accès a tout les codes sans soucis lorsque tu cliques sur lecture de ton user form tu vois tout ... on a pas besoin des autres userform etc... je travaille directement sur le fichier que je vous est envoyé..

Bonjour,

voici un exemple ci-dessous, pour une incrémentation de codes ou références.

ensuite, erreur de frappe, comme la noté grisan29, remplacer FormMenu.Show par FormArt.show

pour un retour d'une box, noter valeur = msgbox ("texte",vbYesNo)

si valeur = 6, l'utilisateur à cliqué sur oui.

Je ne l'ai pas essayer (du fait qu eje suis sur mon smartphone) mais merci par avance.

Et avec un filtre ca marche tout de même ou pas car j'ai chercher beaucoup d’incrémentation automatique mais si je met un filtre tout est perdu et ca part dans tout les sens sur certain... :/

Spouns a écrit :

Je ne l'ai pas essayer (du fait qu eje suis sur mon smartphone) mais merci par avance.

Et avec un filtre ca marche tout de même ou pas car j'ai chercher beaucoup d’incrémentation automatique mais si je met un filtre tout est perdu et ca part dans tout les sens sur certain... :/

Pour utiliser le filtre, j'appliquerais le format texte à ta colonne d'incrémentation... Je pense que tu ne devrais plus avoir ce genre de problème.

Le classeur joint n'est qu'un exemple à adapter, de multiples formats sont possibles.

Bonjour,

Bien sûr si il existe un D00003 on passe directement a D00004

Ce qui veut dire que tu veux boucher les trous.

Ca ne risque pas de poser de problème si tu ré-attribues un code qui aurait déjà été attribué ?

En général on ne fait jamais ça avant une période assez longue, voire ad-vitam eternam.

A moins que tu n'aies prévu de conserver toujours les articles périmés et de les marquer dans une colonne dédiée (le plus sûr).

Le plus simple est de prendre le plus grand et d'ajouter 1, même si tu en perds 1 ou 2 centaine.

eric

Bien vu ,

je n'avais pas pensez a ca.

Non effectivement il ne faut pas que je vienne a combler des numéros effacés mais il faut que quelque soit le chiffre ca puisse s'accrémenté par rapport au dernier que j'avais entrer car j'ai essayer des codes si j'inserais une ligne après le plus grand avec un numéro exceptionnel bah op plus rien ne marche et le compteur reprend a zero ... du coup faut que je puisse eviter les doublons.

et intégrant une base existante deja il faut qu'il recherche le numéro le plus grand pour ensuite metre une suite.

Me comprenez vous ? :p

Dans ce cas c'est tout simple.

Tu t'ajoutes une cellule 'Dernière ref utilisée' dans 'Base' où tu mets par exemple 353 en I15.

Une simple fonction te fourni la ref suivante à utiliser :

Function newRef()
    With Sheets("Base").[I15]
        If .Value > 99979 Then MsgBox "Attention, plus que " & 99999 - .Value & " ref disponibles !"
        If .Value = 99999 Then
            newRef = CVErr(xlErrNum): Exit Function
        Else
            .Value = .Value + 1
        End If
        newRef = "D" & Format(.Value, "00000")
    End With
End Function

Test :

Sub test()
    Dim ref As Variant ' variant pour accepter une valeur d'erreur
    ref = newRef
    If IsError(ref) Then MsgBox "Plus de ref disponible !": Exit Sub
    MsgBox ref
End Sub

eric

Merci de vos réponses, mais vous m'avez tous paumé mdr

Je vais essayer de voir comment intégrer cela dans mon code je vous tiens au courant du résultat si j'y arrive :p

Bon bah les gars je dois etre un looser je crois...

Je n'arrive pas a implanter le code , on va essayer de faire plus simple donc..

Pourriez vous me donner le code que je colle pour que l'on puisse nommé DC00000, DC00001, DC00002, etc... directement quand j'appuie sur nouveau article qui se creer sur la denriere ligne ? :s

S'il vous plait.

Je pense aussi...

Un simple copié-collé de ma proposition dans Module2.

eric


Je pense aussi...

Un simple copié-collé de ma proposition dans Module2.

eric

5classeur1.xlsm (92.27 Ko)
7classeur1.xlsm (92.27 Ko)

C'est good Eriiic

j'ai un peu modifié la chose mais je prends cette solution ca va même me permettre de faire des classes encore mieux que prévu.

Merci Beaucoup sujet résolu

Rechercher des sujets similaires à "incrementation article"