Générateur de document en image: probleme de vitesse

Bonjour à tous,

Je cherche à construire un générateur de document à partir d'une banque de données sous forme d'images.

La première feuille permet de sélectionner les images sous certaines conditions avec des coches de sélection et permet un aperçu de chaque image.

La deuxième feuille met en ordre les images sélectionnées pour une impression.

la troisième feuille est une banque d'image et les calculs pour ordonner les images dans la feuille 2 (je souhaite vraiment avoir les images dans une feuille et pas dans un dossier extérieur pour que d'autres personnes puissent l'utiliser facilement)

Il y a également des formules reliées aux images des feuilles 1 et 2 pour un affichage sous condition

Mon problème: LA LENTEUR! Excel n'est probablement pas le meilleur outil dans ce cas, mais c'est le seul que je connaisse suffisamment.

Chaque changement de coche dure plus de 20 sec malgré un test avec la désactivation de l'affichage (Application.ScreenUpdating = False) et le calcul manuel de fonction.

Je n'arrive pas à trouver où sont les ralentissements et comment les gérer.

En vous remerciant par avance pour votre aide.

Bonjour et

Ton fichier est lent (je dirais même très lent) c'est parce qu'il est beaucoup trop lourd.

je souhaite vraiment avoir les images dans une feuille et pas dans un dossier extérieur pour que d'autres personnes puissent l'utiliser facilement)

Quel serait la difficulté avec les fichiers dans un répertoire ?, si d'autre doivent avoir ton classeur à la place de donner le classeur tu donne le répertoire.

A la limite, mettre les images dans un autre classeur mais ce ne serait pas l'idéale.

Tu pourrais aussi fortement raccourcir le code avec des collections.

Tu dis

Cdlt.

Bonjour,

Ralentissement à peine perceptible sur mon 2010. (de l'ordre de la fraction de seconde pour un coche, idem pour visualisation d'image)

A+

Bonjour Galopin,

C'est vrai que sur mon 2007 ça prend pas 20". Mais le PC joue aussi.

N'empêche, le code et la manière sont loin d'êtres optimales.

Cdlt.

Bonjour lermite,

Merci pour ta suggestion d'utiliser des collections.

Je n'ai jamais utilisé cette méthode, pourrais-tu m'orienter sur une formule du type:*

afficher image (nom image i)

avec i venant d'une autre cellule?

Question: sais-tu si toutes les formules prééditées sont calculées à chaque fois?

Cdlt

Sylvain

