Erreur d'execution 424 : Objet requis / Création QR Code [Résolu]

Signaler
Messages postés
6
Date d'inscription
vendredi 18 décembre 2020
Statut
Membre
Dernière intervention
18 décembre 2020
-
Messages postés
6
Date d'inscription
vendredi 18 décembre 2020
Statut
Membre
Dernière intervention
18 décembre 2020
-
Bonjour,


Voila 4 jours que je tente de créer une macro pour générer un QRCode à partir d'une cellule dans mon fichier Excel. Seulement, quand je clic sur mon bouton "générer QRCode", Excel me renvoi au visual basic de ma macro et me met le message d'erreur suivant: Erreur d'éxecution '424' : Objet requis.

Je me suis inspiré de cette vidéo YT:
- https://www.youtube.com/watch?v=jZxbIwmdzIQ

Ainsi que des sites internet:
- http://goqr.me/api/
- http://goqr.me/api/doc/create-qr-code/#param_charsetsource

Si quelqu'un a une idée qui pourrait m'aider, je vous joint mon programme ci-dessous.


Sub GenererQRCode()

Dim QRPic As String, QRURL As String, QRDate As String, ForeCol As String, BackCol As String
Dim QRSize As Long

With sheet9

    On Error Resume Next
    .Shapes("QRChargmt").Delete
    On Error GoTo 0

    QRData = .Range("E22").Value 'Item Name (QR Data)
    QRSize = sheet12.Range("B5").Value 'Large QR Size

    ForeCol = Right("00000" & Hex(sheet12.Range("B4").Value), 6)
    ForeCol = Right(ForeCole, 2) & Mid(ForeCol, 3, 2) & Left(ForeCole, 2)
    BackCol = Right("00000" & Hex(sheet12.Range("B3").Value), 6)
    BackCol = Right(BackCole, 2) & Mid(BackCol, 3, 2) & Left(BackCole, 2)

    QRURL = "https://api.qrserver.com/v1/create-qr-code/?data=" & QRData & "&size=" & 
    QRSize & "x" & QRSize & _
    "&charset-source=UTF-8&charset-target-=UTF-8ECC=M&color=" & ForeCol & "&bgcolor=" & 
    BackColor & _
    "&margin=0&qzone=1&format=png"

    With sheet9.Pictures.Insert(QRURL)
        .Name = "QRChargmt"
        .Left = sheet9.Range("F22").Left + (sheet9.Range("F1").Width - .Width) / 2
        .Top = sheet9.Range("F22").Top + 5
    End With

End With


En attente de vous lire,
Crdlt
Paco_C

3 réponses

Messages postés
1411
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
18 décembre 2020
148
Bonjour Paco, bonjour le forum,

Sans y regarder plus en détail... Seule la variable ForeCol est déclarée mais tu utilises ForeCol et ForeCole dans le code ?!...
Messages postés
6
Date d'inscription
vendredi 18 décembre 2020
Statut
Membre
Dernière intervention
18 décembre 2020

Bonjour Thau,

En effet, je n'avais pas vue cette erreur. De même pour BackCol.
Après modification l'Excel me renvoi toujours la même erreur.

Merci pour l'observation
Crdlt
Messages postés
30873
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 janvier 2021
3 148
Bonjour,

Exécutes le code en mode Pas à pas et regarde sur quelle ligne il te génère l'erreur... ça devrait bien t'aider pour résoudre le souci
Messages postés
6
Date d'inscription
vendredi 18 décembre 2020
Statut
Membre
Dernière intervention
18 décembre 2020

Bonjour Jordane,

Merci pour l'info.
C'est au niveau de la ligne 12 : "QRData = .Range("E22").Value 'Item Name (QR Data)" que l'erreur apparait.
Ma cellule E22 est en réalité un plage de cellules que j'ai fusionné : E22:E26.

J'ai modifié la ligne de code :"QRData = .Range("E22:E26").Value 'Item Name (QR Data)", mais toujours la même erreur.

Crdlt
Messages postés
30873
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 janvier 2021
3 148 >
Messages postés
6
Date d'inscription
vendredi 18 décembre 2020
Statut
Membre
Dernière intervention
18 décembre 2020

Tu es sûr que l'erreur n'apparait sur la ligne d'après ?
Car bon, d'où viennent tes variables sheet9 et sheet12 ? On ne voit pas leur déclaration dans ton code...

Je pense qu'il serait utile que tu nous fournisse un exemple de ton fichier
(en le déposant sur cijoint.com par exemple puis en nous collant le lien ici )
https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
Messages postés
6
Date d'inscription
vendredi 18 décembre 2020
Statut
Membre
Dernière intervention
18 décembre 2020
>
Messages postés
30873
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 janvier 2021

https://www.cjoint.com/c/JLslAr13taS

Je rebondis sur ce que vous dites vis-à-vis de l'erreur, la ligne 12 ce surligne en jaune et c'est en rappuyant sur F8 que le PopUp apparait. C'est donc la ligne 13 qui contient l'erreur?

J'ai créer un nouveau fichier Excel en raison de la clause de confidentialité
J'ai donc modifié un peu le code (les numéro de feuilles):

Sub GénérerQRCode()

Dim QRPic As String, QRURL As String, QRDate As String, ForeCol As String, BackCol As String
Dim QRSize As Long

