Lenteur Classeur Excel Image

Bonjour,

j'ai un soucis de lenteur sur mon classeur excel.

Pour faire simple, j'ai une feuille (L.1) avec trois images. Avec l'option "appareil photo" je récupère une image dans une feuille cachée (10 octets/image JPG - il y en a 10 en total).

Ensuite je copie plusieurs fois cette feuille L.1 jusqu'à arriver à L.15 (par exemple) et le fichier est vachement lent.

Le fichier de base pèse 628 Ko et peut arriver jusqu'à 1.1mb avec 15 feuille copiées...

J'ai essayé de compresser les images, mais pas de grande différence...

J'ai aussi un peu de code VBA.

En PJ le fichier excel, vous pouvez faire des tests...si vous copié plusieurs fois la feuille L.1, vers la L.15 lorsqu'on modifie une image c'est vachement lent.

Merci

16fichier-essaie.xlsm (581.99 Ko)

J'ai essayé de supprimer les images "appareil photo" et c'est vachement plus rapide....Avez vous des idées pour faire la même chose..? mais sans ralentir?

Bonjour,

Tu nous a soumis un fichier dont le code vba est protégé par un mot de passe.

ric

Oups!

14fichier-essaie.xlsm (582.33 Ko)

Salut,

J'ai groupé ma réponse sur ton second sujet...

Mais il est vrai que tu n'auras aucun avis sur ton code si tu le caches !

Salut Ric !

Tant que j'y suis...

Je vois déjà que tu es un peu fâché avec l'indentation !

Et cette ligne me paraît très douteuse (c'est la première qui m'est apparue, pas vu le reste)

    For Each Target In Target

En gros ce code ne sert à rien?

        Set Target = Intersect(Target, Range("R2"))
        If Target Is Nothing Then Exit Sub
    Application.EnableEvents = False
        For Each Target In Target
        If Application.IsText(Target) Then Target = UCase(Target)
    Next
    Application.EnableEvents = True

ahahah et tkt pour le nom de l'account rien à voir .

Je n'ai pas dit ça ! En fait je n'ai pas regardé ce qu'il faisait.

Ta modification de Target en début de code n'est pas la pratique habituelle de test... Cela fonctionnera cependant, je pratique la modification dans le code de variables passées en arguments, sans que cela pose problème, mais j'évite sur les évènementielles car on peut avoir besoin de revenir à la source...

Mais la ligne que j'ai citée ne peut pas passer, tu utilises une variable déjà initialisée comme variable de boucle et sur elle-même... Je ne saurais même pas dire ce que cela peut produire et comment VBA va le digérer...

En ayant déclaré une variable Range pour ta boucle, tu pouvais écrire :

    For Each c In Target.Cells

Je pense que c'est ce que tu voulais faire.

Je n'aurais pas non plus utilisé IsText mais c'est autre chose... tu verras ça en connaissant mieux VBA.

Par contre je note que ton activesheet (ailleurs dans le code) n'apparaît pas sous la forme ActiveSheet. C'est probablement dû à une manipulation de copie de code de l'extérieur... Ça, c'est le genre de choses à éviter absolument à mon avis, car tu introduis une modification dans la façon de réagir de l'assistant. Ce dernier te rétablis les majuscules lorsque tu tapes ton code uniformément en minuscules, et c'est une alerte non négligeable sur les erreurs de frappe, quand tu ne vois pas les mots clés VBA se modifier en passant à la ligne suivante. S'en priver est une source d'erreur.

Et pour l'indentation, à indenter de façon fantaisiste, tu obliges à relire 2 ou 3 fois pour savoir ce qu'on a lu. Une fois devrait suffire et c'est à ça que sert l'indentation.

Je n'ai pas vu de code concernant les images...

Merci pour tes conseils

Le code pour les images n’existent pas...

C’est ce que cherche à faire, tu peux m’aider?

En gros la variable est ce qui est indiqué en rouge sur la feuille et le stock d’image se trouve sur l’onglet DONNEES.

Voila! Merci pour ton aide précieux

Où sont les images originales ? Données ? Obtenues comment ?

Ce sont des images que j'ai importé directement sur excel sur l'onglet DONNEES.

bonjour

2 fils se croisent ?

aussi quelle idée de faire 15 onglets pareils ?

C'est le but de mon excel, après elles sont pas vrmt identiques...A chaque fois il faut rentrer des paramètres diff. (c'est pour le boulot, confidentiel).

2 fils se croisent? Je comprend pas

J'aurais préféré des formes construites, mais bon on va voir... J'ai pas fini de manger, encore moins de digérer !

@jmd : Ne nous met pas au moins des tutos cafouilleux ! J'ai dû l'interrompre, ça aurait bloqué ma digestion !

Il y a déjà des lustres que la méthode figure chez Boisgontier ! Sans les cafouillages !!!

à+

ah ben désolé si le conférencier est hésitant

mais tu n''as pas besoin de ce tuto, tu savais déjà

moi, je débute en Excel depuis 15 ans env

et je ne connaissais pas

amitiés

@jmd: Pour ton information, j'ai fait mes débuts tableur (et ordinateur aussi) avec Multiplan en 86-87 sous DOS, puis j'ai eu une passage professionnel sans accès direct informatique au boulot (du moins sur ce qui avait cours en direction) et perso. sur Lotus123(version 4) en 93-95 — c'est là qu'on peut se rendre compte que Microsoft n'a gagné la partie que sur sa stratégie commerciale, puis par la suite grâce à VBA ! — et boulot j'ai retrouvé Excel 4 fin 93 puis en 94 Excel 5 (avec VBA). Jer regrette de n'avoir passé que peu de temps avec Excel 4, j'aurais pu conservé une doc sur les macro Excel 4 qui peuvent toujours fonctionner (et certaines n'ont pas d'équivalent...). J'ai ensuite recomposé mes fichiers perso sur Excel 5, Excel 97, etc.

@vaffancolor: En y regardant de plus près, je ne vois pas en quoi l'appareil photo serait en cause, même si tu l'as utilisé au départ (jmd a bien fait de soulever ce point au fond ). Je ne suis pas sûr que coller les images règlera ton problème, mais on peut faire un essai.

Ce que je te propose d'essayer c'est de remplacer les images lors de la copie de feuille par des copies d'images (qui ne recourront plus à la formule. On verra le résultat. OK ?

Du coup, sa ne m'arrange pas...parceque je dois modifier les images sur chaque feuilles.

De plus, j'ai essayé de copier les feuilles sans les trois images (appareil photo) et c'est vachement plus rapide!

Avec un code VBA dans la feuille (L.1) qui recupère l'image en fonction de ma liste ne résoudra pas le problème?

Ça, tu peux le vérifier dans la foulée, en choisissant les images ensuite sur chaque feuille !

J'attends ton test.

Dacc, par contre je n'ai pas excel à la maison

Du coup, j'essaye demain au boulot.

On peut attendre demain... Car effectivement, comme jmd (ça arrive !) je ne voyais pas de lenteur due à l'appel des images avec la méthode utilisée.

Par contre, si tu constates le ralentissement sur la copie et qu'il disparaît lorsque la copie se fait sans image, il y a bonnes raisons de penser que la solution est là !

Cordialement.

Rechercher des sujets similaires à "lenteur classeur image"