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

35PARTAGES

10  0 
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

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Pierre Fauconnier
Responsable Office & Excel https://www.developpez.com
Le 08/09/2016 à 11:57
Sujet à troll, évidemment...

Qu'est-ce qu'un langage professionnel? J'attends toujours la réponse, et celles que vous pourrez me donner ne me conviendront probablement pas. Cela fait des années que je gagne ma vie en développant des applications professionnelles avec VBA sur Excel et Access. J'affirme qu'elles sont professionnelles car elles répondent aux besoins de mes clients, sont évolutives, et me permettent de payer mon loyer.

Ce n'est pas le langage qui est professionnel, c'est la façon de coder qui l'est ou pas.

J'ai plusieurs fichiers Excel avec pas mal de modules, développés en trois tiers, qui ne buguent pas (ou plus), qui sont liés à de l'Access et ou du SQL Server, qui permettent une consolidation de données et la livraison de tableaux de bord sympas, qui attendent toujours une solution "pro" pour être remisés au placard (et qui attendront encore longtemps...).

On bourre le crâne des IT Managers avec des trucs du genre "VBA c'est mal, Access c'est de la merde, ..." mais un de mes clients a une solution VBA fournie par mes soins qui tourne et qui a été livrée bien avant que le service IT ait pu préciser ce qu'il lui fallait comme cahier des charges mais qui avait répondu que "de toute manière, on est overbookés, ton truc, ça attendra l'année prochaine et ça coûtera bonbon"...

J'ai lu également dans les réponses qu'il était préférable de se tourner vers C# pour développer sous Excel... Oui, pourquoi pas, mais il faut penser que l'outil C# développé, il faudra le déployer (souvent avec droits d'admin sur le poste), ce que ne permet pas toujours le service IT (et ce qu'il n'a pas toujours le temps ou la volonté de faire). VBA, c'est inclus dans les installations Office et il n'y a souvent pas besoin de demander la permission pour développer en VBA.

Alors, pour répondre de façon biaisée à la question trollesque du jour: Langage pro? Je ne sais pas ce que c'est , mais oui, on peut faire du développement professionnel, durable, évolutif avec VBA, souvent à moindre coût et souvent plus rapidement que des trucs en C# et autres.

Et pour ceux qui voudraient se lancer, il y a du boulot et de la demande.
18  0 
Avatar de unparia
Expert éminent sénior 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.
16  3 
Avatar de Omote
Membre averti 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.
11  0 
Avatar de Menhir
Expert éminent sénior https://www.developpez.com
Le 08/09/2016 à 12:00
Dans le cadre de ma profession je crée (parfois) des applications avec VBA.
Donc, par définition, j'utilise VBA comme un langage professionnel.

Sinon, il faudra expliquer ce qu'est un professionnel.
Il faudra aussi expliquer ce qu'est un informaticien. Il y a 50 ans, un opérateur de données était considéré comme informaticien. Aujourd'hui, une personne qui développe des programmes n'est pas forcément considéré comme un informaticien. Plus l'informatique évolue, plus l'application de cette étiquette devient floue.

Mais je ne comprends pas vraiment l'intérêt de la question, à part le plaisir de se faire des nœuds au cerveau et d'accentuer les clivages élitistes.
10  0 
Avatar de Marc-L
Expert éminent sénior https://www.developpez.com
Le 08/09/2016 à 13:01
J'ai l'impression de revenir dix ans en arrière, voir même vingt !

Office se vend dans le rayon des jeux vidéos ?
Non évidemment pas plus que dans le rayon des applications familiales de la FNAC …
De par la nature d'Office, VBA est un langage professionnel, la question ne se pose même pas !

Avec la prolifération des dotations d'ordinateurs portables au sein des entreprises,
sans compter la promotion de la rentrée destinée aux étudiants,
Office s'est immiscé au fil des années dans les foyers, certains rapportant du boulot à la maison,
d'autres pour effectuer leur rapport de stage, leur thèse de fin de cycle ou tout autre projet de leurs études …

Évidemment il est utilisé à des fins non professionnelles : publipostage de faire-part de mariage ou de naissance,
listes diverses, répartition entre amis des frais d'un pique-nique ou d'une colocation, affichage en temps réel
d'une course de véhicules dans un club de radio-modélisme, émulation de l'écran LCD d'un chargeur de batteries
pour éviter aux débutants de flinguer leurs accus, gestion des comptes personnels, … … …
Ce qui n'empêche pas ces applications d'être développées comme des professionnelles !

A force d'être dénigré par certains développeurs des langages dit supérieurs ou reconnus comme "professionnels",
il a été mis dans l'esprit du grand public que le VBA n'était guère pro et facilement accessible et,
avec l'avènement des forums de programmation, nombre de demandes sont apparues du genre
« pour mon boulot j'ai besoin de ceci, pour vous c'est rien et facile » …
Et oui, pour leur travail, donc c'est bien une histoire de contexte.

Évidemment parfois il y a des demandes incongrues dans des forums où l'on répond
« mais quel est le rapport avec Office ? »

Peu importe s'il y a des branques en interne pourtant développeurs de langages reconnus comme pro
qui pourraient leur fournir une solution plus adaptée et performante qu'une pauvre application en VBA
mais bon, cela a un coût et puis vis à vis des collègues développeurs, cela la fout mal de se mettre
au niveau d'un utilisateur d'Office ! Ou encore un manque d'investissement de l'entreprise pour un sujet
considéré comme accessoire ou faudrait-il ne pas oublier la majorité des petites PME et artisans
ayant déjà investi dans des licences Office et à leur niveau ayant coûté un bras sans compter le temps
perdu à se former ou à parcourir comme des chiens errants les divers forums en quête d'un miracle !

Bref, beaucoup professionnellement n'ont pas le choix car ils n'ont sous le coude que le VBA
ou c'est souvent le seul outil qui leur parait accessible …

J'ai rencontré dans diverses entreprises ou vécues par des connaissances dans la leur
le cas de l'anecdote de theMonz31 et j'en ai des dizaines d'autres !

Souvent VBA est une solution provisoire pour surseoir à l'incompétence de certains
(le nombre d'extraction pourries d'ERP ou de bases de données alors que c'est pourtant possible)
ou à l'incapacité de répondre dans un délai court à un problème donné
mais devenue pérenne car c'est vrai cela n'a rien coûté et donne satisfaction
et passer à une solution dite professionnelle va demander du temps et coûter une blinde !

Il y a 30 ans en France les services informatiques dénigraient le PC, inutile car ils géraient
l'Informatique, celle avec un I majuscule, celle des gros et mini systèmes.
Sauf que la puissance augmentant et la souplesse aidant,
au fil des ans ils ont bien dû plier ou prendre leur retraite !

Pour le VBA c'est pareil : il y a dix ans il y avait déjà des rumeurs quant à sa disparition vu son inutilité
mais tant qu'il existera, même dans un contexte professionnel, il sera encore utilisé.

De professionnel il n'y a que la qualité du code, et ce, quel que soit le langage …
10  0 
Avatar de patricktoulon
Débutant https://www.developpez.com
Le 08/09/2016 à 23:43
Bonsoir a tous

perso j'ai développé mon app avec exel VBA

éditeur de commande
mailing
facturier
devis
bilan mensuel/trimestriel
TVA
calendrier
planning pour mes employés
et j'en passe

le tout dans un même classeur!!!!!
je m'en sert depuis 2009 que j'ai ouvert
de temps en tant je met a jour ou au propre quand je trouve le moyen de coder plus proprement
on est en 2016 et toujours pas planté
alors bien sur une entreprise ayant 200 employés se tournera peut être sur un développement plus conséquent

mais pour une petite boite comme la mienne c'est parfait !!
oserais-je vous parler de l'application que j'ai payé!!!!!! et qui a été développé pour moi (2300€) et !!!restez assis!!!!! n'a jamais fonctionné correctement a un tel point que j'ai stoppé le développeur qui passait 3 fois par semaine a l'atelier pour déboguer

alors le nez dans la panade j'ai mis les mains dans le cambouis et en tant qu'amateur c'est ca qui est drôle j'ai fait mon app pro

c'est meme devenu pour moi une passion et un dé-stressant

alors pro/pas pro faudrait déjà savoir ce que ca veux dire et dans quel contexte

ca c'est mon opinion
a+
10  0 
Avatar de sacapuces
Nouveau membre du Club https://www.developpez.com
Le 09/09/2016 à 18:44
Vous n'avez peut être pas remarqué, mais tous les langages possèdes les mêmes instructions et les mêmes architectures.
Tant qu(il y aura des "if", des "case" , de "for", des "while"... etc etc j'en passe et des meilleures
cela s"appellera toujours un langage de programmation.

On peut faire des merveilles en Basic
On peut faire le pire en "C++"

Le reste est une affaire de programmation de débrouille, et de neurones.

Sacapuces : Vieux programmeur qui a connu les cartes perforées, les araignées écrasées dans les bandes magnétiques, et les HDD de 250 Ko
(si si..vous avez bien lus)
10  0 
Avatar de Pierre Fauconnier
Responsable Office & Excel https://www.developpez.com
Le 08/09/2016 à 13:21
Citation Envoyé par Marc-L Voir le message

[...]
Souvent VBA est une solution provisoire pour surseoir à l'incompétence de certains
(le nombre d'extraction pourries d'ERP ou de bases de données alors que c'est pourtant possible)
[...]
Tellement vrai! Je ne compte plus les fichiers Excel dans lesquels j'ai dû écrire des routines de nettoyage parce que les "gros bras" (payés deux fois mon salaire journalier) n'étaient pas fichus de sortir des tables à plat d'un des ERP les plus répandus (ça commence par S, ça finit par P et c'est en trois lettres avec un A au milieu).

Si ces "professionnels" faisaient correctement leur boulot, il suffirait de mettre un TCD en place sans aucune ligne de code pour permettre toutes sortes d'analyses.

Alors, qui est professionnel et qui ne l'est pas?
9  0 
Avatar de joe.levrai
Expert éminent https://www.developpez.com
Le 09/09/2016 à 21:06
Bonjour à tous,

je poste également mon avis ... ou plutôt mon absence d'avis tranché.

A vrai dire, ça va plutôt ressembler à une tranche de vie.

Je ne suis pas informaticien. Pour des raisons pratiques, je me suis mis au VBA afin d'automatiser des petites virgules sur des fichiers excel. Le but était de sortir rapidement des chiffres. Bref, un basique.

Et puis, le temps faisant, j'ai petit à petit complexifié les traitements, établi des formulaires pour que mes équipes puissent renseigner leur activité.

Un jour, ma société (une PME de taille moyenne-grosse) m'a proposé d'user de ces connaissances pour développer des applications complexes, gérer des quantités de données impressionnantes, de sources diverses (SAP - Oracle - SteamServe - SharePoint - Outlook - autres divers et variés)

Je n'avais qu'une contrainte : tout devait être 100% Excel, impossible d'utiliser Access ou d'investir dans des logiciel ou missionner des prestataires pour développer des solutions plus adéquates.

3 ans ont passés, mes applications sont toujours là, elles évoluent, donnent naissance à des enfants, s'enrichissent de colatéraux. Parfois même se voient adoptées par des parents pour les piloter.

Aujourd'hui, ce sont des 100aines d'utilitaires, des base de données (relationnelles ou non) hébergées dans des fichiers Excel, des workflow développés dans Outlook, avec remontée des données (volumétrie, horodatage, cohérence, dispatch etc...) vers Excel. Bien sûr, des reportings partant de Excel et adressés via Outlook, des automation sur des logiciels tiers, j'en passe et des meilleurs ... Des connexions sur des SharePoint (avec parfois manipulation des WebServices).

Bien entendu, tout est écrit dans Excel, avec liaison tardive pour les bibliothèques externes
Et j'ai bien conscience que beaucoup qui me liront, arrivés à ce stade du message, auront les cheveux hérissés sur la tête (s'il leur en reste !)
Je répondrai uniquement : ça marche, ça évolue, et malgré les volumes de données et d'interactions ça répond au doigt et à l'œil (au prix de pas mal d'hectolitres de café, je l'avoue ... et de la motivation).

Pourquoi vous raconter tout ça ?

Tout simplement pour dire que tout le monde a un peu raison et tort sur ce sujet dans le fond.
Je pense que la question n'est tout simplement pas la bonne.

Elle devrait plutôt être : A partir de quand VBA devient une solution déraisonnable ?
Voici ma réponse, ou plutôt mes trois réponses possibles :

- quand les besoins dépassent la capacité des développeurs à les solutionner
OU
- que les solutions apportées représentent une économie trop faible au regard d'une solution passant par d'autres outils/langages
OU
- que les besoins ne sont pas standardisables (et nécessiteraient de nombreuses réécriture au fur et à mesure)

VBA offre des avantages non négligeables, notamment :

- facilité d'apprentissage (j'ai appris seul à coup de nuit blanche et de lecture du forum)
- communauté et documentation importante sur le net en cas de souci
- possibilité (c'est un bien et un mal) de détourner complètement l'usage d'une application pour la retailler (Ils ont été assez supris mes auditeurs Microsoft quand je leur ai dévoilé notre organisation Outlook, qui est devenue une application métier totalement customisée et branchée sur un millier de boite mails partagées). Bien sûr, il ne faut pas faire la fine bouche et accepter deux faits : la solution ne sera pas la plus rapide ET devra nécessairement passer par une réflexion d'algorithmique beaucoup plus poussée
- capacité des procédure à manipuler d'autres langages

Egalement des inconvénients, comme celui du "A" de VBA
Mais dans ce cas là, il reste le Vb, Vbs, VB.NET etc....?

Ma conclusion sera semblable à beaucoup d'autres. A ceci près que je suis plutôt à ranger dans la catégorie des "amateurs qui ont probablement des choses à apprendre à certains se déclarant des pro".

Ce n'est pas le langage qui est le moteur de la réponse, ni même les compétences de celui qui développe.
C'est la fonction qui fait l'organe.
J'irai même jusqu'à dire que la qualité du code importe peu. Que ce soit codé de façon optimale ou totalement hors de toute logique ....

Ce qui compte c'est de se demander si le projet développé est :

- nécessaire (histoire de ne pas créer des fonctions personnalisées qui font des SOMME() simples)
- possible dans le langage souhaité (histoire de ne pas chercher à faire un clavier de piano sur Excel ... encore que .... )
- conforme aux attentes de celui qui a commandé "la chose"
- réversible, convertible, évolutif
9  0 
Avatar de Simplifi
Membre expérimenté https://www.developpez.com
Le 26/10/2016 à 12:11
Bonjour à tous,
pour moi le langage n'est que l'expression de la pensée du programmeur. Si la pensée est claire et affinée, quasiment n'importe quel langage conviendra, même VBA! Par contre aucun langage ne comblera les erreurs d'analyse. Je dirais même qu'un langage permettant des notions tortueuses n'obligera pas l'utilisateur à simplifier sa pensée, ce qui est absolument indispensable, ne serait-ce que pour la maintenabilité.
9  0 
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web