Pbme macro insertion image et copie matrice

meldja

XLDnaute Impliqué
Bonjour,

Je suis en train de me prendre la tête sur une macro qui fonctionne mais qui me renvoie malgré tout une erreur de débogage.
Voila, la macro doit insérer une image (.jpg) stockée dans un répertoire puis copier un petit tableau.
Il s'agit de l'image d'un tissu. Le nom de l'image est sa référence.
Lorsque l'utilisateur saisit la référence de l'image (le nom du fichier JPG) en colonne C, l'image s'insère en colonne A puis le tableau se copie à côté de l'image. Le nom que l'utilisateur a saisi est donc supprimé puisque la copie du tableau est vierge. Le nom est alors récupéré puis recopié dans la cellule où il a été initialement saisi.
Le principe est simple mais ça ne doit pas être évident à comprendre sans le fichier. Je joindrai bien une copie mais il faudrait que je joigne des photos avec.

Si quelqu'un a compris quelque chose (pas évident), je joins le code avec la ligne qui pose problème en couleur rouge :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR="Green"]'variable qui récupère le nom du fichier[/COLOR]
Dim Nm As String
[COLOR="Green"]'variable qui récupère la référence du tissu (nom du fichier sans .JPG)[/COLOR]
Dim Nms As String
[COLOR="Green"]'variable qui définit le target.address en colonne C, toutes les 8 lignes[/COLOR]
Dim i As Integer
[COLOR="Green"]'variable qui récupère le tableau à recopier[/COLOR]
Dim z As Range

[COLOR="Green"]'Récupère le nom du fichier une ligne au dessus parce qu'après avoir validé _
le nom se trouve donc juste au dessus[/COLOR]
Nm = ActiveCell.Offset(-1, 0).Value & ".jpg"
Nms = ActiveCell.Offset(-1, 0).Value
[COLOR="Green"]'Définit le tableau à recopier[/COLOR]
Set z = Range("AA1:AK8")

For i = 1 To 30000 Step 8
If Target.Address = "$C$" & i Then
z.Copy

[COLOR="Red"]ActiveCell.Offset(-1, -2).Select[/COLOR]
[COLOR="Green"]'recopie le petit tableau[/COLOR]
    ActiveSheet.Paste
[COLOR="Green"]'insère l'image et la dimensionne[/COLOR]
    ActiveSheet.Pictures.Insert("G:\Tissu réduit\" & Nm).Select
    Selection.ShapeRange.LockAspectRatio = msoTrue
    Selection.ShapeRange.Height = 90#
    Selection.ShapeRange.Width = 120#
    Selection.ShapeRange.Rotation = 0#

[COLOR="Green"]'recopie la référence du tissu qui a été saisie puis effacer lors de la copie du tableau[/COLOR]
ActiveCell.Offset(0, 2).Value = Nms

End If
Next i

End Sub

La macro s'exécute sans problème, mais ça me renvoie toujours une erreur sur la ligne de couleur rouge.

Si quelqu'un comprend le problème, ça serait déjà un exploit.. si par ailleurs il y avait une solution, ça serait un miracle.
Merci d'avance et bonne journée
 

meldja

XLDnaute Impliqué
Re : Pbme macro insertion image et copie matrice

Bonjour et merci pour ta réponse,

Effectivement, je me suis rendu compte du problème que tu évoques. En fait, au début, j'avais testé ce code à partir de la ligne 3202 et ça marchait sauf l'erreur sur la ligne en rouge.
Quand j'ai testé en ligne 1, j'ai eu le problème dont tu parles. Je l'ai réglé simplement en décalant d'une ligne :
Code:
For i = 2 To 30000 Step 8
If Target.Address = "$C$" & i Then
Ca marche, l'image est insérée, le tableau et la référence aussi, mais après l'exécution de la macro, j'ai toujours une erreur de compilation sur la ligne en rouge.
Depuis que j'ai posté mon message j'ai essayé différents trucs, mais c'est encore pire, la macro ne s'exécute carrément plus.
Merci quand même pour ton observation pertinente et bonne journée.
 

meldja

XLDnaute Impliqué
Re : Pbme macro insertion image et copie matrice

Au fait,
J'avais testé la macro en ligne 3202 parce que j'avais déjà inséré 400 images. Au début, j'exécutais 1 macro à partir d'un bouton que j'avais placé en barre d'outils.
Il fallait saisir la référence de l'image puis se placer à l'endroit où l'image et le tableau devait être copiés (en colonne A). Ca marchait nickel mais je trouvais plus simple pour l'utilisateur final de ne saisir que la référence et le reste devait se faire tout seul.
Merci encore
 

Minick

XLDnaute Impliqué
Re : Pbme macro insertion image et copie matrice

Comme tu es dans l'evenement change de ta feuille a chaque fois que tu fais une modif dessus
tu rentres de nouveau dans l'evenement.
Le probleme vient surement de la.

Place Application.EnableEvents = false avant ton for i=2
et Application.EnableEvents = True apres Ton Next i

Pour voir ce que ca donne.
 

meldja

XLDnaute Impliqué
Re : Pbme macro insertion image et copie matrice

Salut et encore merci,
Pbme résolu, mais je n'ai pas bien compris ton explication.
Tu veux dire que c'est à cause de la recopie de la référence qui entraine l'évènement Change ?
 

Discussions similaires

Réponses
1
Affichages
287
Compte Supprimé 979
C
Réponses
10
Affichages
732

Statistiques des forums

Discussions
312 103
Messages
2 085 325
Membres
102 862
dernier inscrit
Emma35400