1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| 'à l'ouverture du classeur
'l'idée, c'est de mettre les noms de feuille dans une variable tableau (F)
'et les derniers numéros de devis dans une autre variable tableau (Devi)
Private Sub workbook_open()
Dim Sh As Worksheet, Ctr As Integer, C As Range, Res As Integer
'Ctr sert d'index pour les deux variables tableau
Ctr = 0
'initialisation des tableaux
ReDim Devi(0)
ReDim F(0)
'boucle sur les feuilles
For Each Sh In Worksheets
'on ne s'occupe que des feuilles commençant par "ATL"
If Left(Sh.Name, 3) = "ATL" Then
'Si la plage A16:A10000 de la colonne A n'est pas vide
If Application.CountA(Sh.[A16:A10000]) > 0 Then
'Res est la variable qui va contenir le n° de devis
Res = 0
'boucle sur chaque cellule de la plage de cellules non vides de la colonne A
For Each C In Sh.Range(Sh.[A16], Sh.Cells(Sh.Rows.Count, 1).End(xlUp))
'si les 5 caractères de gauche de la cellule sont numériques
'alors, c'est un numéro de devis
If IsNumeric(Left(C.Value, 5)) Then
'récupération du nombre à incrémenter
's'il est supérieur à Res
If CInt(Mid(C.Value, 7, 3)) > Res Then
'on remplace Res par cette valeur
Res = CInt(Mid(C.Value, 7, 3))
End If
End If
Next C
'on redimensionne les variables tableau
ReDim Preserve F(Ctr)
ReDim Preserve Devi(Ctr)
'et on les renseigne
'***********************************
'c'est sans doute ce "+1" quui provoque une double incrémentation
'Devi(Ctr) = Res + 1
'remplacé par :
Devi(Ctr) = Res
'***********************************
F(Ctr) = Sh.Name
'on incrémente l'index
Ctr = Ctr + 1
Else
's'il n'y a rien en colonne A
ReDim Preserve F(Ctr)
ReDim Preserve Devi(Ctr)
Devi(Ctr) = 0
F(Ctr) = Sh.Name
Ctr = Ctr + 1
End If
End If
Next Sh
End Sub |
Partager