Partager via

VBA : mon code n'est pas actif

Anonyme
2023-10-04T15:18:43+00:00

Bonjour à tous.

Récemment j'ai commencé à utiliser VBA dans Excel. J'essaie d'apprendre avec Record macro et des AI mais je crois que je suis arrivé à la limite pour le code que j'essaie de faire.

J'aimerais un code qui vérifie chacun des numéros de la colonne H pour trouver le numéro correspondant dans la colonne B. Une fois le numéro trouvé dans la colonne B, j'aimerais que le code copie l'objet dans la case immédiatement à sa droite, qui est une image avec un hyperlien, et qu'il la colle dans la case à droite du numéro de référence.

Exemple :

H2=18
Dans la colonne B le nombre 18 ce trouve dans B19
Copie C19 (image avec un hyperlien) et colle dans I2

Voici le code que j'ai présentement :

Sub CopierImagePourTous()

Dim numero As String 

Dim rngH As Range 

Dim rngB As Range 

Dim cellH As Range 

Dim rng As Range 

' Définir la plage de données de la colonne H (numéros) 

Set rngH = Range("H2:H" & Range("H" & Rows.Count).End(xlUp).Row) 

' Boucle à travers chaque cellule de la colonne H 

For Each cellH In rngH 

    numero = cellH.Value 

    ' Rechercher le numéro dans la colonne B 

    Set rngB = Range("B:B").Find(numero, LookIn:=xlValues, LookAt:=xlWhole) 

    ' Vérifier si le numéro a été trouvé 

    If Not rngB Is Nothing Then 

        ' Copier l'image de la cellule à droite (colonne C) 

        rngB.Offset(0, 1).Copy 

        ' Coller l'image dans la cellule correspondante dans la colonne I 

        cellH.Offset(0, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats 

    End If 

    ' Effacer le presse-papiers 

    Application.CutCopyMode = False 

Next cellH 

End Sub

Lorsque j'exécute le code, je vois le système sélectionner chacune des cases dans la colonne I mais rien ne se passe...

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

5 réponses

  1. DanielCo 107.7K Points de réputation
    2023-10-05T05:58:14+00:00

    Bonjour,

    Ceci fonctionne :

      rngB.Offset(0, 1).Copy  
      cellH.Offset(0, 1).Select  
      ActiveSheet.Paste  
    

    Ne me demande pas pourquoi...

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2023-10-04T18:24:46+00:00

    J'ai compris le problème. Les cases que je copiais était merger. Depuis que je les aient séparé l'erreur ne s'affiche pus.

    Cependant lors du copier/coller les images ne suivent pas.

    Si je fais ctrl+c / ctrl+v sur les cellules les images suivent pourtant.

    Je ne sais pas si cela fait une différence mais,j'ai pris ces images d'une liste sur un site internet. Chacune des images, lorsqu'on clique dessus, nous amène sur une page internet qui parle en détails de ce qui est représenté sur l'image.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2023-10-04T16:51:48+00:00

    Personnellement, ça ne me génère pas d'erreur. Redémarre l'ordi.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2023-10-04T16:19:07+00:00

    J'ai modifié cette ligne :

    cellH.Offset(0, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats

    Pour ceci :

            cellH.Offset(0, 1).PasteSpecial Paste:=xlPasteAll  
    

    Maintenant je reçoit cette erreur

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. DanielCo 107.7K Points de réputation
    2023-10-04T15:55:39+00:00

    Bonjour,

    C'est presque ça. Au lieu de faire :

    rngB.Offset(0, 1).Copy

    ' Coller l'image dans la cellule correspondante dans la colonne I

    cellH.Offset(0, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats

    qui ne colle que les valeurs et les formats de nombre, fais :

    rngB.Offset(0, 1).Copy cellH.Offset(0, 1)

    Collage complet.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire