Script pour associer des noms de fichiers images à des références

Bonjour,

Dans un fichier Excel, j'ai des références identifiées par un nombre (environ 39 000 à l'heure actuelle) auxquelles sont associées des données textuelles réparties dans une quinzaine de colonnes; chaque référence étant placée sur une ligne.
Dans un autre onglet du même fichier, j'ai une liste de noms de fichiers images (extension en .jpg) qui doivent être associés aux références du premier onglet. Le nom du fichier correspond à la référence (donc un nombre) + l'extension (.jpg).

Je joins un fichier d'exemple pour que ce soit plus clair.

On m'a fourni un script qui permet d'aller placer chaque nom de fichier image dans une colonne spécifique de la ligne correspondant à la référence à laquelle le fichier image est associé; dans cet exemple, il s'agit de la colonne S du premier onglet.

Sub PlacerImagesDansColonne()
    Dim wb As Workbook
    Set wb = ThisWorkbook ' Change this to refer to your workbook if needed

    Dim imgWs As Worksheet
    Set imgWs = wb.Sheets("Sheet2") ' Change the sheet name as required

    Dim dataWs As Worksheet
    Set dataWs = wb.Sheets("Sheet1") ' Change the sheet name as required

    Dim lastRowImg As Long
    lastRowImg = imgWs.Cells(imgWs.Rows.Count, "A").End(xlUp).Row ' Get the last row with data in column A of Images worksheet

    Dim lastRowData As Long
    lastRowData = dataWs.Cells(dataWs.Rows.Count, "A").End(xlUp).Row ' Get the last row with data in column A of Data worksheet

    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary") ' Use Scripting Dictionary object to store unique references

    Dim i As Long, j As Long, fileName As String
    For i = 2 To lastRowImg ' Loop through each row in the Images worksheet starting from row 2
        fileName = Trim(imgWs.Cells(i, 1).Value) ' Get the file name including extension
        If Not dict.Exists(fileName) And _
           fileName <> "" And _
           IsNumeric(Left(fileName, InStrRev(fileName, ".") - 1)) Then ' Ensure it has a valid format

            For j = 2 To lastRowData ' Loop through each row in the Data worksheet starting from row 2
                If dataWs.Cells(j, 1).Value Like "*" & Left(fileName, Len(fileName) - 4) & "*" Then ' Check if reference number matches filename without extension
                    If dict.Count < 65000 Then ' Prevent adding more than ~65k entries due to dictionary limitation
                        dict.Add Left(fileName, InStrRev(fileName, ".") - 1), Nothing ' Add reference to the dictionary
                        dataWs.Cells(j, 19).Value = fileName ' Put the filename into column S (column index is 19 here)
                        Exit For ' Stop searching once found and proceed to next iteration in outer loop
                    Else
                        MsgBox "The limit of distinct references (" & dict.Count & ") has been reached.", vbInformation, "Limit Reached!"
                        Exit For ' Stop processing when reaching maximum supported entries in the dictionary
                    end if
                End If
            Next j
        End If
    Next i
End Sub

J'aimerais affiner le script sur deux points:

1/ Certains noms d'images possèdent, après le nombre correspondant à la référence, une lettre (a, b, c): par exemple, 8203a.jpg. Il faudrait que ces noms d'images soient également traités par le script (dans mon exemple, 8203.jpg associé à la référence 8203). Pour l'instant, lorsqu'il y a une lettre après le nombre, le script ignore ces noms d'images.

I2/ Il y a parfois plusieurs images associées à une même référence, et dans ce cas à partir de la seconde image, j'ajoute le suffixe -1, -2, etc.
Par exemple:
10457.jpg et 10457-1.jpg

J'aimerais que les autres images (par exemple 10457-1.jpg) soient placées par le script dans les colonnes suivantes (10457-1.jpg dans la colonne T, 10457-2.jpg dans la colonne U, etc. tant qu'il y a des images associées à la même référence).

Merci d'avance pour votre aide!

Rechercher des sujets similaires à "script associer noms fichiers images references"