Réaliser une matrice avec Excel

SERIEUXETCOOL

XLDnaute Occasionnel
Bonsoir le Forum,

J'ai un petit problème de codage... Voici ce que je cherche à faire. Je dispose d'un axe X définit sur une plage [XD;XF]. Je parcours l'axe X en incrémentant d'un pas nommé PX.
J'ai la même chose avec un second axe, l'axe Y. Il est définit par une plage [YD;YF]. Et on parcours l'intégralité de cet axe avec un pas qui vaut PY.

XD,XF,PX, et YD,YF,PY sont des variables de types Double et sont à fixer par l'utilisateur. Elles sont donc connues et le système est donc paramétré.

Maintenant je cherche à remplir 2 colonnes dans une feuille Excel de la manière suivante :

Colonne A / Colonne B
XD / YD
XD / YD+PY
XD / YD+PY+PY
...
XD / YF
XD+PX / YD
XD+PX / YD+PY
XD+PX / YD+PX+PX
...
XD+PX / YF
XD+PX+PX / YD
ETC

Je ne parviens pas à réaliser cette matrice ! Un peu d'aide serait la bien venue si possible.

Au cas ou ma méthodologie ne soit pas la bonne, je donne quelques détails sur ce que je souhaite faire du code. En gros j'ai 2 axes X et Y qui représentent une largeur de photo en pixel et une hauteur de photo en pixel. Je désire placer un certains nombre de points sur cette photo avec la résolution que je veux. Mais je n'arrive pas à automatiser le placement des points car je ne sais pas créer la matrice.

Je reste disponible si vous avez besoin de plus d'infos.

André
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Réaliser une matrice avec Excel

Bonjour
Pourquoi diable veux tu ajouter dynamiquement un contrôle image ? Ce n'est pas du tout pareil qu'un objet défini avant la compilation, pas pratique à utiliser, il ne figurera pas dans la liste des objets connu de la feuille dans la liste en haut à gauche de la fenêtre de code ! Je ne sais même pas comment faire ensuite pour le manipuler. C'est possible mais ça ne m'intéresse même pas de chercher comment ! Et on ne pourrait pas non plus lui programmer aisément d'évènements si le besoin se faisait sentir. Je crois qu'on serait obligé de le faire par l'intermédiaire d'un module de classe. Quelle complexité inutile !
J'espère que ce n'était pas juste pour le positionner, parce que ça c'est très facile si l'objet est connu d'avance: toutes les propriétés de la fenêtre de propriété sont alors aussi accessibles par programmation.
À +
 
Dernière édition:

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Réaliser une matrice avec Excel

Bonjour Dranreb, le Forum

Tout d'abord je m'excuse pour cet énorme retard de ma part !!! 5 jours sans donner de nouvelles. J'ai eu une semaine des plus chargées et l'impossibilité de me connecter. De plus Internet ne fonctionne toujours pas chez moi. Les boules.

Bref me revoici. Je serais disponible plus souvent durant le weekend.



Pour revenir à ma dernière demande qui était de positionner le contrôle image sur la feuille. Je ne suis pas sur, mais vu ta réponse je pense que ça risque de poser problème pour la suite alors.

Je m'explique :

Actuellement ton fichier Excel est défini sans utiliser de code vba pour la création des contenus (cellules, données, mise ne page, graphs, contrôle image etc.). Pour le moment ça ne me pose pas de problème. Mais idéalement (je dis bien idéalement hein), je pensais tout coder sous vba. En gros on pars d'une feuille vierge, on lance le code et toute la feuille est automatiquement créée depuis le début.

Pourquoi je m'embête à faire ça ? Tout simplement que j'ai déjà un gros code en parallèle qui tourne, et qui est ainsi créé. à chaque fois que l'on démarre le code, il supprime tout pour repartir proprement de zéro. Il précharge une configuration initiale et laisse ensuite la main à l'utilisateur. Il génère ainsi une dizaine de feuilles et quelques milliers de lignes de calculs automatiquement. Tout se déroule en 20 secondes, ce qui est jugé largement accèptable dans mes critères.

