Ce que j'appelle les mailles attenantes sont en effet les mailles qui entourent la maille d'intérêt, peu importe laquelle est mise en 1 ou 2 ou 3... Ca n'a pas d'importance pour la suite. En revanche, pour chaque maille d'intérêt, il me faut bien uniquement des valeurs de maille uniques!
Alors là, je ne sais pas comment tu vas exploiter !
Je fais donc prendre les devants avec 2 présentations possibles des résultats (feuille 4 et 5)
Fais tourner maillage2
Sub maillage2()
Dim cel As Range
With Sheets(3)
' au cas où le tableau serait déjà vide
On Error Resume Next
' effacement du tableau
.ListObjects(1).DataBodyRange.Delete
On Error GoTo 0
ligne = 1
' pour chaque cellule de la plage
For Each cel In [plage]
' si elle n'est pas vide
If cel <> "" Then
If cel.Offset(-1, -1) <> "" Then ligne = ligne + 1: .Cells(ligne, 1) = cel: .Cells(ligne, 2) = cel.Offset(-1, -1)
If cel.Offset(-1, 0) <> "" Then ligne = ligne + 1: .Cells(ligne, 1) = cel: .Cells(ligne, 2) = cel.Offset(-1, 0)
If cel.Offset(-1, 1) <> "" Then ligne = ligne + 1: .Cells(ligne, 1) = cel: .Cells(ligne, 2) = cel.Offset(-1, 1)
If cel.Offset(0, 1) <> "" Then ligne = ligne + 1: .Cells(ligne, 1) = cel: .Cells(ligne, 2) = cel.Offset(0, 1)
If cel.Offset(1, 1) <> "" Then ligne = ligne + 1: .Cells(ligne, 1) = cel: .Cells(ligne, 2) = cel.Offset(1, 1)
If cel.Offset(1, 0) <> "" Then ligne = ligne + 1: .Cells(ligne, 1) = cel: .Cells(ligne, 2) = cel.Offset(1, 0)
If cel.Offset(1, -1) <> "" Then ligne = ligne + 1: .Cells(ligne, 1) = cel: .Cells(ligne, 2) = cel.Offset(1, -1)
If cel.Offset(0, -1) <> "" Then ligne = ligne + 1: .Cells(ligne, 1) = cel: .Cells(ligne, 2) = cel.Offset(0, -1)
End If
Next
End With
Sheets(4).Select
ActiveSheet.PivotTables(1).PivotCache.Refresh
Sheets(5).Select
End Sub