IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Action si selection d'une ligne d'une listview [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2023
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mars 2023
    Messages : 32
    Points : 13
    Points
    13
    Par défaut Action si selection d'une ligne d'une listview
    Bonjour,
    J'ai une list view avec plusieurs lignes et je souhaiterais qu'un graphique apparaisse, dans une zone image unique, selon la ligne sélectionnée, si ligne 1, le graphique 1 apparaisse ect.
    J'ai un code qui affiche uniquement si la dernière condition est remplie, cela ne marche pas pour les lignes précédentes.
    Pourriez-vous y jeter un coup d'œil?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub UserForm_Initialize()
    Set LeGraph1 = Sheets("Répartition financeurs").ChartObjects(1).Chart
      NomImage = ThisWorkbook.Path & Application.PathSeparator & "temp1.gif"
      LeGraph1.Export Filename:=NomImage, FilterName:="GIF"
    Set LeGraph2 = Sheets("Répartition financeurs").ChartObjects(2).Chart
      NomImage2 = ThisWorkbook.Path & Application.PathSeparator & "temp2.gif"
      LeGraph2.Export Filename:=NomImage2, FilterName:="GIF"
      Set LeGraph3 = Sheets("Répartition financeurs").ChartObjects(3).Chart
      NomImage3 = ThisWorkbook.Path & Application.PathSeparator & "temp3.gif"
      LeGraph3.Export Filename:=NomImage3, FilterName:="GIF"
    End Bub
     
    Private Sub ListView1_Click()
        If ListView1.ListItems(1).Selected = True Then _
      NomImage1 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
      Me.Image1.Picture = LoadPicture(NomImage1)
     
         If ListView1.ListItems(2).Selected = True Then _
      NomImage2 = ThisWorkbook.Path & Application.PathSeparator & "temp2.gif"
        Me.Image1.Picture = LoadPicture(NomImage2)
     
         If ListView1.ListItems(3).Selected = True Then _
      NomImage3 = ThisWorkbook.Path & Application.PathSeparator & "temp3.gif"
        Me.Image1.Picture = LoadPicture(NomImage3)
     
    End Sub

  2. #2
    Membre confirmé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 354
    Points : 633
    Points
    633
    Par défaut
    Salut,
    Je trouve ce code trop restrictif, si tu changes les chemins ou images tu dois réécrire le code.
    Pourquoi ne pas ajouter une colonne cachée avec le noms des images que tu chargerais depuis un TS par exemple, il ne te reste plus qu' a faire une seule procédure pour l'ensemble des lignes.
    De plus un coup c'est nommé "temp.gif" et un coup "temp1.gif" ...
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  3. #3
    Membre à l'essai
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2023
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mars 2023
    Messages : 32
    Points : 13
    Points
    13
    Par défaut
    Bonjour Valtrase,
    Merci pour ce retour rapide,
    Les images sont générées directement depuis le tableur et enregistrées dans le fichier parent du tableur, c'est des graphiques issus du tableau source du list view. J'avais pensé essayer de faire une boucle mais les graphiques ne sont pas nommés dans le bon ordre.
    S'il y a un autre moyen plus propre et qui marche je suis preneur, il faut que j'ajoute le nom de chaque graphique dans une dernière colonne et fasse une boucle?

  4. #4
    Membre éprouvé
    Inscrit en
    Décembre 2002
    Messages
    800
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 800
    Points : 1 259
    Points
    1 259
    Par défaut
    Salut,
    Ne serait-il pas mieux d'écrire tes boucles de test de façon à exclure les 2 autres boucles quand l'une des 3 est vraie ? Ou alors pour toi les 3 peuvent être vraies ? Si ce n'est pas le cas, tu pourrais peut-être essayer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub ListView1_Click()
        If ListView1.ListItems(1).Selected = True Then
            NomImage1 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
            Me.Image1.Picture = LoadPicture(NomImage1)
        ElseIf ListView1.ListItems(2).Selected = True Then
            NomImage2 = ThisWorkbook.Path & Application.PathSeparator & "temp2.gif"
            Me.Image1.Picture = LoadPicture(NomImage2)
        ElseIf ListView1.ListItems(3).Selected = True Then
            NomImage3 = ThisWorkbook.Path & Application.PathSeparator & "temp3.gif"
            Me.Image1.Picture = LoadPicture(NomImage3)
        End If
    End Sub

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 948
    Points : 9 276
    Points
    9 276
    Par défaut
    Hello,
    Citation Envoyé par Toro74 Voir le message
    J'ai un code qui affiche uniquement si la dernière condition est remplie, cela ne marche pas pour les lignes précédentes.
    Pourriez-vous y jeter un coup d'œil?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Private Sub ListView1_Click()
        If ListView1.ListItems(1).Selected = True Then _
      NomImage1 = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
      Me.Image1.Picture = LoadPicture(NomImage1)
     
         If ListView1.ListItems(2).Selected = True Then _
      NomImage2 = ThisWorkbook.Path & Application.PathSeparator & "temp2.gif"
        Me.Image1.Picture = LoadPicture(NomImage2)
     
         If ListView1.ListItems(3).Selected = True Then _
      NomImage3 = ThisWorkbook.Path & Application.PathSeparator & "temp3.gif"
        Me.Image1.Picture = LoadPicture(NomImage3)
     
    End Sub
    En fait c'est normal que tu ais un problème car tu n'as pas de mis de End If sur tes If alors seule l'instruction après le then est effectuée si la condition est vraie. Cela veut dire que toutes tes instructions Me.Image1.Picture = sont effectuées et c'est la dernière effectuée qui affiche l'image celle avec NomImage3. La solution à Franc enlève ce problème.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Membre à l'essai
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2023
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mars 2023
    Messages : 32
    Points : 13
    Points
    13
    Par défaut
    Bonjour Franc, jurassic pork
    Merci beaucoup pour vos propositions, effectivement la solution de Franc fonctionne, c'est top!
    Je n'ai pas eu de notification pour vos messages, donc je ne pensais pas avoir d'autre réponse, je suis repassé par hasard et j'ai bien fait,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/02/2008, 09h10
  2. selection dans une listview
    Par zmatz dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/06/2007, 22h01
  3. [VBA-E] Problème de sélection d'une listview
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/09/2006, 16h59
  4. Selection dans une listview..
    Par remixtech dans le forum Composants VCL
    Réponses: 1
    Dernier message: 25/01/2006, 22h10
  5. Ne pas afficher la selection d'une listview
    Par BigBenQ dans le forum C++Builder
    Réponses: 2
    Dernier message: 23/11/2005, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo