# Logiciels > Microsoft Office >  Dcouvrez la programmation 3D en VBA/VB6 avec OpenGL 1.1 [Tutoriel]

## Arkham46

Bonjour  tous!

Je vous invite  une dcouverte de la programmation 3D avec OpenGL 1.1.

Fates vos premiers pas dans la *programmation 3D* avec votre *langage VBA ou VB6* prfr.

Voici un aperu de ce que vous pouvez obtenir en suivant ce tutoriel :




Vous pouvez ajoutez vos commentaires sur cet articles  la suite de ce message.

 ::merci::

----------


## Tofalu

Comme on dit souvent :


Une fonctionnalit tellement inutile ... et donc totalement indispensable  ::mouarf:: 

Beau boulot  ::ccool:: 

Aprs a on va encore dire, qu'Access est limit  ::roll::

----------


## Invit

Bonjour

Que dire de plus  part  ::applo:: 

Philippe

----------


## Arkham46

Bonjour  tous,

Cet article de dcouverte de la programmation 3D avec OpenGL 1.1 a t mis  jour.
En plus du langage *VBA*, il est dsormais applicable  Visual Basic 6 (*VB6*).

Pensez-vous intgrer OpenGL dans vos applications VB6 ou VBA?
Cet article vous a-t-il t utile?

 ::merci::  pour vos commentaires.

A suivre dans le prochain tutoriel : l'utilisation des extensions.
Vertex Buffer Objects, Texture 3D, Shaders, ...
A bientt.

----------


## toss.net

Bonjour,
Oui super ! J'ai un projet de changement de dessin en opengl (utilis qu'en 2d) et ce tuto tombe bien... nous avons encore bcp de logiciels sous VB6 et donc ce tuto et pour nous toujours d'actu ! ::ccool::

----------


## lulu29

Bonjour,

Tout d'abord bravo pour ce tuto qui m'a permis de dcouvrir la 3D opengl sous VB6.
J'aurais juste une question :
Sous VB6, quelle mthode utiliser pour faire la mme chose dans un contrle PictureBox d'un formulaire dj existant ?
J'ai besoin d'un picturebox opengl que je pourrai contrler avec des boutons par exemple.
Merci d'avance.

----------


## Arkham46

Bjr,




> Sous VB6, quelle mthode utiliser pour faire la mme chose dans un contrle PictureBox d'un formulaire dj existant ?
> J'ai besoin d'un picturebox opengl que je pourrai contrler avec des boutons par exemple.


Vous pouvez ajoutez cette fonction InitOpenGLPicture au module clOpengGLFormVB6 :


```

```

Et appelez cette fonction en donnant la pictureBox en paramtre :


```

```

( la place de _oGl.InitOpenGL Me_)

----------


## lulu29

Bonjour,
Grce  vos conseils ma petite appli est en bonne voie mais je cale sur "gludisk".
J'ai cr un cne avec glucylinder et je voudrais fermer sa base par un disque.
Quand je veux crer une quadrique rien ne s'affiche, voici le code :



```

```

Je ne vois pas pourquoi cela ne marche pas ?
Merci d'avance.

----------


## Arkham46

> Bonjour,
> Grce  vos conseils ma petite appli est en bonne voie mais je cale sur "gludisk".
> J'ai cr un cne avec glucylinder et je voudrais fermer sa base par un disque.
> Quand je veux crer une quadrique rien ne s'affiche, voici le code :


bjr,

peut-tre un problme d'orientation qui rend la face invisible (si culling activ)?

Tester avec avant le gluDisk :


```
gluQuadricOrientation lQuad4, GLU_INSIDE
```

(ou GLU_OUTSIDE, je ne sais plus trop dans quel sens a se passe)

Sinon pour un problme purement openGL il y a le forum OpenGL sur lequel tu auras sans doute plus de rponses (avec des gens plus expriments que moi  ::aie:: )

----------


## crogiez

bravo
on peut donc refaire "2001 Odysse de l'espace"
rebravo

----------


## Invit

Bonjour,

Flicitation pour ce magnifique article. Il m'a pas mal appris le VBA au travers de l'OPENGL, ainsi que l'utilisation des API.

Bravo  ::P:  !


P.S.:
Personne n'a donn de points sauf en 1re page  :8O:  Pour un travail aussi norme !

----------


## Invit

Bonjour,

J'ai un petit problme en Excel 64 bit. Est-ce que quelqu'un a russi  rendre compatible Open GL en 64 bit ?
Dans le module de classe clOpenGLUserForm, j'ai un problme sur la fonction PrivDisplay  la ligne:


```
glReadPixels 0, 0, gWidth, gHeight, gFormat, GL_UNSIGNED_BYTE, ByVal lBmBits
```

