Pensez-vous que VBA n'est pas un langage professionnel ?
Un développeur s'essaie à créer une application de discussion de groupe avec Excel et VBA

Le , par Michael Guilloux, Chroniqueur Actualités
Considérez-vous VBA comme un langage de programmation professionnel ? Pourquoi ?
Que ça soit sous Excel ou Access, Visual Basic for Applications (VBA) peut parfois permettre de faire des choses extraordinaires, même s’il faut souvent des connaissances très pointues. Vous l’avez probablement remarqué sur developpez.com où Excel et Access disposent de ressources énormes, y compris sur VBA. Mais pour beaucoup de développeurs, VBA -- et parfois VB 6 –- n’est pas considéré comme un langage de programmation pour professionnels. Cela peut être confirmé en partie, parce que le langage semble plus être utilisé par les non-informaticiens en entreprise pour créer leurs propres applications dans le cadre professionnel.

Tristan Calderbank, un passionné de la programmation et de l’électronique a partagé un projet dans lequel il s’est essayé à développer une application de discussion de groupe avec Excel et VBA. L’idée lui est venue lors d’un stage où un autre stagiaire lui a suggéré de trouver un moyen de s’envoyer des messages discrètement à partir de leurs PC sur le réseau local de l’entreprise. Pour ce faire, le choix de Tristan s’est porté sur Excel et VBA. Avec des feuilles Excel et du code en VBA, il a mis en place une application peer-to-peer avant de la transformer en une application de type « client-serveur », toujours avec Excel et VBA.

L’idée de départ consistait à créer deux classeurs Excel sur un lecteur du réseau local. Sur une feuille, chaque classeur contient une cellule « Send Message » et « Inbox ». La cellule « Send Message » correspond au message envoyé et la cellule « Inbox », au message reçu. Pour que ça marche, c’est simple : il faut faire correspondre la cellule « Inbox » de chaque utilisateur à la cellule « Send Message » de l’autre. En d’autres termes, le message reçu par un utilisateur est celui qui est envoyé par l’autre et vice-versa. Cette étape se fait juste à partir d’une formule Excel depuis la feuille de calculs.


C’est un bon départ, mais cela ne peut pas répondre à des besoins réels en entreprise, même au sein d’un petit service, entre collègues. Il faudrait quelque chose qui pourrait s’adapter à plus de deux utilisateurs et de plus dynamique. Tristan est donc passé à une application de type « client-serveur ». Le projet inclut désormais n utilisateurs (donc n fichiers Excel clients) et un fichier serveur dans un même dossier sur lecteur de réseau local.

Chaque fichier client contient une cellule dans laquelle l’utilisateur insère son nom et une autre pour son message.


Avec du code VBA, le fichier serveur est programmé pour parcourir chaque fichier client dans le même dossier. Il récupère les noms d’utilisateurs et messages dans les fichiers clients et les copie dans une plage dédiée au fil de discussion, comme vous pouvez le voir dans la capture d’écran suivante. Chaque message est précédé du nom de l’expéditeur. Le dernier message apparait sur la dernière ligne de la plage dédiée au fil de discussion et un nouveau message fait remonter les messages précédents d’une ligne vers le haut, pour se positionner à la dernière ligne.


Il s’agit d’un travail qui est loin d’être terminé, avec des imperfections. Mais cela montre qu’on peut aller loin avec Excel et VBA, et VBA de manière plus large, surtout quand on n'est pas informaticien. Comme Tristan l’explique, il peut y avoir des doublons dans le fil de discussion. Mais à part ça, pour améliorer l’application, on pourrait par exemple ajouter dans chaque fichier client l’heure d’envoi des messages. Ce qui pourrait permettre d’afficher les messages par ordre chronologique. Espérons que ce petit projet aiguise l’appétit des spécialistes en VBA de developpez.com, qui pourraient peut-être produire quelque chose de plus opérationnel d’ici peu.

Pour le moment, le code source et les fichiers Excel du projet de Tristan sont sur GitHub.

Sources : GitHub, Excel Messenger (site officiel)

Et vous ?

Que pensez-vous de l’application Excel Messenger ?
Avez-vous déjà réalisé de grandes applications ou effectué des tâches complexes avec VBA ? Partagez votre expérience.
Considérez-vous VBA comme un langage de programmation professionnel ? Pourquoi ?

Voir aussi :

Microsoft lance une API Excel pour Office 365 qui permet aux développeurs d'intégrer les fonctionnalités d'Excel dans leurs applications


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de unparia unparia - Membre expert https://www.developpez.com
le 07/09/2016 à 18:10
Bonjour et amitiés
Ma réponse va être très simple et très claire :
La vocation d'un tableur est celle ... d'un tableur.
Utiliser le langage de développement d'un tableur à d'autres fins que la vocation d'un tableur est toujours possible.
Accompagner le code d'appel (et d'utilisation) de fonctions de l'Api de Windows est également possible (mais ce n'est même plus alors du VBA)

Mais tout cela est-il vraiment souhaitable ? Je ne le crois pas

Je m'y amuse de temps à autre, mais uniquement pour me divertir.
Pour tout résumer : il est toujours possible de raboter une planche à l'aide d'une perceuse que l'on a dotée d'un disque abrasif ou d'une ponceuse dotée d'un papier abrasif. Un professionnel ne s'y égarera pas et utilisera l'outil adéquat pour ce faire. Il n'utilisera toutefois pas non plus ce dernier outil pour poncer, mais alors une ponceuse.
Ce n'est là que mon avis.
Avatar de rdurupt rdurupt - Expert éminent sénior https://www.developpez.com
le 07/09/2016 à 19:14
Bonsoir,
J'ai commencé à travailler avec Visual studio 3, et j'ai suivi 4,5,6 2005 et suivant!

Vba est considéré comme un langage spaghetti pour développeurs du dimanche.

Microsoft à largement contribuer à cette réputation. Il déclarait dans sa plaquette commercial que Vb était un langage de programmation instinctif. Comme Si l'instinct était d mises dans un programme professionnel!

Les donneurs d'ordres ont fait le reste, déroulant un discours qu'ils ne comprennent pas.

A mes début, quand je parlais des modules de classe tout le monde rigolait.

En 2002, vous dites que vous connaissez le module de classe , on voit que vous ne savez pas ce que c'est.

Ou alors attention nous on veut du Vba pas vb6!

Ou encore vous postuler Pour du .net mais dans votre Cv il y que du Vb alors que ça fait 1 an que la première version est sortie hors bête test!
Avatar de Népomucène Népomucène - Modérateur https://www.developpez.com
le 07/09/2016 à 19:20
Citation Envoyé par unparia Voir le message
il est toujours possible de raboter une planche à l'aide d'une perceuse
Oui et le phénomène n'est pas nouveau.

J'ai déjà fait appel à des API Windows depuis VBA parce que j'avais développé toute une application Excel pour une société qui voulait impérativement Excel.
J'ai aussi programmé "à la volé" des procédures stockées sur SQL Server à partir ... d'autres procédures stockées !

On a tous fait ce genre de choses un peu limite mais c'était dans le cadre d'un développement précis.
Et je continue à développer en VBA quand je dois utiliser l'automation entre Access et Excel. Pour moi c'est là le côté "professionnel" du développement VBA.

cela montre qu’on peut aller loin avec Excel et VBA
On pourrait tout aussi bien créer une base de données relationnelles sur serveur avec Excel (on imagine d'ici les performances )

Tristan Calderbank a inventé un nouveau genre de programmation qui consiste à prendre un outil à contre-emploi
et prouver qu'il arrive à ouvrir une boîte de petits pois avec une fourchette.

... so what ?
Avatar de Omote Omote - Membre actif https://www.developpez.com
le 07/09/2016 à 21:17
Qu'est-ce qu'un langage professionnel? Au même titre qu'un AutoIT ou bien un AutoHotkey c'est l'usage que l'on en fait qui le professionnalise. L'outil professionnel Test Complete utilise, entre autre, le VBScript pour écrire des tests et cela m'arrive souvent de faire encore des batchs car j'ai moins de connaissance en PowerShell. Donc le VBA a sa place... mais uniquement dans le tableur (comme le fait remarquer unparia) pour faire des opérations sur les tableaux. Utiliser un tel langage pour monter un programme complet c'est contre productif et donc non professionnel. Ce qui montre que ce n'est pas le langage qui n'est pas professionnel mais son utilisation.

Après est-ce que c'est un bon langage? Personnellement, je trouve cela horrible et le peu de fois que j'y ai touché, cela s'est résumé à du copié/collé depuis internet en modifiant les variables. C'était sur des feuilles Excel sans pérennité donc je pouvais me le permettre. Mais je n'aimerai pas devoir supporter ce genre de programme.

Maintenant j'ai vu un vieux formulaire qui traîne dans la compagnie avec une communication vers SAP pour la gestion du stock. Cela date d'une époque où la personne qui a monté cela n'était pas programmeur. Cela perdure car c'est de moindre coût tant que cela ne casse pas et que la production est habitué à l'utilisé. Alors pourquoi changer ce qui fonctionne. À refaire quelque chose aujourd'hui, un site web serait surement monté. Encore une fois, c'est l'utilisation qui est faite de l'outil qui est professionnel ou non, pas le langage.
Avatar de micka132 micka132 - Membre émérite https://www.developpez.com
le 07/09/2016 à 21:24
Citation Envoyé par Michael Guilloux Voir le message
Considérez-vous VBA comme un langage de programmation professionnel ? Pourquoi ?
Avec le moteur V8 google nous a montré que c'est pas le langage qui est important .
Avatar de Andarus Andarus - Membre actif https://www.developpez.com
le 07/09/2016 à 21:43
Citation Envoyé par micka132 Voir le message
Avec le moteur V8 google nous a montré que c'est pas le langage qui est important .
Quand tu est en situation de monopole comme le js peut-être(bien que tous le monde cherche à créer des languages alternatif qui compile en js). Mais si on veux faire du code pour excel C# me parait être un meilleur choix.
Avatar de rdurupt rdurupt - Expert éminent sénior https://www.developpez.com
le 07/09/2016 à 22:18
Vba ne peut être qu'une alternative quand on ne pas faire autrement. Plus haut ont nous a parlé de Vbscript c'est le batch du développeur! Vba c'est pareil.

Il est contre productif pour une entreprise de recourir à des outils de communication de ce type.
Mieux vaudrait une centralisation de l'information afin que chaque acteur n'est qu'à renseigné sa partie. Ainsi chaque niveau de l'information serait alimenter en amont par le niveau supérieur et alimenterait le niveau inférieur.

Pour moi Vba, ça va pas beaucoup plus loin qu'un CopyRecordset.

Vb a été abandonné par Microsoft en 2003, il méritait mieux. Reste Visual studio 6,tombé dans le domaine public qui pourra encore servir dans des applications Vba, car la politique de Microsoft à la suite des affaires judiciaire lié au monopole là obligé à retirer de la licence standard des librairies forte intéressante et dont seule la concurrence fournir parfois gratuitement (un comble) nous obligeant à trouve de astuces comme pour ce satané timer!

Je rejoins unparia et consorts sur la pertinence de ce langage!

Faire un chat en Vba Excel c'est un exercice de style.

J'en est fait un en turbo pascal et dos 6.2 il y quelle dizaines d'ans. Le SGBD on connaissait pas pas de problème un masque sur un fichier a accès directe et voila.

Un copy coller 3 semaines de codages.

Vba un rêve! Qui deviendra peut être un jour une réalité!
Avatar de RyuAutodidacte RyuAutodidacte - Membre expérimenté https://www.developpez.com
le 07/09/2016 à 22:50
Bonsoir,

Je ne suis pas un pro de la programmation, mais je considère plutot VBA comme un outil utilisable dans le monde professionnel qui permet de répondre à un tas de problématiques dans divers secteurs mais sur le cours terme,
car les sociétés dont les besoins grandissent, devront à un moment donné, passer sur une vraie solution professionnel dédié (soit existante, soit développé avec un vrai language C, C++… etc)

Je rejoins la phrase de @unparia (Amicalement ):
il est toujours possible de raboter une planche à l'aide d'une perceuse que l'on a dotée d'un disque abrasif ou d'une ponceuse dotée d'un papier abrasif. Un professionnel ne s'y égarera pas et utilisera l'outil adéquat pour ce faire. Il n'utilisera toutefois pas non plus ce dernier outil pour poncer, mais alors une ponceuse.
Avatar de matmoul matmoul - Nouveau Candidat au Club https://www.developpez.com
le 07/09/2016 à 23:05
Cela me rappel mes débuts sur Windows 3.0...
Après avoir découvert le basic sur commodore 64 puis le gwbasic sur DOS...
Arrivé sur Windows 3.0, c'était frustrant de n'avoir aucun langage à disposition...
Puis je découvris le VBA dans Excel et là, je pouvais coder de manière sommaire mais graphique...
Puis arriva VB1 avec son interface SDI qui me séduit de suite...
Je me rappel encore quand j'ai reçu ma boîte VB1 avec ses disquettes et surtout ses bouquins qui représentait un SDK à une époque ou internet n’existait pas.
J'étais encore adolescent et devais partir en vacances avec mes parents. J'ai passé deux semaines à lire ces bouquins en trépignant pour rentrer afin d'installer mon VB et créer mon premier exécutable Windows...
Malheureusement cela m'enferma pendant de longues années dans un langage restrictif et utilisable que sur Windows.
Mais que de souvenirs...
Avatar de Thorna Thorna - Membre éclairé https://www.developpez.com
le 08/09/2016 à 8:16
Citation Envoyé par Omote Voir le message
Qu'est-ce qu'un langage professionnel? Au même titre qu'un AutoIT ou bien un AutoHotkey c'est l'usage que l'on en fait qui le professionnalise.[...]
Après est-ce que c'est un bon langage? Personnellement, je trouve cela horrible[...]
Entièrement d'accord avec toute cette réponse (c'est parce que j'ai une moitié québécoise ? )
C'est l'utilisation qui le rend professionnel ou non, et encore cette qualification n'a aucun sens. Quel est le problème ?
- c'est du "basic" : il n'y a qu'à jeter un coup d'oeil sur l'indice Tiobe qui parait ici de temps en temps, qu'on pense qu'il reflète ou non la réalité, et de vérifier la place de VB6 ou VB.NET pour se rendre compte que ce n'est pas un défaut.
- c'est un langage "horrible" : oui, et alors ? On ne fait presque plus que du javascript et du php dans le web et ce sont des langages horribles, ça n'empêche pas qu'ils sont plus ou moins obligatoires pour se lancer dans la carrière web de nos jours. Et on fait bien encore du PERL et du FORTRAN, non ?
Offres d'emploi IT
Développeur android senior
INTEAM - Ile de France - Paris (75000)
Ingénieur développement logiciel composants biométriques H/F
Safran - Ile de France - Osny (95520)
Développeur php-magento h/f
altima - Rhône Alpes - Lyon (69000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil