Erreur d'execution 424 : Objet requis / Création QR Code

Résolu/Fermé
Paco_C Messages postés 6 Date d'inscription vendredi 18 décembre 2020 Statut Membre Dernière intervention 18 décembre 2020 - Modifié le 18 déc. 2020 à 11:46
Paco_C Messages postés 6 Date d'inscription vendredi 18 décembre 2020 Statut Membre Dernière intervention 18 décembre 2020 - 18 déc. 2020 à 15:35
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

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
18 déc. 2020 à 11:42
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 ?!...
0
Paco_C Messages postés 6 Date d'inscription vendredi 18 décembre 2020 Statut Membre Dernière intervention 18 décembre 2020
18 déc. 2020 à 12:11
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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
18 déc. 2020 à 11:59
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
0
Paco_C Messages postés 6 Date d'inscription vendredi 18 décembre 2020 Statut Membre Dernière intervention 18 décembre 2020
Modifié le 18 déc. 2020 à 12:12
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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Paco_C Messages postés 6 Date d'inscription vendredi 18 décembre 2020 Statut Membre Dernière intervention 18 décembre 2020
18 déc. 2020 à 12:18
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
0
Paco_C Messages postés 6 Date d'inscription vendredi 18 décembre 2020 Statut Membre Dernière intervention 18 décembre 2020 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié le 18 déc. 2020 à 13:35
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
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > Paco_C Messages postés 6 Date d'inscription vendredi 18 décembre 2020 Statut Membre Dernière intervention 18 décembre 2020
Modifié le 18 déc. 2020 à 13:53
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
0
Paco_C Messages postés 6 Date d'inscription vendredi 18 décembre 2020 Statut Membre Dernière intervention 18 décembre 2020
18 déc. 2020 à 15:20
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.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
18 déc. 2020 à 15:25
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
0
Paco_C Messages postés 6 Date d'inscription vendredi 18 décembre 2020 Statut Membre Dernière intervention 18 décembre 2020 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
18 déc. 2020 à 15:35
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.
0