L'avantage, est ainsi de partir TOUJOUR sur la MEME base initiale. Ça évite la modification de la structure initiale au cours du temps. S'il faut changer une formule, une info ou autre il suffit d'aller dans le code pour opérer. C'est ma manière de faire qui me conviens parfaitement.

On peut donc distribuer le fichier en sachant qu'il ne sera pas altéré au cours du temps. On pourrait figer les feuilles, protéger le classeurs etc. mais je préfère cette solution car toutes les données sont pratiquement dynamiques.


Pour en revenir au contrôle image, mon but actuel est donc de créer la feuille à partir de vba. Le contrôle image n'existe donc pas initialement et doit être ajouté, dimensionné, et placé sur la feuille par code. C'est l'étape ou j'en suis resté la semaine dernière.
Mais si tu me dis que créer un contrôle image est différent pour la suite d'un contrôle image déjà créé...je me dis aie aie aie.

Très intéressant en tout cas. Cela dit, je ne visualise pas encore pourquoi il serra plus compliqué de travailler avec un contrôle image fraichement créé plutôt qu'un contrôle image déjà présent sur la feuille. Je veux dire tant que sur la feuille il y a la présence d'un contrôle image pareillement nommé, ça devrait être bon non ? Faut que je médite sur cette question.

En tout cas, ma question était simplement de savoir comment on pouvait déplacer le contrôle image sur la feuille. Qu'il soit créer par vba, ou déjà présent sur la feuille c'est pareille il me semble. Je choisis le nom du contrôle image sur lequel je veux travailler et je donne les instructions non ???


A la limite positionner et dimenssionner le contrôle image n'est pas le dur ni le plus important pour le moment. Je vais essayer de voir si je peux aller plus loin dans le code avec un contrôle image fraichement créé.

J'ai du mal à voir les conflits pour l'instant.


Merci pour l'info en tout cas Dranreb.


Cordialement,

André


PS : Si tu sais comment modifier la taille et position left, right, height, weight d'un objet déjà présent sur la feuille je suis preneur
 

Dranreb

XLDnaute Barbatruc
Re : Réaliser une matrice avec Excel

Bonjour.
Si tu sais comment modifier la taille et position left, right, height, weight d'un objet déjà présent sur la feuille je suis preneur
Mais c'est comme pour toutes les propriétés d'objets connus: le CodeName de la feuille, un point, le nom de l'objet, un point et la propriété. À la place du CodeName, Me peut être utilisé si c'est écrit dans le module de la feuille, voire omis.
Cordialement
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Réaliser une matrice avec Excel

Bonjour Dranreb,

Je suis d'accord avec toi pour ce qui est de la définition des propriétés des objets.

Mais comment définir la taille non pas en pixels mais relativement au coin de cellules ?

Dans l'exemple ci-dessous je place un objet sur une feuille et je définis ses propriétés Left et Top via une cellule. Les propriétés Width et Height sont définis en pixels. J'aimerais les définir elles aussi par rapport à des cellules. Mais je n'y parviens pas.

Le problème que je rencontre est plutôt à ce niveau la.

Pourtant j'ai testé pleins de choses grâce à l'aide d'Excel mais pas de résultats probants.

ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
DisplayAsIcon:=False, Left:=[N16].Left, Top:=[N16].Top, Width:=210, Height:=100).Select


Si tu as des idées, un conseil je suis preneur.

André
 

Dranreb

XLDnaute Barbatruc
Re : Réaliser une matrice avec Excel

Bonjour.
À titre d'exemple, le contrôle image est maintenant recadré dans un plage nommée "PlaceImage".
À +
 

Pièces jointes

  • ImgMicrons.xls
    369.5 KB · Affichages: 51
  • ImgMicrons.xls
    369.5 KB · Affichages: 52
  • ImgMicrons.xls
    369.5 KB · Affichages: 66

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Réaliser une matrice avec Excel

