VBA - Inputbox colonnes Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
j
jambontomate
Membre habitué
Membre habitué
Messages : 92
Inscrit le : 5 janvier 2015
Version d'Excel : 2010

Message par jambontomate » 16 juin 2015, 21:19

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.
j
jambontomate
Membre habitué
Membre habitué
Messages : 92
Inscrit le : 5 janvier 2015
Version d'Excel : 2010

Message par jambontomate » 17 juin 2015, 21:28

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
test.xlsm
(15.27 Kio) Téléchargé 21 fois
j
jambontomate
Membre habitué
Membre habitué
Messages : 92
Inscrit le : 5 janvier 2015
Version d'Excel : 2010

Message par jambontomate » 21 juin 2015, 18:06

Personne pour m'aider snif
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'726
Appréciations reçues : 4
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 21 juin 2015, 19:28

Bonjour

A tester
jambontomate Saisie V002.xlsm
(21.87 Kio) Téléchargé 22 fois
Image
j
jambontomate
Membre habitué
Membre habitué
Messages : 92
Inscrit le : 5 janvier 2015
Version d'Excel : 2010

Message par jambontomate » 23 juin 2015, 20:07

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
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'726
Appréciations reçues : 4
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 23 juin 2015, 21:17

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
Image
j
jambontomate
Membre habitué
Membre habitué
Messages : 92
Inscrit le : 5 janvier 2015
Version d'Excel : 2010

Message par jambontomate » 24 juin 2015, 19:40

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.
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'726
Appréciations reçues : 4
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 24 juin 2015, 22:49

Bonsoir

Version à tester
Il faut sélectionner le premier nom de la liste des pays et la colonne d'affichage
jambontomate Saisie V003.xlsm
(22.07 Kio) Téléchargé 29 fois
Image
j
jambontomate
Membre habitué
Membre habitué
Messages : 92
Inscrit le : 5 janvier 2015
Version d'Excel : 2010

Message par jambontomate » 25 juin 2015, 19:55

Merci Banzai,

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

Bonne soirée
j
jambontomate
Membre habitué
Membre habitué
Messages : 92
Inscrit le : 5 janvier 2015
Version d'Excel : 2010

Message par jambontomate » 27 juin 2015, 16:36

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
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message