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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| Public Sub Balayage()
Dim k As Integer
'Balayage des occurences 1 à 1, à adapter
For k = 1 To 1
cherchervaleur k
Next k
End Sub
Sub cherchervaleur(n As Integer)
Dim tbl()
Dim plage As Range
Dim cel As Range
Dim adr As String
Dim j As Integer, m As Integer
Dim lavaleur As String
Application.ScreenUpdating = False
With Sheets("Data")
'Définition du critère
lavaleur = "M" & Format(n, "000#")
Debug.Print lavaleur
.Activate
'Recherche de la dernière ligne
dercel = .Cells(.Rows.Count, 1).End(xlUp).Row
'Définition de la zone de recherche
Set plage = .Range("A2:A" & dercel)
'1ère occurence trouvée
Set cel = plage.Find(lavaleur, LookIn:=xlValues)
'Si la 1ère occurence n'est pas vide, on cherche toutes les suivantes
If Not cel Is Nothing Then
'Mise en mémoire de l'adresse de la 1ère occurence
adr = cel.Address
Do
m = m + 1
'Augmentation de la 2ème dimension du Tableau (nombre de lignes)
ReDim Preserve tbl(1 To 23, 1 To m)
'Enrichissement des valeurs contenues sur la même ligne
'dans les colonnes j à gauche de l'occurence trouvée
For j = 1 To 23
tbl(j, m) = cel.Offset(0, j)
Next j
'Recherche de la prochaine occurence
Set cel = plage.FindNext(cel)
'La recherche continue tant que l'occurence trouvée n'est pas la 1ère
Loop While adr <> cel.Address
End If
End With
Debug.Print UBound(tbl, 2)
Debug.Print UBound(tbl, 1)
With Sheets(lavaleur)
.Select
'La feuille est enrichie des données du tableau
.Range(Cells(1, 1), Cells(UBound(tbl, 2), UBound(tbl, 1))).Offset(14, 0) = Application.WorksheetFunction.Transpose(tbl())
End With
'Variables réinitialisées
Set plage = Nothing
Set cel = Nothing
Erase tbl
End Sub |
Partager