J'aimerais poser une question aux "Harry Potter" du VBA.
Ci-dessous un code qui fonctionne bien : il insère des images en les nommant successivement : pompe1, pompe2, pompe3 etc....
Mais après quelques tests, je me suis aperçu que la suppression manuelle d'une image suivi d'une nouvelle insertion entrainait un petit Bug.
Je m'explique :
Sont insérées mes 3 premières images, je supprime manuellement l'une d'elle (en l'occurence l'image2), me reste alors les 2 images nommées pompe1 et pompe3 .
Dès lors, si je veux effectuer une nouvelle insertion d'image, le message suivant apparaît :Erreur d'exécution '70' Permission refusée.
Dans le code l'instruction suivante est ainsi surlignée
.Name = "pompe " & nombre_pompes + 1
Code:
Private Sub Gazole_Click()
If Not Intersect(Selection, Range("C3:IJ33")) Is Nothing Then
Dim MyCell As Range
Dim MyPicture As Picture
Dim image$
image = "C:\Documents and Settings\JEAN-FRANÇOIS\Mes documents\Mes images\Pompe.gif" 'ou le chemin désiré
Set MyCell = ActiveCell
MyCell.Select
Set MyPicture = ActiveSheet.Pictures.Insert(image)
With MyPicture.ShapeRange
.Name = "pompe " & nombre_pompes + 1
.LockAspectRatio = msoFalse
.Height = MyCell.Height
.Width = MyCell.Width
End With
MyCell.Select
Exit Sub
End If
MsgBox "Mauvaise Sélection !", , Range("A2").Value
Range("A1").Select
End Sub
Evidemment si je supprime l'image pompe3 au lieu de la n°2, tout fonctionne à merveille.
Il semble que le problème vienne de la gestion du nombre_pompes
Si celui-ci est decrementé lors de la suppression on peut tout a fait demander a renommer un shape avec un nom existant
Une solution consisterait a gerer 2 numeros
un numero jamais decrementé pour nommer : Num_pomp
un numero decrementé pour compter : Nb_pomp