yacano
Messages postés6Date d'inscriptionlundi 7 mars 2011StatutMembreDernière intervention 8 mars 2011
-
8 mars 2011 à 08:07
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 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