Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonjour tout le Monde, je vais essayer de préciser ma question
J'ai une macro du style:
Code:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range('A1') = 1 Then
Range('B1').Select
Activesheet.Pictures.Insert(''D:\\1.bmp')
ElseIf....
End If
If Range('A2') = 1 Then
Range('B2').Select
Activesheet.Pictures.Insert(''D:\\2.bmp')
ElseIf.....
End If
If Range('A3') = 1 Then
Range('B3').Select
Activesheet.Pictures.Insert(''D:\\3.bmp')
ElseIf....
End If
End Sub
Il y a 3 emplacements d'insertion d'image (B1, B2 et B3) qui contiennent une image particulière dépendant de la valeur d'une cellule, donc il y a 3 cellules de ce type (A1, A2 et A3).
Quand je n'insère qu'un code sur les 3, celui-ci marche.
Mais lorsque les 3 macros doivent s'activer, la première image s'insert, et un message affiche:
Erreur d'execution '-2147417848 (80010108):
La méthode 'Insert' de l'objet 'Pictures' a échoué
A tous ceux qui m'ont déja donnés une possibilité dans les anciens messages, aucun ne marche ou bien c'est moi qui ait mal compris.
aidez-moi svp, dites tout ce qui vous passe par la tête même si qqn a déjà proposé une solution.
merci d'avance a+
cruz
C'est très étrange de choisir l'événement SelectionChange pour insérer tes images car chaque fois que tu vas déplacer le curseur tu vas insérer les images. Mais peut-ête que le ElseIf que tu as enlevé y remédie.
En tous cas tel qu'était le code tu bouclais toujours sur la première partie puis il y a des Select à chaque début de code et que cela relance la macro du début. Ce qui est logique ... Une solution est l'utilisation d'Application.EnableEvents= False au début du code et Application.EnableEvents = True à la fin pour éviter cette boucle infernale :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.EnableEvents = False
If Range('A1') = 1 Then
Range('B1').Select
ActiveSheet.Pictures.Insert ('D:\\\\\\\\1.bmp')
'ElseIf....
End If
If Range('A2') = 1 Then
Range('B2').Select
ActiveSheet.Pictures.Insert ('D:\\\\\\\\2.bmp')
'ElseIf.....
End If
If Range('A3') = 1 Then
Range('B3').Select
ActiveSheet.Pictures.Insert ('D:\\\\\\\\3.bmp')
'ElseIf....
End If Application.EnableEvents = True
End Sub
Je ne peux analyser ton problème dans sa totalité mais je pense qu'il serait quand même préférable d'utiliser l'événement Change dans ton cas avec :
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans la feuille
'condition : si l'intersection de la cellule modifié est la plage A1:A3 n'est pas vide
'autrement dit : si le changement à lieu dans la plage A1:A3
If Not Application.Intersect(Target, Range('A1:A3')) Is Nothing Then
If Range('A1') = 1 Then
Range('B1').Select
ActiveSheet.Pictures.Insert ('D:\\\\\\\\1.bmp')
'ElseIf....
End If
If Range('A2') = 1 Then
Range('B2').Select
ActiveSheet.Pictures.Insert ('D:\\\\\\\\2.bmp')
'ElseIf.....
End If
If Range('A3') = 1 Then
Range('B3').Select
ActiveSheet.Pictures.Insert ('D:\\\\\\\\3.bmp')
'ElseIf....
End If
End If 'fin de la condition
Range('A1').Select 'sélectionne la cellule A1 (désélectionne la dernière image)
End Sub
Comme je me suis penché sur la question, je t'envoie une proposition.
Je ne sais pas si elle correspond à ce que tu souhaites, aussi tiens (moi) nous au courant.
Bonne soirée et bon Week End à tous [file name=3Images.zip size=15592]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/3Images.zip[/file]
Je suis d'accord avec Robert sur le point que la procédure évènementciel devrait être Change.
Je te propose une solution aussi:
PrivateSub Worksheet_Change(ByVal Target As Range) With Target If .Column = 1 And .Value = 1 Then
.Offset(0, 1).Activate On ErrorResumeNext
ActiveSheet.Pictures.Insert('D:\\' & .Row & '.bmp').Select If Err Then
MsgBox ' Vous n'avez pas d'image'
Err.Clear End If On ErrorGoTo 0 End If End With End Sub
En passant, si dans ton exemple c'était exactement comme les vrai noms de fichier que tu as sur ton disque et que l'association du numéro de ligne correspond au nom du fichier bmp, alors le code que je te propose est bon pour tous tes fichier. Pas besoin de code supplémentaire.
Merci à tous ça marche !!!!!!!!!!
Désolé de pas vous avoir répondu plus tôt
J'ai en fait juste changer SelectionChange par Change et ça a marché !!!!!
merci encore a+
j'ai un ti souci je dois réaliser un tableau : dans ce tableau je souhaite faire un enchainement automatique.
Je m'explique : le principe est que lorsque je suis dans une cellule admettons A1 avec ascenceur qui decline plusieur produits : je veux que l'image du produit qui correspond apparait avec son mode d'emploi....
Comment je pourrai faire sa... peut-on passer par sa sans macro
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD