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

Résolu
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

  1. 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
    1. 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
  2. Modérateur
    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
    1. 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
    2. @jordane45https://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
    3. Modérateur
      @Paco_CBonjour,

      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
  3. 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
    1. Modérateur
      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
    2. @pijakuEn 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