XL 2016 Extraire le nom d'une image et le placer dans la cellule à côté

moldu1

XLDnaute Nouveau
Bonjour,

J'ai crée un tableau en suivant des tutos sur youtube.
Dans ce tableau j'insère des photos du personnel dans la colonne H et je voudrais si possible, pouvoir extraire le nom de la photo (qui est le nom de la personne) dans la colonne G en rose.
Je précise que je ne connais vraiment pas grand chose en matière de code et tout ce que j'ai fait n'est que copie d'un tuto.
Voici le tableau en pJ.
Merci.
 

Pièces jointes

  • TABLEAU TEST.xlsm
    47.3 KB · Affichages: 34

job75

XLDnaute Barbatruc
Bonjour moldu1, Dudu2, le forum,

Si les images sont correctement positionnées :
VB:
Sub NomImage()
Dim s As Shape
Application.ScreenUpdating = False
Range("G3:G" & Rows.Count).ClearContents 'RAZ
For Each s In ActiveSheet.Shapes
    With s.TopLeftCell
        If .Column = 8 And .Row > 2 Then Cells(.Row, 7) = s.Name
    End With
Next
End Sub
A+
 

moldu1

XLDnaute Nouveau
Bonjour job75,
Merci pour ta réponse.
J'ai inséré un nouveau module et copié ton code, puis j'ai créé un bouton pour affecter le code.
C'est tout ce que je dois faire ? parce que j' obtiens le résultat suivant: Row3Image pour la 1ere photo et Row4Image pour la seconde alors que j'aurais du avoir Charlotte B et Belinda M (le nom des images)
 

moldu1

XLDnaute Nouveau
Bonjour
une autre question a caractère rhétorique
le nom de l'image tu l'a puisque tu a le chemin en colonne 9?
a moins que les nom d'image ne correspondent pas aux noms de fichiers
au quel cas ta demande n'a pas de sens
Salut patricktoulon,
Tu as raison, c'est que je souhaite faire un truc plus propre sans tout le chemin. La colonne 9 est d'ordinaire masquée.
C'est trop compliqué ?
 

patricktoulon

XLDnaute Barbatruc
re
ma fois si le chemin est mit en colonne 9, quand tu met l'image
et bien en même temps tu met dans
cells(x,9).offset(,-2) =mid(cells(x,9).text,instr(cells(x,9).text,"\")+1)
et cela par vba

x étant la ligne déterminé dans la macro vba qui met l'image et qui inscrit en colonne 9 le chemin
et c'est tout
 

patricktoulon

XLDnaute Barbatruc
re
bon je l'ai péché dans ton fichier
il y a 36 sub identique la quelle est la bonne ?
VB:
'Déclaration des variables Globales
Dim CheminImage As String
Dim SelectionLigne As Long


Sub AfficheExplorateurFichier()

'Déclaration des variables Objet Explorateur Fichier
    Dim ImageFichier As FileDialog
    'Affectation
    Set ImageFichier = Application.FileDialog(msoFileDialogFilePicker)

    'Personnalisation de la fenêtre de fichier
    With ImageFichier
        'On change le titre de la boîte de dialogue
        .Title = "SELECTION D'UNE IMAGE A JOINDRE"
        'On filtre le type des fichiers à montrer dans le dossier
        .Filters.Add "Fichiers type image", "*.jpg,*.jpeg,*.bmp,*.png,*.gif", 1
        If .Show <> -1 Then GoTo pasdeselection
        'On affiche le chemin de l'image dans la colonne spécifique.
        With Feuil4.Range("I" & ActiveCell.Row)
            .Value = .SelectedItems(1)
            .Offset(, -2) = Mid(.Value, InStrRev(.Value, "\") + 1)
        End With
    End With
pasdeselection:

End Sub
 

moldu1

XLDnaute Nouveau
re
bon je l'ai péché dans ton fichier
il y a 36 sub identique la quelle est la bonne ?
VB:
'Déclaration des variables Globales
Dim CheminImage As String
Dim SelectionLigne As Long


Sub AfficheExplorateurFichier()

'Déclaration des variables Objet Explorateur Fichier
    Dim ImageFichier As FileDialog
    'Affectation
    Set ImageFichier = Application.FileDialog(msoFileDialogFilePicker)

    'Personnalisation de la fenêtre de fichier
    With ImageFichier
        'On change le titre de la boîte de dialogue
        .Title = "SELECTION D'UNE IMAGE A JOINDRE"
        'On filtre le type des fichiers à montrer dans le dossier
        .Filters.Add "Fichiers type image", "*.jpg,*.jpeg,*.bmp,*.png,*.gif", 1
        If .Show <> -1 Then GoTo pasdeselection
        'On affiche le chemin de l'image dans la colonne spécifique.
        With Feuil4.Range("I" & ActiveCell.Row)
            .Value = .SelectedItems(1)
            .Offset(, -2) = Mid(.Value, InStrRev(.Value, "\") + 1)
        End With
    End With
pasdeselection:

End Sub
Il y a un bug à:
With Feuil4.Range("I" & ActiveCell.Row)
.Value = .SelectedItems(1)
J'ai mis un 5 à la place du Feuil4 mais le bug est encore là
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG