Bonjour JLA32, à tous les autres,
Voici une fonction personnalisée qui retourne les noms des images d'une plage de cellules.
- La plage peut-être réduite à une seule cellule ou bien être maximisée à la feuille entière.
- La fonction retourne une chaine de caractères avec les noms des images séparés par une virgule. S'il n'y a pas d'image dans la plage alors la fonction retourne la chaine vide "".
...
La fonction s'appelle : RecupPlageNomImage
Elle possède deux paramètres :
- Le premier paramètre s'appelle Plage et il est obligatoirement présent. C'est la plage pour laquelle chercher les images.
- Le second paramètre s'appelle Partiel et il est facultatif. Il est soit absent soit il peut valoir n'importe quoi. S'il est absent, les images prise en compte doivent être entièrement contenues dans la plage. S'il est présent (et vaut n'importe quoi), alors on prend non seulement les images entièrement contenues dans la plage mais aussi les images chevauchant partiellement la plage.
...
Dans la classeur deux utilisations :
- en formule de feuille de calcul.
- dans une macro VBA nommée Utilisation(). Sélectionnez une plage de la feuille de calcul puis cliquez sur le bouton bleu pour lancer la macro.
...
Le code de la macro :
Function RecupPlageNomImage$(Plage As Range, Optional Partiel)
Application.Volatile
Dim shp, shpRange As Range, res$, InterRange As Range
With Plage.Parent
For Each shp In .Shapes
Set shpRange = .Range(shp.TopLeftCell, shp.BottomRightCell)
Set InterRange = Intersect(shpRange, Plage)
If IsMissing(Partiel) Then
If Not InterRange Is Nothing Then If InterRange.Address = shpRange.Address Then res = res & ";" & shp.Name
Else
If Not InterRange Is Nothing Then res = res & ";" & shp.Name
End If
Next shp
End With
RecupPlageNomImage$ = Mid(res, 2)
End Function
...
nota : la fonction (même si elle déclarée volatile) ne se réactualise pas si on ajoute, retire, redimensionne ou déplace une image. Excel ne fait rien de ces évènements. Donc il faut forcer le calcul de la feuille après de telles actions (touche de fonction F9). Plus généralement c'est la même chose quand on agit au niveau des couleurs de cellules, de leur format, de leur largeur ou hauteur, ça ne déclenche pas le recalcul.