Escartefigue
XLDnaute Nouveau
Le forum bonjour,
J'ai un problème avec la commande "ActiveSheet.Paste" de façon aléatoire!
Je m'explique:
Je génère des présentations de produits en copiant des images sur une autre feuille.
Pour ce faire j'ai utilisé la macro suivante:
Rien de bien sorcier, la macro marche au poil... enfin pour une feuille! J'ai dû dupliquer 150 fois la partie de génération de présentation (1 par page) et c'est là que les choses ce gâtes!
La macro étant trop longue j'ai dû la découper en 10 macros (1 macro de remise à zéro de la présentation, 8 macros de génération de présentation (20 pages par macro) et une macro qui démarre toutes les macros lorsque l'on ouvre la feuille concernée.
La plus part du temps j'ai cette erreur 1004 (mais pas tout le temps) et jamais au même endroit ou sur la même macro, ce qui me fait me dire que c'est un problème de cash mémoire dû a un trop grands nombre de copier/coller.
Pour moi la solution était de rajouter la ligne de commande "Application.CutCopyMode = False" a la fin de chaque page mais visiblement ça ne marche pas!
Quelqu'un aurait une idée s'il vous plait????
J'ai un problème avec la commande "ActiveSheet.Paste" de façon aléatoire!
Je m'explique:
Je génère des présentations de produits en copiant des images sur une autre feuille.
Pour ce faire j'ai utilisé la macro suivante:
Private Sub Worksheet_Activate()
' Remise à zéro de l'affichage.
Application.ScreenUpdating = flase
For Each s In ActiveSheet.Shapes
If s.Type = 13 Then s.Delete
Next s
' Fiche N°001.
For Each c In [A1]
If c <> "" Then
lig = [Prez].Find(c, LookAt:=xlWhole).Row
col = [Prez].Column + 1
For Each s In Sheets("Images").Shapes
If s.TopLeftCell.Address = Cells(lig, col).Address Then s.Copy
Next s
ActiveSheet.Paste
Selection.ShapeRange.Left = c.Offset(, 0).Left + 0
Selection.ShapeRange.Top = c.Top + 1
End If
Next c
For Each c In [C26]
If c <> "" Then
lig = [DAS].Find(c, LookAt:=xlWhole).Row
col = [DAS].Column + 1
For Each s In Sheets("Images").Shapes
If s.TopLeftCell.Address = Cells(lig, col).Address Then s.Copy
Next s
ActiveSheet.Paste
Selection.ShapeRange.Left = c.Offset(, 0).Left + 10
Selection.ShapeRange.Top = c.Top + 5
End If
Next c
For Each c In [B26]
If c <> "" Then
lig = [Extr_Inssuf].Find(c, LookAt:=xlWhole).Row
col = [Extr_Inssuf].Column + 1
For Each s In Sheets("Images").Shapes
If s.TopLeftCell.Address = Cells(lig, col).Address Then s.Copy
Next s
ActiveSheet.Paste
Selection.ShapeRange.Left = c.Offset(, 0).Left + 1
Selection.ShapeRange.Top = c.Top + 25
End If
Next c
End Sub
Rien de bien sorcier, la macro marche au poil... enfin pour une feuille! J'ai dû dupliquer 150 fois la partie de génération de présentation (1 par page) et c'est là que les choses ce gâtes!
La macro étant trop longue j'ai dû la découper en 10 macros (1 macro de remise à zéro de la présentation, 8 macros de génération de présentation (20 pages par macro) et une macro qui démarre toutes les macros lorsque l'on ouvre la feuille concernée.
La plus part du temps j'ai cette erreur 1004 (mais pas tout le temps) et jamais au même endroit ou sur la même macro, ce qui me fait me dire que c'est un problème de cash mémoire dû a un trop grands nombre de copier/coller.
Pour moi la solution était de rajouter la ligne de commande "Application.CutCopyMode = False" a la fin de chaque page mais visiblement ça ne marche pas!
Quelqu'un aurait une idée s'il vous plait????