Bonsoir Violaine, le Forum
Je ne comprends pas les 33 cellules ? le code que je t'ai écrit partait de ton premier post où tu parlais "
dans une même cellule (même référence)"
Ceci dit tout est possible en VBA
... Imaginons que tu veuilles récupérer dans un listing en feuille "Collection" les valeurs
de toutes les cellules non vides en provenance de
toutes les feuilles du classeur le code serait ainsi :
Sub ActualiseFeuillesAllCells()
Dim WS As Worksheet
Dim Plage As Range, Cell As Range
Dim i As Byte
i = 1
For Each WS In Worksheets
If WS.Name <> "Collection" Then
Set Plage = WS.UsedRange
For Each Cell In Plage
If Cell <> "" Then
With Sheets("Collection")
.Range("A" & i) = WS.Name
.Range("B" & i) = Cell
i = i + 1
End With
End If
Next Cell
End If
Next WS
End Sub
Et si (par exemple) on veux récupérer les valeurs de toutes les cellules située uniquement dans la plage "A1:A33" on pourrait écrire comme ceci :
Sub ActualiseFeuillesPlage()
Dim WS As Worksheet
Dim Plage As Range, Cell As Range
Dim i As Byte
i = 1
For Each WS In Worksheets
If WS.Name <> "Collection" Then
Set Plage = WS.Range("A1:A33")
For Each Cell In Plage
With Sheets("Collection")
.Range("A" & i) = WS.Name
.Range("B" & i) = Cell
i = i + 1
End With
Next Cell
End If
Next WS
End Sub
...et bien entendu on peut combiner les deux pour n'avoir que les cellules contenant des valeur en intégrant dans cette dernière procédure la condition If Cell <> "" Then ...
Donc heureusement que tu as bien fait de venir sur XLD car ici, c'est assez rare qu'il n'y ait pas d'heureux dénouement
Bonne soirée
@+Thierry