je me suis créé ma propre librairie QRCodeGenerator.dll

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dysorthographie

XLDnaute Barbatruc
Bonjour,
je me suis créé ma propre librairie QRCodeGenerator.dll

en pièce jointe QRCodeGenerator.ZIP qui contient:
attachment.php


Voici une documentation complète pour utiliser la DLL QRCodeGenerator.dll dans VBA, incluant l’enregistrement de la DLL, l’activation dans VBA, et un exemple de code adapté à votre contexte.

1. Enregistrement de la DLL

Pour utiliser QRCodeGenerator.dll dans VBA, vous devez d’abord l’enregistrer avec regasm (outil fourni avec le SDK .NET).
Étapes :

  1. Ouvrir l’invite de commandes en tant qu’administrateur
  2. Naviguer vers le répertoire contenant QRCodeGenerator.dll
  3. Exécuter la commande suivante (remplacez le chemin par le vôtre) : cmd



    C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "C:\Chemin\Complet\Vers\QRCodeGenerator.dll" /tlb:QRCodeGenerator.tlb /codebase



    • /tlb génère le fichier .tlb nécessaire pour VBA.
    • /codebase enregistre le chemin absolu de la DLL.


2. Activation de la bibliothèque dans VBA


  1. Ouvrir l’éditeur VBA (Alt + F11 dans Excel, Word, etc.)
  2. Aller dans Outils > Références
    • Si elle n’apparaît pas, cliquez sur Parcourir et sélectionnez le fichier QRCodeGenerator.tlb généré précédemment.

3. Exemple de code VBA pour générer un QR Code

Voici un exemple adapté à votre code source, pour un formulaire VBA (UserForm) contenant :

  • Un bouton btnGenerer
  • Une zone de texte txtQRData (pour le contenu du QR Code)
  • Un contrôle Image nommé QrCode (pour afficher le QR Code)
Code:
[I]Private Sub btnGenerer_Click()
Dim qrGenerator As QRCodeGenerator.QRCodeGenerator
Set qrGenerator = New QRCodeGenerator.QRCodeGenerator

' Redimensionner l'image pour remplir le contrôle
Me.QrCode.PictureSizeMode = fmPictureSizeModeStretch

' Effacer l'image précédente
Set Me.QrCode.Picture = Nothing

' Générer et afficher le QR Code si du texte est saisi
If Trim(Me.txtQRData.Value) <> "" Then
Set Me.QrCode.Picture = qrGenerator.GenerateQRCodeIPic(Me.txtQRData.Value)
Else
MsgBox "Veuillez entrer du texte pour générer le QR Code.", vbExclamation
End If

' Libérer la mémoire
Set qrGenerator = Nothing
End Sub[/I]



Annexe:
'===============================================================================
' MANUEL UTILISATEUR — QRCodeLib
' DLL COM pour la génération de QR codes
' Usage : VBA / Excel
'===============================================================================

'-------------------------------------------------------------------------------
' 1. INSTALLATION
'-------------------------------------------------------------------------------
' 1. Compiler la DLL en mode Release (x86 pour Excel 32-bit, x64 pour 64-bit)
' 2. Exécuter en administrateur :
' RegAsm.exe QRCodeLib.dll /tlb /codebase
' 3. Dans VBA : Outils > Références > cocher "QRCodeLib"

'-------------------------------------------------------------------------------
' 2. DÉCLARATION
'-------------------------------------------------------------------------------
' Liaison tardive (sans référence) :
Dim gen As Object
Set gen = CreateObject("QRCodeLib.QRCodeGenerator")

' Liaison anticipée (avec référence cochée) :
Dim gen As New QRCodeLib.QRCodeGenerator

'-------------------------------------------------------------------------------
' 3. MÉTHODES DISPONIBLES
'-------------------------------------------------------------------------------

'--- GenerateQRCodeIPic --------------------------------------------------------
' Retourne un IPictureDisp assignable à .Picture d'un contrôle Image ActiveX
'
' Paramètres :
' content (String) — texte à encoder (URL, texte libre, email, tel...)
' sizePixels (Integer) — taille en pixels, défaut 300
' margin (Integer) — marge en modules, défaut 1
' errorLevel (Integer) — niveau de correction d'erreur :
' 0 = L (7%)
' 1 = M (15%) ← défaut
' 2 = Q (25%)
' 3 = H (30%)

