Mon projet VBA est bientôt terminé et je remercie le forum à travers les discussions que j'ai lu et les réponses que vous avez apporté à mes questions.
Toutefois, il me reste un dernier point à régler et je vous demande une petite aide sur ce point qui n'est pas très difficile.
J'ai une feuille "Impression" dans mon classeur Excel qui me permet d'importer toutes les données d'un UserForm (crée sous forme de multipages) pour avoir une seule page avec toutes les infos. Parmi ces infos, il y a une photo que j'aimerais supprimer à chaque fin d'impression ou avant chaque impression pour ne pas que les photos se superposent indéfiniment (surtout qu'elles n'ont souvent pas la même taille).
Après avoir lu plusieurs choses ici, j'ai essayé divers codes du genre :
Mon programme Excel étant plus caractériel que je ne le pensais (parfois il me trouve des bugs mais il suffit que je redémarre le programme et les bugs ne sont bizarrement plus là ! allez savoir !). Tout ça pour dire que le code "activeSheet.pictures.delete" fonctionne très bien même trop bien car du coup, ça m'enlève toutes les images de ma feuille Excel. Or, je veus juste supprimer la photo lié au CV, pas l'image d'en-tête et d'autres images qui restent les mêmes quelque soit le CV.
J'aimerais trouver un code qui dirait quelque chose du genre "If Image <> Image(en tête) then activesheet.Pictures.delete" et faire ça pour toutes les images que je ne souhaite pas effacer.
Est-ce possible ? Pouvez vous m'aider s'il vous plait ?
Oui c'est possible, mais il faut identifier la position et le nom de l'image.
Insère une image en A1 puis lance la macro ci-dessous
Code:
Sub nomImage()
Dim Plg As Range, Shp As Shape
Set Plg = Range("A1")
For Each Shp In ActiveSheet.Shapes
If Intersect(Shp.TopLeftCell, Plg) Is Nothing Then
'
Else
MsgBox Shp.Name
Exit For
End If
Next Shp
End Sub
Insère en A1 une forme automatique, un rectangle
par exemple
La msgbox dans ce cas ne s'affichera pas
Code:
Sub nomImageII()
Dim Plg As Range, Shp As Shape
Set Plg = Range("A1")
For Each Shp In ActiveSheet.Shapes
If Intersect(Shp.TopLeftCell, Plg) Is Nothing Then
'
Else
If Shp.Type = 13 Then MsgBox Shp.Name & Chr(13)
Exit For
End If
Next Shp
End Sub