Ca ne passe pas. Fermeture d'Excel.
A ce stade:
- gFormat =  32993 (GL_BGRA)
- gHeight = 242
- gWidth = 483
- GL_UNSIGNED_BYTE = 5121
- lBmBits = 0^
Test avec les dclarations:


```
Public Declare PtrSafe Sub glReadPixels Lib "opengl32" (ByVal x As Long, ByVal y As Long, ByVal width As Long, ByVal height As Long, ByVal format As Long, ByVal ptype As Long, pixels As Any)
```

'ou alors


```
Public Declare PtrSafe Sub glReadPixels Lib "opengl32" (ByVal x As Long, ByVal y As Long, ByVal width As Long, ByVal height As Long, ByVal format As Long, ByVal ptype As Long, pixels As LongPtr)
```

Mais beug. Si quelqu'un a russi a faire le module de classe en 64 bit, a serait classe qui montre la dclaration glReadPixels. Si il est cens lire en mmoire, le beug vient peut tre (surement mme) d'une autre fonction finalement.

Voil, a+ et merci par avance.

----------


## Arkham46

Bonjour,




> J'ai un petit problme en Excel 64 bit. Est-ce que quelqu'un a russi  rendre compatible Open GL en 64 bit ?


Je suis un peu en retard, j'y travaille depuis hier.  ::aie::

----------


## davidbd

Bonjour Arkham46,

Je trouve ton tutoriel trs intressant et super bien mont.

Toutefois, en faisant quelques recherches supplmentaires sur le net, j'ai beaucoup de difficult  trouver des sources d'information autre que ton tutoriel. Je remarque que peu de gens utilisent VBA pour faire des dessins en 3D.

Connais-tu d'autres sites web qui traitent le mme sujet?
Aussi, y a-t-il des endroits o je peux trouver les commandes  utiliser pour OpenGL 3.X.X ?

Merci pour ta rponse et bonne journe!

----------


## Arkham46

Bonjour,

On ne trouve effectivement pas grand chose pour OpenGL en VBA.
Il y a bien une librairie vbogl.tlb pour VB6 mais c'est trs vieux et je n'ai pas test pour VBA.

Pour OpenGL 3 je vais y venir aprs avoir fait le travail sur la version 64 bits.

L'article date d'il y 5 ans, il y a un rafraichissement  prvoir.  ::aie::

----------


## epilot10

J'urilise OpenGL dans une pictureBox. Je veux savoir si c'est possible de dessiner avec des outils VB6 (cercle, ligne) par dessus l'image cr par OpenGL.

Merci

Jacquelin Hardy

----------


## Renaud976

Bonjour,

Merci beaucoup pour ce tutoriel qui sert toujours!  ::D: 

Je voudrais intgrer une visu 3D dans un formulaire qui contient des contrles vb6 (boutons, zones de texte, picturebox, onglets, etc. J'ai essay d'afficher ma visu 3D dans une picturebox avec le module de classe propos, mais sans y parvenir (et puis on perd le zoom  la molette).

Pour ne pas parler "en l'air", j'ai fait une version simplifie du code que vous pouvez tlcharger ici : http://www.cjoint.com/c/GEveVvNXTyP

Je me dis qu'il y a peut-tre moyen de placer et dimensionner prcisment la fentre FreeGlut au-dessus d'une zone de la fentre VB6 pour avoir accs  l'une et  l'autre? Voudriez-vous me dire si c'est possible et m'indiquer des pistes? Je cherche depuis plusieurs jours sans succs.

Bien cordialement,
Renaud.

----------


## klinik3d

Bonjour,

Je viens de dcouvrir le tuto pour intgrer du OpenGL en VBA... Du plaisirs en perspective car je travaille dans un centre de recherche universitaire qui fait du 3D avec des radiographies de patients. J'ai crer une banque de donnes en Excel qui fait la gestion des donnes 3D en VBA et j'utilise des outils externes pour l'affichage 3D. Je pense utiliser votre tuto pour une intgration du 3D dans Excel... Souhaitez-moi bonne chance!  ::D:

----------


## clementmarcotte

Bonjour,

Pour les abonns de *Office 365*. La suite intgre en natif, depuis quelques mises--jour, le support pour le 3D.

Hubble en 3D dans PowerPoint
Catalogue de vlos en 3D (Excel)
Robot Curiosity en 3D (Word)


Ceci tant dit, je ne sais pas si cela va tre intgr  Office 2019 "non 365". Donc, gardez l'adresse en rserve; cela peut toujours servir.

----------


## Eddy0

Dear Thierry
I've tried to visualize a nurbs object but nothing seems to appear, (bezier surfaces and curves work) have you developed some routine for nurbs callback interrogation? have you written something on nurbs with vba?
Thanks a lot for the collaboration
Bye 
Eddy

----------