With sheet2
    On Error Resume Next
    .Shapes("QRBonChargmt").Delete
    On Error GoTo 0

    QRData = .Range("E22").Value 'Item Name (QR Data)
    QRSize = Sheet3.Range("B5").Value 'Large QR Size

    ForeCol = Right(Hex(Sheet3.Range("B4").Value, 6))
    ForeCol = Right(ForeCol, 2) & Mid(ForeCol, 3, 2) & Left(ForeCol, 2)
    BackCol = Right(Hex(Sheet3.Range("B3").Value, 6))
    BackCol = Right(BackCol, 2) & Mid(BackCol, 3, 2) & Left(BackCol, 2)

    QRURL = "https://api.qrserver.com/v1/create-qr-code/?data=" & QRData & _
    "&size=" & QRSize & "x" & QRSize & "&charset-source=UTF-8&charset-target-=UTF-9ecc=L&color=" _
    & ForeCol & "&bgcolor=" & BackColor & "&margin=0&azone=1&format=png"

    With sheet2.Pictures.Insert(QRURL)
        .Name = "QRBonChargmt"
        .Left = sheet2.Range("F22").Left + (sheet2.Range("F1").Width - .Width) / 2
        .Top = sheet2.Range("F22").Top + 5
    End With

End With

End Sub
Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 549 >
Messages postés
6
Date d'inscription
vendredi 18 décembre 2020
Statut
Membre
Dernière intervention
18 décembre 2020

Bonjour,

Sheet ne passant pas chez moi (Excel Français), je les ait tous remplacé par Feuil.
Si votre Excel est Anglais ne modifiez pas Sheet... Hein?

Sinon, les erreurs sont aux lignes 14 et 16.
Hex ne sert ici à rien, si vous lui passez comme paramètre des valeurs comme "#000000"...
De plus il y a une erreur dans vos parenthèses. Fonction Hex 1 seul argument, Right : 2 arguments.
Donc Right(Hex(arg), 6)
Donc remplacez :
    ForeCol = Right(Hex(Sheet3.Range("B4").Value, 6))
    ForeCol = Right(ForeCol, 2) & Mid(ForeCol, 3, 2) & Left(ForeCol, 2)
    BackCol = Right(Hex(Sheet3.Range("B3").Value, 6))
    BackCol = Right(BackCol, 2) & Mid(BackCol, 3, 2) & Left(BackCol, 2)

par :
    ForeCol = Right(Sheet3.Range("B4").Value, 6)
    ForeCol = Right(ForeCol, 2) & Mid(ForeCol, 3, 2) & Left(ForeCol, 2)
    BackCol = Right(Sheet3.Range("B3").Value, 6)
    BackCol = Right(BackCol, 2) & Mid(BackCol, 3, 2) & Left(BackCol, 2)

et ça fonctionne.

Attention aux erreurs de variable.
BackColor <> BackCol et QRData <> QRDate
Messages postés
6
Date d'inscription
vendredi 18 décembre 2020
Statut
Membre
Dernière intervention
18 décembre 2020

Bonjour Pijaku,

J'ai fais les mofications suivantes:
- ligne 3 : QRDate -> QRData
- ligne 14 et 16 comme indiqué
- ligne 21 : BackColor -> BackCol

Malheureusement j'ai toujours l'erreur d'exécution 424 qui apparait au niveau de la ligne 11 quand j'exécute le programme pas à pas.
Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 549
Dit précédemment :
Sheet ne passant pas chez moi (Excel Français), je les ait tous remplacé par Feuil.
Si votre Excel est Anglais ne modifiez pas Sheet... Hein?


Sous-entendu : si votre Excel est Français, remplacez Sheet par Feuil.....

Option Explicit

Sub GénérerQRCode()
Dim QRPic As String, QRURL As String, QRData As String, ForeCol As String, BackCol As String, QRSize As Long

    With Feuil2
        On Error Resume Next
        .Shapes("QRBonChargmt").Delete
        On Error GoTo 0
        QRData = .Range("E22").Value 'Item Name (QR Data)
        QRSize = Feuil3.Range("B5").Value 'Large QR Size
        ForeCol = Right(Feuil3.Range("B4").Value, 6)
        ForeCol = Right(ForeCol, 2) & Mid(ForeCol, 3, 2) & Left(ForeCol, 2)
        BackCol = Right(Feuil3.Range("B3").Value, 6)
        BackCol = Right(BackCol, 2) & Mid(BackCol, 3, 2) & Left(BackCol, 2)
        QRURL = "https://api.qrserver.com/v1/create-qr-code/?data=" & QRData & _
        "&size=" & QRSize & "x" & QRSize & "&charset-source=UTF-8&charset-target-=UTF-9ecc=L&color=" _
        & ForeCol & "&bgcolor=" & BackCol & "&margin=0&azone=1&format=png"
        With Feuil2.Pictures.Insert(QRURL)
            .Name = "QRBonChargmt"
            .Left = Feuil2.Range("F22").Left + (Feuil2.Range("F1").Width - .Width) / 2
            .Top = Feuil2.Range("F22").Top + 5
        End With
    End With
End Sub
Messages postés
6
Date d'inscription
vendredi 18 décembre 2020
Statut
Membre
Dernière intervention
18 décembre 2020
>
Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021

En effet, d'habitude je ne travail pas sur cet ordinateur (qui ducoup à Excel en français).
Bonne remarque.

Merci beaucoup et bonne fin de journée.