Vos applications Visual Basic 6, migrées vers le web
Des programmes Visual Basic 6 gèrent encore les commandes, la production, les rendez-vous ou la comptabilité de nombreuses entreprises, plus de vingt-cinq ans après la sortie de la dernière version. Nous les migrons vers des applications web écrites en C#, en conservant les données et les règles métier, avec ou sans le code source d'origine.
Pourquoi maintenant
Microsoft a cessé de prendre en charge l'environnement de développement Visual Basic 6 le 08/04/2008. Le runtime est toujours fourni avec Windows et pris en charge pendant toute la durée de vie des versions de Windows qui l'incluent, dont Windows 11, mais uniquement comme composant 32 bits et seulement pour les régressions graves et les problèmes de sécurité critiques. Les contrôles qui ne font pas partie de Windows, comme MSCOMCTL.OCX, MSFLXGRD.OCX et la quasi-totalité des OCX tiers, doivent être installés avec l'application et ne sont pas couverts par Microsoft.
En pratique, la difficulté tient aux personnes et aux outils. Microsoft ne prend pas en charge l'IDE sur Windows 64 bits, les développeurs qui connaissent VB6 sont chaque année moins nombreux, et chaque nouveau poste implique une installation avec des composants enregistrés à la main.
- Environnement de développement Visual Basic 6Fin du support Microsoft
- Windows 10Fin du support Microsoft
Ce que nous migrons
L'ensemble du programme, y compris ce dont il dépend en dehors de son propre code.
Formulaires et contrôles
Fenêtres avec zones de texte, listes déroulantes, grilles, onglets et groupes de contrôles, y compris MSFlexGrid, ListView et TreeView. Elles deviennent des pages web qui conservent la disposition à laquelle les utilisateurs sont habitués.
Logique dans les modules et les classes
Calculs, contrôles et traitements répartis entre fichiers .bas et .cls et événements des formulaires. Nous les regroupons dans des services côté serveur couverts par des tests.
Accès aux données
Code DAO, RDO et ADO travaillant sur Access, SQL Server, Oracle ou d'autres bases, y compris le SQL construit par concaténation de chaînes. Les données passent sur SQL Server ou MySQL, ou restent en place si d'autres systèmes en dépendent.
États et impressions
Crystal Reports, DataReport et impressions dessinées ligne par ligne avec l'objet
Printer. Chacun devient un document PDF au contenu identique.Composants COM et DLL
DLL ActiveX développées en interne, composants tiers et appels à l'API Windows via
Declare. Nous identifions chacun d'eux et décidons s'il est remplacé, réécrit ou devenu inutile.Fichiers, paramètres et périphériques
Configuration dans des fichiers INI ou dans le registre, imports de fichiers texte, connexion à des balances, imprimantes d'étiquettes ou appareils série via MSComm. Nous vérifions lesquels nécessitent encore un composant installé en local.
À quoi ressemble la version web
- Tableau de bord
- Agenda
- Patients
- Soins
- États
| Heure | Dr Valdrin | Dr Sato | Hygiéniste |
|---|---|---|---|
| 08:30 | L. Moreau - Contrôle | A. Bianchi - Détartrage | |
| 09:00 | K. Novak - Soin carie | ||
| 09:30 | S. Haddad - Couronne | J. Lindqvist - Détartrage | |
| 10:00 | P. Ortega - Dévitalisation | ||
| 10:30 | E. Kowalski - Contrôle | ||
| 11:00 | N. Ferri - Extraction | R. Dimitrov - Détartrage | |
| 11:30 | T. Brennan - Soin carie | ||
| 12:00 | C. Duval - Contrôle | H. Ito - Détartrage |
Un agenda de rendez-vous tel qu'il pourrait se présenter dans un programme VB6 à l'accueil, puis la même semaine dans le navigateur.
Faites glisser la poignée, ou utilisez les flèches du clavier.
Ce que devient chaque élément
- Dans VB6: Formulaires (.frm) et leurs événements
- Dans l'application web: Pages web, avec la logique sur le serveur
- Dans VB6: Modules (.bas) et classes (.cls)
- Dans l'application web: Services C# couverts par des tests automatisés
- Dans VB6: Contrôles OCX enregistrés sur chaque poste
- Dans l'application web: Composants web standard, rien à installer
- Dans VB6: Recordsets ADO ou DAO
- Dans l'application web: Requêtes paramétrées sur SQL Server ou MySQL
- Dans VB6: Crystal Reports ou DataReport
- Dans l'application web: Documents PDF produits par le serveur
- Dans VB6: Un programme d'installation par poste
- Dans l'application web: Une adresse, ouverte dans le navigateur
Comment se déroule la migration
Analyse sous 48 heures
Vous nous envoyez le programme installé et sa base de données, ainsi que le code source (.vbp, .frm, .bas, .cls) si vous l'avez. Sous 48 heures, nous vous répondons par un rapport écrit : ce que fait le programme aujourd'hui, où se situent les risques, comment s'organiserait la version web, un prix ferme pour un module pilote et une estimation pour le reste. L'analyse est gratuite et ne vous engage à rien.
Module pilote
Nous réalisons une partie de l'application sur une copie de vos données réelles, en général celle que vos équipes utilisent le plus. Elles s'en servent au quotidien avant que vous décidiez de la suite.
Tests automatisés ancien contre nouveau
Nous enregistrons ce que produit le programme VB6 sur un ensemble de cas réels, comme des prix, des totaux et des documents générés, et vérifions la nouvelle application par rapport à ces résultats. Chaque règle identifiée fait l'objet d'un test automatisé qui fournit les mêmes entrées à l'ancien programme et à la nouvelle application, puis vérifie que les résultats concordent. Vous recevez les résultats des tests.
30 jours en parallèle
Une fois l'application complète livrée, le programme VB6 reste en service à ses côtés pendant 30 jours. Toute différence apparaît tant que l'ancien programme est encore là, et nous la corrigeons dans le cadre du prix convenu.
Les pièges habituels, et comment nous les traitons
Dépendances OCX et ActiveX
Beaucoup de programmes VB6 reposent sur des contrôles non fournis avec Windows, parfois d'éditeurs qui n'existent plus, et Microsoft classe des fichiers comme
GRID32.OCXetTHREED32.OCXparmi les fichiers non pris en charge. L'analyse liste chaque dépendance, son rôle dans le programme et ce qui la remplace.Variant, propriétés par défaut et conversions implicites
VB6 convertit sans rien dire entre chaînes, nombres et dates, et une ligne comme
Text1 = rs!Totalrepose sur des propriétés par défaut. Une traduction littérale en C# ou en VB.NET se comporte autrement dans les cas limites, par exemple avec des champs vides ou des dates dans un autre format régional. Nous réécrivons ces endroits délibérément et les couvrons par des tests.On Error Resume NextFréquente dans le code VB6, cette instruction masque les erreurs et laisse le programme continuer avec des données à moitié écrites. Quand nous la trouvons, nous cherchons ce que l'auteur voulait éviter et traitons ce cas explicitement. Sinon, la nouvelle application s'arrêterait sur une erreur ou répéterait les mêmes fautes silencieuses.
Integer16 bits et arrondisEn VB6, un
Integers'arrête à 32 767, ce qui explique bien des erreurs de dépassement quand une table grossit. Le typeCurrencygarde quatre décimales, etRoundapplique l'arrondi au pair. Nous reproduisons l'arrondi attendu par le métier et signalons les cas où l'ancien programme se trompait.SQL construit par concaténation
Les requêtes assemblées avec
&à partir de ce que l'utilisateur a saisi sont exposées à l'injection SQL et échouent sur les noms qui contiennent une apostrophe. Dans la nouvelle application, chaque requête utilise des paramètres.Code source absent ou obsolète
Il arrive que le code source soit perdu, ou que la copie conservée ne corresponde pas au programme utilisé. Un programme VB6 compilé ne permet pas de retrouver un code source fiable : nous travaillons donc à partir du programme en service, de sa base et de ses écrans, et l'analyse indique clairement les parties qui comportent plus d'incertitude.
Prix et paiement
Analyse
Gratuite
écrite, sous 48 heures
Module pilote
1 000–1 500 €
en général, réglé 50 % au démarrage et 50 % à la validation
L'analyse est gratuite. Si vous décidez de ne pas donner suite, vous gardez le rapport et ne devez rien.
Les prix sont fermes et convenus par écrit avant le démarrage. Si le périmètre change, nous vous envoyons un nouveau devis écrit et attendons votre accord avant de réaliser le travail supplémentaire.
Pour une migration complète, nous visons un prix inférieur de 40 à 60 % au devis habituel d'une agence. C'est possible parce que nous sommes un petit studio, sans locaux à payer ni équipe commerciale.
Prix hors TVA.
Une vraie migration, vérifiée par des tests
Northwind est la base d'exemple que Microsoft fournissait avec Access, pas l'un de nos clients. Nous en avons migré une copie publique vers SQLite et PostgreSQL, comparé chaque table et chaque requête à l'original par des tests automatisés, et construit une application web qui fonctionne sur le résultat. L'étude de cas donne les chiffres, le rapport d'équivalence détaille chaque contrôle.
Northwind est une base Access, mais nous suivons la même méthode pour Visual Basic 6 : migrer, tester face à l'original, faire tourner les deux en parallèle.
Rapport d'équivalence (en anglais) · Aperçu cliquable et analyse d'exemple (démo)

Questions fréquentes
Nous n'avons pas le code source. Pouvez-vous quand même migrer le programme ?
Souvent, oui. Nous travaillons à partir du programme en service, de sa base de données et de captures ou d'enregistrements de son utilisation. L'analyse précise ce que nous pouvons reproduire avec certitude et ce qui nécessite des informations de votre part.
Pourquoi ne pas convertir automatiquement le code en VB.NET ou en C# ?
Les outils de conversion produisent du code qui compile, mais qui garde la structure d'une application de bureau, dépend souvent de bibliothèques de compatibilité et reconduit les anciens défauts. Pour une application web, nous reconstruisons les écrans et déplaçons la logique, en nous servant du code VB6 comme spécification de ce que fait le programme.
Notre programme VB6 va-t-il cesser de fonctionner sous Windows 11 ?
Pas de lui-même : Microsoft prend en charge le runtime VB6 sous Windows 11. Ce qui lâche, c'est plutôt tout ce qui l'entoure : fichiers OCX non enregistrés, programmes d'installation perdus, anciens pilotes de base de données, et l'IDE, que Microsoft ne prend pas en charge sur Windows 64 bits.
Notre programme communique avec une balance ou une imprimante d'étiquettes. Une application web peut-elle le faire ?
En général, oui, mais c'est la partie qui peut nécessiter un petit programme installé sur le poste relié à l'appareil. Nous le vérifions pendant l'analyse et l'incluons dans le prix.
Pouvons-nous migrer par étapes ?
Oui. Le module pilote est la première étape, et le reste peut suivre par lots. Quand c'est possible, le programme VB6 et l'application web partagent la même base pendant la transition.
Dans quel langage sera écrite la nouvelle application ?
En général en C# avec ASP.NET Core, que n'importe quel développeur .NET peut maintenir. PHP avec MySQL est une option si c'est ce que votre prestataire informatique maîtrise.
Nos autres services
- Microsoft Access vers application webTables, requêtes, formulaires, états et VBA repris dans une application web sur SQL Server ou MySQL.
- Excel VBA vers application webClasseurs avec macros, UserForms et feuilles liées transformés en application web multi-utilisateur.
- Migration d'applications DelphiProgrammes Delphi sur BDE, Paradox ou dBase repris dans une application web sur base SQL.
- Modernisation .NET (WinForms, WebForms)Applications WinForms et ASP.NET Web Forms portées vers ASP.NET Core, en gardant ce qui fonctionne.
- Logiciels sur mesure et intégrationsNouvelles applications métier, intégrations par API REST, migration de données et maintenance.
Contact
Par e‑mail :
riccardo@Envoyez-nous le programme et sa base de données, avec des données fictives si vous préférez, ou une courte description de ce qu'il fait. Nous vous répondons sous un jour ouvré.
Nous travaillons depuis l'Italie.