Gestion Image/Tableau

Bonjour à tous,

J'ai besoin de votre aide ! Je suis en train de me faire une feuille de calcul qui requiert l'utilisation de plans, et d'y superposer des valeurs.

Pour cela j'ai donc besoin de modifier mon tableau excel en ayant une image par dessus.

Là on pourrait se dire "eh facile, y a qu'à la mettre en arrière plan ou filigrane !" ... mais que neni !

1/ Il y a une quinzaine de tableaux et donc la même image à superposer une quinzaine de fois, sur une même feuille.

2/ Je cherche à ce que l'image reste visuellement "au dessus" mais que je puisse modifier mon tableau comme si elle était "en-dessous", voilà la petite subtilité.

J'espère que l'on va arriver à trouver une solution

Hadrien

Edit : Je vous joins un printscreen pour vous donne rune idée

screenshot 1

Hello,

Voici une petite propo, je pense que ça devrait coller à ta demande.

Le principe est de mouvementer l'image koala à chaque événement de changement dans la feuille, sur la cellule A1.

Je pense que le principe peut convenir à ton souci.

Sub Dépla_image_sur_cell() 'mettre l'image sur cellule A1
ActiveSheet.Shapes.Range(Array("Picture 1")).Top = ThisWorkbook.Worksheets(1).Range("A1").Top
ActiveSheet.Shapes.Range(Array("Picture 1")).Left = ThisWorkbook.Worksheets(1).Range("A1").Left
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dépla_image_sur_cell
End Sub

Salut waard !

D'abord merci pour ta réponse

Toutefois la solution que tu proposes n'est pas efficace dans ce cas ci. Le problème n'étant pas de fixer l'image car finalement elle ne bougera plus une fois placée. En effet, la complétion du tableau se fait à l'aide des repères visuels du plan format image qui est par dessus la feuille.

Par exemple pour la zone A1 au nord West sur le plan, je vais remplir toutes les cases qu'elle délimite avec une valeur.

Il est assez fastidieux de cliquer à côté de l'image et de remplir les cases une à une avec seulement les flèches du clavier.

L'idée c'est de pouvoir remplir le tableau normalement en gardent l'image "par dessus" le tableau.

Si je ne suis pas très clair hésitez pas à me dire quels points il faudrait que je précise

Et si ça se trouve ... ça n'est juste pas possible ...

ha ok, du coup pour ta précision : "L'idée c'est de pouvoir remplir le tableau normalement en gardent l'image "par dessus" le tableau."

wep donc s'il s'agit de transformer une image en papier peint au-dessus des cellules du tableur, je connais bien aussi, chez moi ça marche super. Du coup j'ai du stuff.

C'est pas difficile, c'est une question d'organisation du fichier, par contre de mémoire mon calcul de déplacement de la sélection de la cellule plante avec un zoom >100%, ça prend d'autres cellules, donc il faut rester avec un zoom à =<100%.

J'ai fais un tuto pour l'explication du concept ici :

https://www.excel-pratique.com/fr/telechargements/doc-vba/comment-gerer-evenements-souris-excel-vba-no294.php

