Problème incrémentation selon conditions

Signaler
Messages postés
6
Date d'inscription
lundi 7 mars 2011
Statut
Membre
Dernière intervention
8 mars 2011
-
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
-
Bonjour,
Je vous expose mon problème:
Je dois incrémenter un numéro de référence à la suite de 5 String séparés par un "-" ("le lieu"-"l'unité d'entretien"-"année yy"-"mois mm"-service E ou M" (exemple:BE-150-11-03-E-) et vient s'ajouter 001
l'incrémentation revient à 001 si dans la liste premier numéro de 2011 ou premier service E ou M sinon incrémenté.
Voilà un morceau de code mais je suis bloqué




Dim numA As String, numAFF As String, laCell As Range, laZone As Range, memA As String, max As Long

'à ce niveau, numAFF est de la forme "lieu-ue-aa-mm-serv-XXX " (ici "BE-OU1-11-03-E-")
'définir la zone du "Références" contenant les références déjà inscrites (colonne H)

With Workbooks("Référence Affaires.xls").Sheets("Références")
Set laZone = .Range("H5:H" & .Range("H" & .Rows.Count).End(xlUp).Row)
End With

numA = "*" & "-" & annee & "-" & "*" & "-" & service & "-"

'rechercher dans laZone la première cellule commançant par numAFF
Set laCell = laZone.Find(numA, , xlValues, xlPart)

'si aucune cellule n'est trouvée (aucune référence déjà saisie ne commence par numAFF)
'ici, il s'agit donc de la première référence commençant par "BE-OU1-11-03-E-"
If laCell Is Nothing Then
'ajouter "001" à numAFF
numAFF = numAFF & "001"

'sinon
Else
'boucler sur toutes les cellules commençant par numAFF
memA = laCell.Address
Do
'max représente une "mémoire" qui va contenir le numéro de la dernière référence commençant par numAFF
'si le numéro de la référence est supérieur à max, max = le numéro de la référence
If CLng(Replace(laCell.Text, numAFF, "")) > max Then max = CLng(Replace(laCell.Text, numAFF, ""))
Set laCell = laZone.FindNext(laCell)
Loop Until laCell.Address = memA

'ajouter à numAFF "max+1"
numAFF = numAFF & Format(max + 1, "000")


Merci énormément pour vos réponses

1 réponse

Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
En faite tu veux concaténé ?
Peut tu me faire un exemple simple avec "BE-150-11-03-E-"

Que doit-il devenir ?