Supprimer un shape avec le même nom sur plusieurs onglets

anakin_74 Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour aux pro de VBA.

J'ai un soucis.

J'ai un menu déroulant sur un onglet de 12 positions sur lequel en double cliquant je selectionne une image que je renomme "PHOTO" sur tous les onglets du dossier.

Je souhaite pouvoir supprimer cette image renommée (et uniquement celle-ci, car j'ai des boutons et d'autres photos sur d'autres onglets), si je selectionne une nouvelle position sur mon menu déroulant puis en double cliquant.

J'ai actuellement une formule qui fonctionne lors de la première selection.
lors de la seconde selection, j'ai des superpositions d'images et à la troisième j'ai un message d'erreur.
Voici des extraits de ma macro

Macro de la première page pour inclure l'image (pour les autres pages c'est pareil
Dim a As Integer
Dim Sh1 As Shape

For a = 1 To Worksheets.Count
If Worksheets(a).Name = "1 - Page de garde" Then

For Each Sh1 In Worksheets("1 - Page de garde").Shapes

If Sh1.Name = "PHOTO" Then ActiveSheet.Shapes("PHOTO").Delete

Next Sh1

If Sheets("Information").Range("AAN8").Value = "1" Then
Worksheets("Photos").Visible = True
Sheets("Photos").Select
ActiveSheet.Shapes.Range(Array("Pix_1")).Select
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("1 - Page de garde").Select
Range("$K$5").Select
ActiveSheet.Pictures.Paste.Select
Selection.ShapeRange.Height = 100
Selection.Name = "PHOTO"
Worksheets("Photos").Visible = False

ElseIf Sheets("Information").Range("AAN11").Value = "2" Then
Worksheets("Photos").Visible = True
Sheets("Photos").Select
ActiveSheet.Shapes.Range(Array("Pix_2")).Select
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("1 - Page de garde").Select
Range("$K$5").Select
ActiveSheet.Pictures.Paste.Select
Selection.ShapeRange.Height = 100
Selection.Name = "PHOTO"
Worksheets("Photos").Visible = False
End If

End If
Next a


Merci d'avance
A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
essaie d'éviter ceci
Sheets("Photos").Select
        ActiveSheet.Shapes.Range(Array("Pix_1")).Select
        Selection.Copy

fais plutôt:
Sheets("Photos").Shapes.Range(Array("Pix_1")).Copy

en règle générale, évite les
.select
et les
Active
1
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, quel message d'erreur, sur quelle ligne?
0
anakin_74 Messages postés 42 Date d'inscription   Statut Membre Dernière intervention  
 
Merci tout d'abord d'essayer de m'aider.

Je mets un lien de mon document simplifié.

il suffit de choisir le modèle (de 1 à 12) d'image avec la case F8 puis double click. Faire l'opération 2 autres fois pour avoir le message d'erreur dans le module 01

http://www.cjoint.com/c/GHntzeuELy7

Cordialement
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
le code suivant me semble faux:
For Each Sh4 In Worksheets("4.0 - Welding").Shapes
 
    If Sh4.Name = "PHOTO" Then ActiveSheet.Shapes("PHOTO").Delete

Next Sh4

pourquoi pas:
For Each Sh4 In Worksheets("4.0 - Welding").Shapes
 
    If Sh4.Name = "PHOTO" Then Sh4.Delete

Next Sh4
0