Merci Dranreb pour l'info.

Ça m'a permis de me débloquer ENFIN ! Depuis le temps que je cherchais à faire ça. Je vais enfin pouvoir placer mes objets proprement sur une feuille ! (Graph, CommandButton, ListBox, ContrôleImage...)

Donc merci pour l’exemple. Je savais bien que ça devait être tout bête au final^^

Je place ici un petit exemple au cas ou ça puisse aider du monde. Ça n'était pas si intuitif à première vue, mais maintenant ça me parait plus qu'évident. C'est le principal.

CommandButton1.Left = Range("B4").Left
CommandButton1.Top = Range("B4").Top
CommandButton1.Height = Range("B4:C7").Height
CommandButton1.Width = Range("B4:C7").Width

Amicalement,

André

Ps : Dranreb, j'ai presque finis la mise en page "idéale" du classeur pour traiter les images. Je poste le classeur dès que je peux. Je suis lent, sorry.
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Réaliser une matrice avec Excel

Bonsoir le Forum, Dranreb

Dsl pour le retard j'ai eu 2 semaines de boulot intense et par conséquent j'ai du mettre en stand by le sujet traité par ce post.
Je suis de nouveau full actif à présent.

Donc comme promis, j'ai réussi à faire la mise en page telle que je l'imaginais. De plus, tout le code est intégralement créé par code vba (l'idée qui se cache derrière est de pouvoir boucler la construction de la feuille idéale pour plusieurs images. Mais c'est pas pour tout de suite).

Le fichier Excel que je place en pièce joint contient tous les éléments de base nécessaire. Il ne reste plus qu'à ajouter le code de Dranreb dans la version que je propose. C'est la que je bloque actuellement. Je ne parviens pas à intégrer le code dans mon fichier. Je ne gère pas assez.

J'ai laissé des points d'interrogations qui justement doivent être complétés par le code. J'aimerais si possible ne pas utiliser de plage nommées. Elles me posent beaucoup de problèmes et je préfère travailler plutôt avec les Range.

Dernière chose, l'intégralité du code doit permettre la construction depuis une feuille vierge. C'est une contrainte vraiment forte. Finalement il suffit de poursuivre sur la base que j'ai réalisé.

Intégrer l'ancien code dans le nouveau fichier ne doit à priori pas poser de problème. C'est simplement mon avis bien sur.


Voila, en conclusion il faudrait faire la mise à jour de l'ancien fichier sur la nouvelle base que je propose. Si l'on parviens à faire cette mise à jour ce serait déjà top.


Dranreb, j'attends ton avis, tes remarques ou tout simplement tes questions si tu as besoin de plus de détails.


Bien cordialement,

André

Ps : Je place la dernière version du code de Dranreb sur lequel on doit justement prélever le code pour le mettre dans le nouveau fichier que je propose et dont la base du code est présente.
 

Pièces jointes

  • ImgMicrons.xls
    369.5 KB · Affichages: 56
  • TRAITEMENT_IMAGE.xlsm
    84.4 KB · Affichages: 57
  • ImgMicrons.xls
    369.5 KB · Affichages: 44
  • ImgMicrons.xls
    369.5 KB · Affichages: 51

Dranreb

XLDnaute Barbatruc
Bonjour.
Vous devriez créer une discussion de toute pièce pour votre problème, et non en poursuivre une ancienne sans rapport.
Joignez y un classeur montrant ce que vous avez et définissant ce que voulez, avec un exemple de résultat souhaité. Expliquez notamment, qu'il soit en entrée ou en sortie du résultat voulu, le système de codage d'accès à une maille triangulaire. Il devrait y avoir dans tout ça du x/2 et du y×√3÷2 ou un peu différent si vous voulez que l'unité de maillage soit verticale et plutôt qu'horizontale…
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 184
dernier inscrit
Di Martino