Bonjour,
J'ai un onglet "clients" sur lequel j'ai plusieurs images dans une colonne, chacune sur une ligne (une cellule par image). Ces images sont toutes nommées du nom de l'entreprise correspondant au logo (donc l'image).
Je sélectionne sur un autre onglet dans une cellule via liste déroulante le nom d'une entreprise (onglet "BPU"), pour pouvoir ensuite copier le logo associé (de l'onglet "clients") dans un onglet, pour l'exemple le même onglet que celui ou je sélectionne l'entreprise (donc "BPU").
Malheureusement, aléatoirement j'ai un message de type "la méhode 'paste' de l'objet '_worksheet' a échouée".
J'ouvre alors le debugueur, je clique suivant (la petite fléche lecture), et la macro s'exécute et se termine comme si elle n'avait pas été interrompue. Je dois avouer avoir essayé pas mal de choses mais rien n'y fait (je voulais éviter des select, mais j'ai quand même testé) des pastespecial ect, et j'ai toujours cette erreur aléatoire.
Pour trouver l'image (logo de l'entreprise sélectionnée), je fais une recherche sur la liste d'image "shapes" de mon onglet "client", en comparant le nom de l'entreprise (récupéré dans l'ongler "BPU") et le nom de l'image de la liste shapes de l'onglet "Clients".
C'est toujours la ligne ws.Paste qui est en erreur. J'ai essayé avec un DoEvents, qui j'ai cru avait résolu le problème mais rien n'y fait. J'ai rajouté une destination même si je peux copier n'importe où l'image dans l'absolu vu que je la repositionne et la dimensionne plus tard dans le code.
A noter que je travaille avec en début de macro :
ws est le nom de ma feuille où je souhaite copier mon image (qui peut varier). Dans le cas présent il s'agit de "BPU".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Application.ScreenUpdating = False 'désactive le rafraichissement d'écran Application.EnableEvents = False 'désactive les évènements
Si vous avez une idée je suis preneur car moi je sèche. Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 imgname = ws.Cells(9 + decaligne, 6 + decalcol).Value For Each sh In Sheets("clients").Shapes If imgname = sh.Name Then Sheets("Clients").Shapes(imgname).Copy ws.Activate DoEvents ws.Paste Destination:=ws.Range("O1")
Partager