Problème incrémentation selon conditions

yacano Messages postés 6 Date d'inscription lundi 7 mars 2011 Statut Membre Dernière intervention 8 mars 2011 - 8 mars 2011 à 08:07
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 - 8 mars 2011 à 10:23
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

4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
8 mars 2011 à 10:23
En faite tu veux concaténé ?
Peut tu me faire un exemple simple avec "BE-150-11-03-E-"

Que doit-il devenir ?
0
Rejoignez-nous