Appel d'un drapeau dans une feuille excel

  • Initiateur de la discussion Initiateur de la discussion maval
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

maval

XLDnaute Barbatruc
Bonjour

J'ai sur une feuille Excel, dans la colonne "D"je rentre des noms de pays, et j'aimerai avoir le drapeaux correspondant dans les cellules de la colonne "P" en sachant que les drapeaux se trouve dans dans le même dossier et un sous dossier nommé Dossier_Flag.
Les noms des pays son rentrer a l'aide d'un formulaire.

Je vous remercie d'avance

Cordialement

Max
 

Pièces jointes

Re : Appel d'un drapeau dans une feuille excel

Bonjour.
Essayez un truc du genre :
VB:
Dim Img As Picture
For L = 2 To etc…
   …
   Set Img = Me.Pictures.Insert(ThisWorkbook.Path & "\Dossier_Flag\" & Me.Cells(L, "D").Value & ".jpg")
   With Me.Cells(L, "P"): Img.Top = .Top: Img.Left = .Left: End With
   Next L
 
Re : Appel d'un drapeau dans une feuille excel

Bonjour Dranreb,

Merci beaucoup mais j'ai un problème j'ai fait ceci et sa ne fonctionne pas normalement
A chaque fois que j'ajoute un nom de drapeaux sa me r'ajoute les drapeaux déjà enregistrer?

Code:
Private Sub Worksheet_Change(ByVal Target As Range
  
  Dim Img As Picture
For L = 2 To 199 'Nbres de drapeaux
   Set Img = Me.Pictures.Insert(ThisWorkbook.Path & "\Dossier_Flag\" & Me.Cells(L, "D").Value & ".jpg")
   With Me.Cells(L, "P"): Img.Top = .Top: Img.Left = .Left: End With
   Next L

End Sub

Pourquoi ????

@+

Max
 
Dernière édition:
Re : Appel d'un drapeau dans une feuille excel

Oui, oui. Ce n'était qu'une base pour mettre en place tous les drapeaux.
Avant d'exécuter ça il faut préalablement supprimer tous les shapes au moins par F.Shapes.SelectAll: Selection.Delete
Mais là il vaudrait mieux essayer autre chose :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Drapeau Target
End Sub

Sub Drapeau(ByVal Cible As Range)
Dim NomDrapo As String, Img As Picture
Set Cible = Cible.EntireRow
NomDrapo = Cible.Columns("D").Value
Set Cible = Cible.Columns("P")
On Error Resume Next
Set Img = Me.Pictures(NomDrapo)
If Err Then
   Err.Clear
   Set Img = Me.Pictures.Insert(ThisWorkbook.Path & "\Dossier_Flag\" & NomDrapo & ".jpg")
   If Err Then MsgBox "Fichier """ & NomDrapo & ".jpg"" non trouvé", vbCritical, "Drapeau": Exit Sub
   Img.Name = NomDrapo: End If
Img.Top = Cible.Top: Img.Left = Cible.Left
End Sub
Et la pocédure Drapeau pourrait aussi être utilisée dans une autre procédure, dans une boucle sur chaque cellule d'une colonne après avoir préalablement supprimé tous les Shapes.
 
Re : Appel d'un drapeau dans une feuille excel

Re,

J'ai essayé ton code il fonctionne pas si mal que sa, le petit problème que je rencontre et-il possible de lui donnée un code pour que le drapeau se positionne au centre de la cellule. Les drapeaux fond 30 larg X 20 Hauteur.

Merci d'avance

Max
 
Re : Appel d'un drapeau dans une feuille excel

Re,

Je viens de rencontrer un beug si dans la colonne "D" je tape deux fois le même nom du pays il enlevé sur le premier pour le le mettre au deuxième.
ex: si en "D4 je rentre France et en D10 je remet France il va enlevé le drapeau de la cellule D4 pour le mettre en D10".
Sa doit être une petite modif.

@+

Max
 
Re : Appel d'un drapeau dans une feuille excel

Sa doit être une petite modif.
Non, c'en est une grosse. Ça veut dire que le nom du drapeau ne peut plus servir de nom identifiant l'image.
Essayer comme ça :
VB:
Sub Drapeau(ByVal Cible As Range)
Dim NomImage As String, NomPays As String, Img As Picture
NomImage = "Flag" & Format(Cible.Row, "000")
Set Cible = Cible.EntireRow
NomPays = Cible.Columns("D").Value
Set Cible = Cible.Columns("P")
On Error Resume Next
Set Img = Me.Pictures(NomImage)
If Err = 0 Then Img.Delete
Err.Clear
Set Img = Me.Pictures.Insert(ThisWorkbook.Path & "\Dossier_Flag\" & NomPays & ".jpg")
If Err Then MsgBox "Fichier """ & NomPays & ".jpg"" non trouvé", vbCritical, "Drapeau": Exit Sub
Img.Name = NomImage
Img.Top = Cible.Top + (Cible.Height - Img.Height) / 2
Img.Left = Cible.Left + (Cible.Width - Img.Width) / 2
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
428
Retour