(merci également à galopin qui me fait dire que c'est peut-être aussi un problème dans mon Excel)

Re,

Collections sur une feuille

Collections sur un UserForm

Si tu emploi des collections pour les boutons tu devras modifier leur nom par exemple

CommandButtonSA1 -> CommandButtonSA01

CommandButtonSA2 -> CommandButtonSA02

Tu pourrais déjà gagner un peu de temps en n'employant pas le presse-papier dans le code de tes boutons.(minime)

'Remplacer
Private Sub CommandButtonSA1_Click()
    Range("a8").Copy Range("o6")
End Sub
Private Sub CommandButtonSA2_Click()
    Range("a9").Copy Range("o6")
End Sub
'... par
Private Sub CommandButtonSA1_Click()
    Range("o6") = 1
End Sub
Private Sub CommandButtonSA2_Click()
    Range("o6") = 2
End Sub
'... etc

Je pense que les formules DECALER sont revue à chaque action sur le classeur vu qu'elle sont liées à des noms.(à confirmer)

A+

Re,

Plus de nouvelle ??

Bah.. ont dit, pas de nouvelle.. bonne nouvelle

Une idée comme une autre !!

Note : Le code dans les modules ne sert à rien, c'était juste pour le fun et pour mettre les images dans les commentaires.

Je n'ai fais qu'avec 12 images, si intéressé.. voir pour la suite.

A+

bonjour lermite,

merci de demander..

J'ai passé mon WE a essayer de comprendre les collections, c'est vraiment trop compliqué pour moi.

J'ai donc modifié 2 choses:

refaire tout le programme avec excel 2007 plutôt que 2010 pour augmenter la compatibilité,

changer tous les déplacements d'image (offset) par des copier coller d'image afin d'éviter les formules et donc le recalcul à chaque clic, j'ai donc nommé spécifiquement chaque image et cela semble bien marcher question vitesse pour l'instant.

Mais je retombe dans un probléme: j'ai 48 commandbuttons et je vais me retrouver à nouveau avec 48 x 6 ligne réécrire pour chaque bouton et j'ai peur que cela grossisse le fichier et donc le ralentir.

je cherche un truc avec Worksheet_SelectionChange pour les boutons qui pourrait faire une ligne seulement pour chaque bouton mais je n'ai pas encore trouvé.

Worksheet_SelectionChange(by buttonname target as name)

if buttonname=commandbutton i Sheets("Banque").Shapes("image i").Copy ....

Bonne journée

Sylvain

Que pense-tu de mon exemple ?? plus rien besoin, tout est automatique, du moins quand c'est finaliser

Et il n'y à pas de code. OUBLIE LE CODE QUI EST DANS LES MODULE,S y servent plus. juste pour démo

Ça te plait pas les images en commentaires ? ça serait quand mêm sympa de donner ton avis...

Mais ça ne me pose aucun problème pour passer la main.

Bonjour lermite,

Merci pour cette réponse rapide,

Désolé, je n'avais pas réalisé qu'il avait un lien,

SUPER IDEE!!! les commentaires, est-il possible de les relier à la banque d'image?

cela résout certainement la première partie

il faudra quand même que je gère les images et les modules checkbox pour créer le document imprimable dans la feuille (examen)

Merci BEAUCOUP!!!

Sylvain

bonjour,

c'est possible de coller une image dans un commentaire par VBA mais pourquoi:

cela marche...

Private Sub CommandButtonQA1_Click()

With Range("m20")

.AddComment

.Comment.Shape.Fill.UserPicture "C:\Users\sylvain\Pictures\1[1][1].07manon.JPG"

End With

End Sub

et cela ne marche pas?

Private Sub CommandButtonQA1_Click()

With Range("m20")

.AddComment

.Comment.Shape.Fill.UserPicture "Sheets("Examen").Shapes("image 12")"

End With

End Sub

Bonne journée

je suppose que tu a les images en fichiers sur ton PC ?

Tu les renommes comme détailler sous les séries, A001.jpg, A002.jpg .. A016.jpg

Idem avec les B,6 pour les C,D et 3 pour les E,F

Ensuite tu poste le répertoire et j les mettrai dans les commentaires.

Ou bien tu met le répertoire en sous-répertoire de ton classeur et t'expliquerais comment faire pour les incorporer, c'est comme tu veux.

Le sous-répertoire doit être intitulé IMAGES

Pour ta "Banque d'image" je vais essayé de voir s'il n'y a pas moyen de les extraire des commentaires pour les utiliser sur la feuille d'impression.

EDIT : Je n'avais pas vu ton message en page2..

Il n'y a que les fichiers que l'ont peu mettre dans les commentaires mais une fois qu'il y sont tu sauve le classeur et il y reste.

bonjour lermite

merci pour ton aide,

Si tu peux montre moi comment faire pour les incorporer, je voudrais comprendre et si possible garder les noms.

je ne comprend pas quand tu dis que l'on peux mettre que des fichiers dans les commentaires?tu as réussi à mettre des images

Si les images à imprimer sont extraites des commentaires, la qualité est-elle dégradée?

bonne journée

sylvain

tu as réussi à mettre des images

Pas du tout, j'ai fais des screenshoot de tes images (12) et sauver dans un répertoire.

Si tu modifie pas les nom de tes fichiers je ne saurais pas les incorporer en automatique dans les commentaires. Mais apparemment tu sais le faire en manuel, (Le code que tu montre avec le bouton) mais tu va avoir des quelque difficultés pour les dimensions.

Si les images à imprimer sont extraites des commentaires, la qualité est-elle dégradée?

En digital il n'y a pas de dégradation, note que je n'ai pas encore essayer de les extraire, c'est pas garanti.

A+

Bonjour a tous,

toujours dan ma recherche pour gérer les images,

j'ai une erreur '1004' Copy method of worksheet class failed que je n'arrive pas à résoudre.

quand je creer ce code en macro associe à un bouton dans les modules

Sub essai2()

'

' essai2 Macro

Sheets("Feuil2").Select

ActiveSheet.Shapes.Range(Array("Image 2")).Select

Selection.Copy

Sheets("Feuil3").Select

Range("E24").Select

ActiveSheet.Paste

End Sub

tout va bien

mais si je copie exactement ce code dans un autre bouton dans la même feuille et le code dans la feuille Microsoft excel object

Private Sub CommandButton2_Click()

Sheets("Feuil2").Select

ActiveSheet.Shapes.Range(Array("Image 2")).Select

Selection.Copy

Sheets("Feuil3").Select

Range("E24").Select erreur1004

ActiveSheet.Paste

End Sub

ca plante !!!

si vous avez déjà eu ce problème ?...

Bonsoir

Je pense que tu peux pas en étant dans le module d'une feuille sélectionner une cellule d'une autre page

essayes

Private Sub CommandButton2_Click()
  Sheets("Feuil2").Shapes("Image 2").Copy
  Sheets("Feuil3").Paste Sheets("Feuil3").Range("E24")
End Sub

BRAVO!!! banzai64

Et merci pour cette réponse rapide

je ne comprend pas, mais ca marche.

du coup est-il possible de définir la taille de l'image collée?

j'ai assayé de placer les instructions avant au milieu et après mais ça ne marche pas?

Private Sub CommandButton2_Click()

Sheets("banque").Shapes("image1").Copy

Selection.ShapeRange.Height = 100

Selection.ShapeRange.Width = 100 Sheets("Examen").Paste

Sheets("Examen").Range ("a1")

end sub

bonne journée

Bonjour

A tester

Private Sub CommandButton2_Click()
  With Sheets("banque").Shapes("Image1")
    .Height = 100
    .Width = 100
    .Copy
  End With
  Sheets("Examen").Paste Sheets("Examen").Range("A1")
End Sub

ENCORE BRAVO!!!

et merci, j'ai tout ce qu'il me faut pour terminer mon projet

enfin je crois

bonne journée

Rechercher des sujets similaires à "generateur document image probleme vitesse"