Par contre, ici j'ai une démo, avec une image et la possibilité d'utiliser la souris normalement (tu peux changer les options d'actions du cureur, en appuyant sur les boutons poussoirs d'option (c'est le fichier MouseEvents gestion du clic souris dans MouseMove.xlsm au milieu de la page) :

https://forum.excel-pratique.com/cours-astuces/tuto-gestion-des-mouseevents-au-dessus-d-images-t92955.html

Voilà à quoi ça ressemble, si je suis encore réveillé ça colle à ton pb :

screen tuto gestion clic souris

Tiens nous au courant si c'est ok ou si tu as encore des soucis.

Je vais me lancer dessus demain et voir si je peux le mettre en place. Mais par contre le problème du zoom est très ennuyeux. Je pense que tu as vu la taille du plan et des cellules : je suis souvent autour des 40% de zoom plutot.

Merci pour ton aide en tous cas =)

Hello,

à 40% t'est sur un dézoom arriére <=99% ça marche , c'est si tu part sur un zoom avant à 140% que ça poserait problème.

Après pour les zooms avant supérieur à 100% faudrait chercher le coef de régu et remettre à jour la table, je pense.

Effectivement pour le zoom, j'avais mal lu et tu avais déjà précisé que pour dézoom ça fonctionnerait : MB

Je suis en train d'essayer de mettre en place cela. Ca fonctionnera mais du fait du code qui est derrière, je doute que ça sera utilisable : le nombre de cellules que je dois traiter est bien plus grand que du 6x6 pour un jeu de plateau excel. Ici 1 plan est en 51x74, et vu que mon plan se répète en couches, je tombe sur du 806x74 (Il y a en fait sur une même feuille le plan qui se répète 15 fois à peu près. ). Le calcul des positions en automatique devient alors trèèèès laborieux pour l'ordinateur. Le fichier est en fait déjà énorme et j'y ai multiplié les calculs et les interconnexions entre les cellules et les feuilles.

Je termine pour 1 seul plan (51x74) pour voir si ça fonctionne dans un premier temps

J'ajoute qu'une petite erreur s'est glissée dans ton tuto :

La formule correcte pour la cellule K2 est : =RECHERCHEV(K4;C10:D46;3;VRAI)

Je rencontre toutefois un petit problème : Cliquer sur le masque me renvoi bien à une cellule, mais pas la bonne ^^

J'enlève les parties sensibles de mon fichier puis je te le joins pour que tu puisses voir

EDIT : Le fichier faisant 3,58 MO, il ne m'est pas possible de le joindre ...

sans titre

Re:

Passe par www.cjoint.com tu peux y mettre des fichiers jusqu'à 15mo, c'est un service de cloud qu'on utilise beaucoup ici.

Et donc ci-joint ( ), la feuille sur laquelle j'ai essayé d'appliquer ton tuto

Hellsoir,

Fichier test ici : https://www.cjoint.com/c/GJrwjK7El37

Effectivement ton fichier est très lourd et très grand, je ne pense pas qu'étendre mon idée sur 16 zones soit calculable sans problèmes, déjà sur mon ordinateur où il y'a un Intel Core i7, j'ai du désactivé le calcul auto, pour arriver à faire le calcul de la position de la souris.

Néanmoins j'ai réussis à trouver une solution, en gardant mon idée de fonctionnement.

1/ Garder le calque activex (MAP) toujours visible

Pour que le code fonctionne, il faut que le calque activex, soit visible entièrement. Sinon le calcul plante, car il prend en compte le scrolling qu'il faudrait faire (faire, donc non fait... ) et on se retrouve sur les bords à avoir une mauvaise sélection de cellule.

Donc, dans ma correction, j'ai fait en sorte qu'on voit toujours le calque activex entièrement où se trouve la souris, avec un zoom de recentrage.

Mais étant donné la taille de l'image, pour avoir 1 calque visible on se retrouverai avec un zoom à 20%, donc point 2/.

2/ Habiller l'image de fonds avec plusieurs calques activex.

Vu la taille de ton image et si on veut avoir au moins un zoom de 40%, il faut créer plusieurs calques dont chacun seront visible entièrement en fonction du déplacement de la souris, ce qui suppose de découper l'image de fond pour y attribuer un calque sur chaque zones.

Ton cadre fait 50 lignes sur 76 colonnes, si on divise la zone en 6 calques de 25 lignes x 25 colonnes, on peut le jouer.

ça fait un calque à placer au-dessus de l'image en haut à gauche, haut au centre, haut à droite, bas à gauche, bas au centre, bas à droite.

ça permet de voir en gros un bon gros quart de l'image.

Pour gérer le fait de garder visible les calques où se trouve la souris, il a fallut que j'ajoute une plage de données, qui sert d'interupteur, en dessous du tableur de calculs de la position de la souris. ça évitera de calculer 50 fois de suite le recentrage. ça le fera uniquement si on change de calque.

3/ Ce point sera édité plus tard // Relatif aux ajouts de variables d'ajout de calculs pour les positions

Du fait de la position des calques et qu'il y'en ait plusieurs, il faut prendre en compte des décalages dans les X,Y , mais un graph sera plus parlant, je mettrais un scan de mon croquis.

Voilà, donc y'a 1 cadre sur 16 qui marche plus ou moins bien, la fonction clic, ne marche pas pour l'instant.

Tu peux toujours pour le moment, entrer dans les cellules en appuyant sur entrer ou autre, au moins pour l'instant, tu arrivera déjà à mieux déplacer la sélection cellule vers ton but.

Comme tu peux le voir, avec ce type d'organisation de codage, il faudrait donc refaire 16 fois le codage, donc un boulot d'1 semaine à vue de nez, juste pour ça. Et même pas sûr que tu arrive à faire fonctionner le fichier à cause de sa lourdeur.

Je pense que tu devrais plutôt garder 1 cadre comme zone de travail, où tu aurais tes calques activex pour déplacer ton curseur cellule.

Et y faire défiler une carte une à une, en y important les données des zones archivées sur demande, en évitant le calcul automatique au maximum.

Allez il est tard a+

C'est assez impressionnant ce que tu as réussi à faire !

Ton avis soutiens celui que je me faisais : il n'est pas possible d'appliquer ce type d'outil sur un fichier de cette dimension

A moins d'avoir un ordinateur de la nasa ... ce que je n'ai pas à ma disposition ^^

De plus le temps pour le codage représente un investissement trop important, alors je vais laisser tomber pour ce qui est des "6x16 calques".

Je pense que tu devrais plutôt garder 1 cadre comme zone de travail, où tu aurais tes calques activex pour déplacer ton curseur cellule.

Et y faire défiler une carte une à une, en y important les données des zones archivées sur demande, en évitant le calcul automatique au maximum.

Je pense comprendre l'idée : seulement 6 calques activex avec cette methode (pour une grille), et la grille est "interchangeable" avec les 15 autres. Toutefois je ne saurais pas du tout comment faire sachant que les données des 16 grilles sont nécessaires simultanément afin de calculer des bilans par la suite (non présents sur le fichier)

En ce qui concerne le fait de limiter les calculs automatiques : j'ai essayé de le faire, mais je ne vois pas où je pourrais "rogner". Peut être as-tu vu des points d'amélioration ?

Je te remercie encore ô grand gourou d'Excel 8)

Passe une bonne journée!

Hello,

Hadrien1900 a écrit :

Je pense comprendre l'idée : seulement 6 calques activex avec cette methode (pour une grille), et la grille est "interchangeable" avec les 15 autres. Toutefois je ne saurais pas du tout comment faire sachant que les données des 16 grilles sont nécessaires simultanément afin de calculer des bilans par la suite (non présents sur le fichier)

C'est ça, il y'a plusieurs méthodes possible, tout en excel est possible, s'il n'y a de format cellule perso (couleur, gras,...), sinon vba. C'est compliqué, dans le sens où il faut organiser une maquette définitive du fichier à utiliser et s'y conformer durant la vie du fichier, histoire de dire aux formules ou au code, où aller chercher les infos.

En vba, par exemple, j'ai une appli https://www.excel-pratique.com/fr/telechargements/utilitaires/geromemo-gestionnaire-excel-de-memos-no281.php, dans la même idée, au lieu de défiler des cadres, on y défile des mémos dans l'onglet qu'on peut modifier,...

Hadrien1900 a écrit :

En ce qui concerne le fait de limiter les calculs automatiques : j'ai essayé de le faire, mais je ne vois pas où je pourrais "rogner". Peut être as-tu vu des points d'amélioration ?

De ce que j'ai vu, les fonctions vba du fichier consomme beaucoup de temps de calculs, à voir si tu ne peux pas faire plutôt un calcul de MàJ sur demande, plutôt qu'en temps réel et désactiver les macros.

En gros, en temps normal le fichier est en mode calcul manuel et les macros sont désactivées.

Et à l'aide d'un bouton tu fais 1 fois, un calcul de MàJ des formules du fichier et 1 réactivation des macros.

- Pour désactiver les événements vba, ça doit peut être marcher pour les fonctions, pas testé.

c'est Application.EnableEvents = false et true pour réactiver

- Dans les fonctions vba, peut être qu'en désactivant l'affichage, ça accéléra un peu le code, au début de la fonction mettre

application.screenuptdating = false et à la fin du code true pour MàJ l'affichage.

- Mettre le fichier en calcul manuel et à l'aide d'un bouton utiliser le code activesheet.calculate par exemple pour MàJ les calculs de la feuille.

Le code du bouton donnerait

( * ) =>

sub activ_deactiv
Application.EnableEvents = true 'réactive les macros événements et les calculs des fonctions
activesheet.calculate 'on recalcule la feuille 'pendant cette ligne la feuille se met à jour, plus ou moins longtemps
'... après le calculate la feuille retourne en auto à son mode de calcul manuel
Application.EnableEvents = false  'on désactive à nouveau les macros événements et les calculs des fonctions
end sub   

Ici j'ai fait une petite explication https://forum.excel-pratique.com/cours-astuces/accelerer-un-code-t28674.html

il y'a plusieurs méthodes possible, tout en excel est possible, s'il n'y a de format cellule perso (couleur, gras,...), sinon vba

J'utilise justement le remplissage des cellules pour faciliter la caractérisation des zones ^^

J'avais déjà vu ton post justement sur l'optimisation des fichiers excel !

J'ai ajouté un petit bouton avec ta formule pour rendre manuel le recalcul des formules

Je pense qu'on a bien creusé tout ça et qu'on ne pourra pas aller plus loin malheureusement. Merci Tristan

Sur le même fichier, j'aurai voulu ajouter une fonctionnalité, et peut être sais-tu comment la réaliser ?

Cela consisterait en la création d'un nouveau rapport automatiquement, déclenché par le remplissage d'une cellule, avec récupération de données d'une colonne.

Le rapport consiste en une trame ressemblant à l'image ci jointe.

L'idée c'est qu'un rapport par jour se crée et se complète automatiquement pour donner "une forme" aux données déjà ajoutées dans les onglets précédents. Les rapports sont archivés les uns à la suite des autres, sur un même onglet ou pas.

Toi qui est là depuis longtemps, peut être dois-je créé un nouveau sujet pour ce problème ?

trame

Re:

Hadrien1900 a écrit :

Cela consisterait en la création d'un nouveau rapport automatiquement, déclenché par le remplissage d'une cellule, avec récupération de données d'une colonne.

Le rapport consiste en une trame ressemblant à l'image ci jointe.

L'idée c'est qu'un rapport par jour se crée et se complète automatiquement pour donner "une forme" aux données déjà ajoutées dans les onglets précédents. Les rapports sont archivés les uns à la suite des autres, sur un même onglet ou pas.

Si on change de sujet, il faut créer un nouveau sujet. C'est mieux lors des recherches de solution sur google, d'avoir des sujet bien spécifique. Il doit y avoir des forumers qui ont des modeles de publipostage de démo tout prêt je pense. Et il y'a plus de chance que tu trouve plus d'intervenants sur le thème du publipostage, en partant d'un sujet nouveau.

Je pense qu'il faudra suivre les grands points ci-dessous pour ton algho :

1/ Je pense que pour que le rapport se lance en auto, il va falloir utiliser l'évent feuille Worksheet_Calculate ou Worksheet_Change.

Perso je suis pas fan de l'automatisation par évent, si fausse manip, on aura un rapport inutile, mais à voir suivant le process de travail.

2/ Après pour le rapport, tu as déjà un modèle de rapport fixe, donc oui tu aura besoin de savoir où récupérer les variables qui iront remplir les cellules du rapport.

C'est simple, je pense que tu va surtout utiliser cette formule :

'Cellule destinataire de la valeur variable du rapport                  cellule source de la variable à importer dans le rapport
thisworkbook.worksheets(1).range("A1").value = thisworkbook.worksheets(2).range("B1").value 

3/ Une fois rempli, je ne pense pas que faire 365 onglets, en suivant le principe d'1 rapport par jour, soit une bonne idée au vue de la lourdeur du fichier, mieux vaut enregistrer un fichier par jour dans un dossier en personnalisant le nom par la date du jour.

Sinon le code à utiliser sera (codage simple qui se récupère par l'enregistreur de macro) :

    Sheets("Feuil1").Select
    Sheets("Feuil1").Copy After:=Sheets(1)

ça copie la feuille 1 par exemple où se trouverait le rapport, pour placer la copie à la fin du fichier.

4/ sauvegarder le fichier, important puis faire un RAZ des variables de l'onglet où tu calcul le rapport pour le prochain calcul, sinon risque de parasitage de mauvaise données dans le suivant.

Note: tu peux transformer une plage excel avec image au-dessus en une image, ça pourrait te servir.

C'est simple même sans code ça se fait, tu copie une sélection de cellules et colle là en collage spécial image.

D'accord merci pour toutes ces infos

Je crée un nouveau sujet pour connaître l'avis des autres

Rechercher des sujets similaires à "gestion image tableau"