VBA - Inputbox colonnes

Bonjour à tous,

J'ai un problème tout simple qui peut être réglé en deux minutes mais je n'y arrive pas...

J'ai une liste de pays dans une colonne qui peut varier d'emplacement.

le but de la macro est d'insérer les drapeaux de ces pays dans la colonne que veut l'utilisateur.

En premier lieu, je souhaiterais deux inputbox qui demandent à l'utilisateur:

1. Ou est la colonne avec les pays

2. Ou veut il insérer les drapeaux dans quelle colonne

Début de ma macro:

Sub ex_ins_picture()

On Error Resume Next

dim cells as object

ActiveSheet.Shapes.SelectAll
Selection.Delete

y = InputBox("Veuillez insérer la colonne ou se trouve la liste des pays ", "Pays",)
z = inputBox("Veuillez insérer la colonne ou vous voulez les drapeaux: ", "Drapeaux",)

'la partie manquante que je ne sais pas écrire....

For Each cells In Selection 'c'est ce que j'ai bidouillé mais je ne suis pas sur du résultat....
cells.Activate
x = Right(cell.Offset(0, y) & ".jpg", 12)

ActiveSheet.Pictures.Insert("\\julien\" & x).Select 
With Selection.ShapeRange
        .LockAspectRatio = False       
        .Top = ActiveCell.Top           
        .Left = ActiveCell.Left         
        .Height = ActiveCell.RowHeight  
        .Width = ActiveCell.Width ' largeur de la cellule
    End With

    With Selection
        .PrintObject = True            
        .Placement = xlMoveAndSize     
    End With

Next
End Sub

Merci de votre aide cher blogueur et expert en VBA.

Je donne plus d'informations sur ma demande:

Je n'arrive pas à écrire en vba => suivant la lettre inscrite dans la inputbox => comment exploiter cette donnée pour sélectionner toutes les références de cette colonne pour ensuite aller chercher l'image correspondant à chaque référence de cette colonne et les insérer dans la colonne renseigné par la deuxième inpubox.

J'en ai mis en pièce jointe avec l'ébauche de ma macro.

Merci à tous

21test.xlsm (15.27 Ko)

Personne pour m'aider snif

Hello Banzai,

Merci de ton aide en tout cas.

Sub Ex_Ins_Picture()
Dim ColPays, ColDrapeaux
Dim ColonnePays As Integer, ColonneDrapeaux As Integer
Dim Pays As String, Ligne As Long

  ' Pas trop recommandé car on va effacer toutes les formes (gênant des fois)
  'ActiveSheet.Shapes.SelectAll
  'Selection.Delete

  Set ColPays = Application.InputBox("Veuillez cliquer sur la colonne ou se trouve la liste des pays", "Pays", Type:=8)
  Set ColDrapeaux = Application.InputBox("Veuillez cliquer sur la colonne ou vous voulez les drapeaux: ", "Drapeaux", Type:=8)
  ColonnePays = ColPays.Column
  ColonneDrapeaux = ColDrapeaux.Column

  For Ligne = 5 To cells(Rows.Count, ColonnePays).End(xlUp).Row 
    Pays = cells(Ligne, ColonnePays) & ".jpeg"

    'ActiveSheet.Pictures.Insert("\\julien\" & Pays).Select
    ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & Pays).Select
    With Selection.ShapeRange
      .LockAspectRatio = False
      .Top = cells(Ligne, ColonneDrapeaux).Top
      .Left = cells(Ligne, ColonneDrapeaux).Left
      .Height = cells(Ligne, ColonneDrapeaux).RowHeight
      .Width = cells(Ligne, ColonneDrapeaux).Width  ' largeur de la cellule
    End With

    With Selection
      .PrintObject = True
      .Placement = xlMoveAndSize
    End With

  Next Ligne
End Sub

tu as tapé dans ton code 'ligne=5 mais elle n'est pas fixe à l'avenir l'utilisateur peut insérer sa liste dans n'importe quelle colonne à n'importe quelle ligne. Donc si je mets la liste des pays colonne C commencant à la ligne 1 => la macro fonctionnera t elle toujours?

Merci pour ta clairvoyance

Bonsoir

Il faut être précis dans tes demandes

jambontomate a écrit :

En premier lieu, je souhaiterais deux inputbox qui demandent à l'utilisateur:

1. Ou est la colonne avec les pays

2. Ou veut il insérer les drapeaux dans quelle colonne

La macro récupère les colonnes

Il faut demander à l'utilisateur de choisir la cellule du premier pays ( on trouvera la ligne et la colonne) et de choisir la colonne d'affichage

A toi de dire

Désolé Banzai,

Ok si je change l'écriture de l'input box, et que l'utilisateur indique la cellule ou se trouve le premier pays et même principe pour la colonne de l'insertion des drapeaux.

Actuellement, la macro est capable de réaliser ça? ou dois-je importer une modification à celle-ci?

Merci de ton retour Banzai et bonne soirée.

Bonsoir

Version à tester

Il faut sélectionner le premier nom de la liste des pays et la colonne d'affichage

Merci Banzai,

Je vais tester demain et je te redis tout ça.

Bonne soirée

Hello Banzai,

Cela fonctionne parfaitement merci.

Ensuite, juste une variante de ta macro si c'est possible en VBA.

Si je souhaite que l'utilisateur choisisse la ligne et la colonne pour insérer les images, quelle ligne de code dois-je rajouter? merci

Bonjour

Soit précis

La ligne et la colonne pour quoi faire, la colonne suffit car les images se placeront sur la même ligne que le pays

Une chose que je ne comprends pas

Donne des exemples précis

Pardon Banzai,

Comme tu l'as dit précédemment "la colonne suffit car les images se placeront sur la même ligne que le pays".

Justement si je souhaite que l'utilisateur puisse choisir sa ligne de départ, comment l'écris t on en VBA?

J'espère être plus clair que ma première fois.

MErci Banzai et désolé pour mes réponses approximatives.

Bonjour

jambontomate a écrit :

comment l'écris t on en VBA?

Comme pour la 1ère cellule du nom du pays

Ensuite à toi de gérer le décalage entre la ligne du nom du pays et la ligne d'affichage

Oki je vais essayer tout ça. Merci pour ton aide encore et bonne continuation !

Rechercher des sujets similaires à "vba inputbox colonnes"