'--- GenerateQRCodeBytes -------------------------------------------------------
' Retourne un tableau d'octets PNG (Byte())
' Utile pour sauvegarder dans un fichier ou traiter manuellement

'-------------------------------------------------------------------------------
' 4. EXEMPLES
'-------------------------------------------------------------------------------

'--- Exemple 1 : insérer un QR code dans un contrôle Image ActiveX ------------
Sub ExempleImage()
Dim gen As Object
Set gen = CreateObject("QRCodeLib.QRCodeGenerator")

' Le contrôle "Image1" doit être un contrôle ActiveX Forms.Image
' Insertion : Développeur > Insérer > Contrôles ActiveX > Image
set ActiveSheet.OLEObjects("Image1").Object.Picture = _
gen.GenerateQRCodeIPic("https://www.example.com", 300, 1, 1)

Set gen = Nothing
End Sub

'--- Exemple 2 : QR code avec niveau de correction élevé ----------------------
Sub ExempleNiveauH()
Dim gen As Object
Set gen = CreateObject("QRCodeLib.QRCodeGenerator")

set ActiveSheet.OLEObjects("Image1").Object.Picture = _
gen.GenerateQRCodeIPic("https://www.example.com", 400, 4, 3)

Set gen = Nothing
End Sub

'--- Exemple 3 : sauvegarder le QR code en fichier PNG ------------------------
Sub ExempleSauvegarde()
Dim gen As Object
Set gen = CreateObject("QRCodeLib.QRCodeGenerator")

Dim bytes() As Byte
bytes = gen.GenerateQRCodeBytes("https://www.example.com", 300, 1, 1)

Dim chemin As String
chemin = "C:\Temp\qrcode.png"

Dim fileNum As Integer
fileNum = FreeFile()
Open chemin For Binary As #fileNum
Put #fileNum, , bytes
Close #fileNum

MsgBox "QR code sauvegardé : " & chemin
Set gen = Nothing
End Sub

'--- Exemple 4 : générer depuis la valeur d'une cellule -----------------------
Sub ExempleDepuisCellule()
Dim gen As Object
Set gen = CreateObject("QRCodeLib.QRCodeGenerator")

Dim contenu As String
contenu = ThisWorkbook.Sheets("Feuil1").Range("A1").Value

set ActiveSheet.OLEObjects("Image1").Object.Picture = _
gen.GenerateQRCodeIPic(contenu, 300, 1, 1)

Set gen = Nothing
End Sub

'--- Exemple 5 : boucle sur une plage de cellules -----------------------------
Sub ExempleBoucle()
Dim gen As Object
Set gen = CreateObject("QRCodeLib.QRCodeGenerator")

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Feuil1")

Dim i As Integer
For i = 1 To 10
Dim contenu As String
contenu = ws.Cells(i, 1).Value

If contenu <> "" Then
' Sauvegarde chaque QR code en fichier PNG numéroté
Dim bytes() As Byte
bytes = gen.GenerateQRCodeBytes(contenu, 200, 1, 1)

Dim chemin As String
chemin = "C:\Temp\qrcode_" & i & ".png"

Dim fileNum As Integer
fileNum = FreeFile()
Open chemin For Binary As #fileNum
Put #fileNum, , bytes
Close #fileNum
End If
Next i

Set gen = Nothing
MsgBox "Génération terminée."
End Sub

'-------------------------------------------------------------------------------
' 5. TABLEAU DES PARAMÈTRES
'-------------------------------------------------------------------------------
'
' Paramètre | Type | Défaut | Valeurs possibles
' -------------|---------|--------|------------------------------------------
' content | String | — | Toute chaîne UTF-8
' sizePixels | Integer | 300 | 100, 200, 300, 400, 500...
' margin | Integer | 1 | 0 (aucune) à 4 (norme recommandée)
' errorLevel | Integer | 1 | 0=L, 1=M, 2=Q, 3=H
'
'-------------------------------------------------------------------------------
' 6. NOTES
'-------------------------------------------------------------------------------
' - Le contrôle Image dans Excel doit être un contrôle ActiveX (Forms.Image.1)
' et non une image insérée via Insertion > Images.
' - Plus sizePixels est grand, meilleure est la lisibilité à l'impression.
' - Privilégier errorLevel=3 (H) si le QR code risque d'être partiellement
' masqué (logo superposé, impression dégradée).
' - La DLL ne crée aucun fichier temporaire — tout est traité en mémoire.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

K
Réponses
5
Affichages
2 K
K
Retour