Problème lors du double clilc dans une listview

laurentnove - 26 oct. 2012 à 10:04
 laurentnove - 29 oct. 2012 à 08:46
Bonjour à tous,

Je viens vers vous aujourd'hui pour m'aider à solutionner un problème sur un programme que je finalise.

Je traite une base de donnée par l'intermédiaire d'un userform dans lequel se trouve une listview et d'autres contrôles.
Lorsque ma base est affichée dans mon listview je souhaite faire une recherche par référence ou par mot clé à l'aide de textbox (chose que j'arrive à faire).

Cependant quand je double clique sur une ligne de ma listview un autre userform s'affiche reprenant les informations importantes.
A l'initialisation du userform pas de problème les infos correspondent à la bonne ligne, cependant dés que je fais une recherche les infos affichées repartent de la première ligne de ma base.

Je pense que c'est un problème de configuration des items de la listview lors de la recherche mais je ne vois pas comment faire.

Voila le code que j'utilise pour la recherche par textbox :
Private Sub libelle_Change()
Dim plage As Range, Cell As Range
Dim Recherche As String, adresse As String      ', Col As String
Dim Ligne As Variant
Dim cel As Range
Dim c As Range
Dim col As Integer
Dim x As Long
With ListView1

                        .ListItems.Clear
End With
  Recherche = libelle.Value
  If Recherche = "" Then Exit Sub
  
  col = 3
  Ligne = Feuil1.Cells(Rows.Count, col).End(xlUp).row
  Set plage = Feuil1.Range(Cells(2, col), Cells(Ligne, col))
  With plage
    Set cel = .Find(What:=Recherche, LookIn:=xlValues, lookat:=xlPart)
    If Not cel Is Nothing Then
      adresse = cel.Address
      Do
                    With ListView1

                    .ListItems.Add , , Range("B" & cel.row)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Range("c" & cel.row)

                    .ListItems(.ListItems.Count).ListSubItems.Add , , Range("d" & cel.row)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Range("e" & cel.row)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Range("f" & cel.row)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Range("g" & cel.row)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Range("h" & cel.row)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Range("i" & cel.row)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Range("j" & cel.row)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Range("k" & cel.row)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Range("l" & cel.row)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , Range("m" & cel.row)
                    .ListItems(.ListItems.Count).ListSubItems.Add , , cel.row

                End With

        Set cel = .FindNext(cel)
      Loop While Not cel Is Nothing And cel.Address <> adresse
    End If
  End With
End Sub


J'espère que vous pourrez m'aider, je vous remercie de l'attention que vous voudrez bien porter à mon problème.

16 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 oct. 2012 à 10:26
Cependant quand je double clique sur une ligne de ma listview un autre userform s'affiche reprenant les informations importantes.
On ne voit pas le code correspondant à cet évènement !
cependant dés que je fais une recherche les infos affichées repartent de la première ligne de ma base.

Pas vraiment clair ! Explique toi. Le fait de repartir à la 1ère ligne est ton constat ou ce que tu souhaites ?
Essaye d'exposer plus clairement et plus exactement les tenants et aboutissants. Et de montrer le code au double-clic !
Et montre-nous où et comment tu as déclaré et initialisé la variable Recherche
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
laurentnove
26 oct. 2012 à 10:40
Re,

Merci Ucfoutu de te pencher sur mon problème.
En effet dur d'être vraiment clair avec ce genre de problème.
Je vais essayer de vous éclairer un peu sur mon problème, je pourrais également mettre mon fichier mais je ne vois pas comment faire.

Le fait que le double clic renvoi à la première ligne n'est pas ce que je souhaite c'est mon constat.
Ce que je souhaiterais c'est qu’après marecherche et lors du double clic je retrouve dans le deuxième userform le détail de la ligne sur laquelle j'ai double cliqué.

Voici le code du double clic :
Private Sub ListView1_DblClick()
ligselect = ListView1.SelectedItem.Index + 1 ' partie gère le double click sur une des lignes
rapport_base_admin.Show

End Sub


et voici le code du second userform :
Private Sub CommandButton1_Click() 'Boutton Solder
choixsolde.Show
On Error Resume Next
Rows([B2:B65500].Find(ref.Value).row).EntireRow.Delete
End Sub

Private Sub CommandButton2_Click()
'mise en forme et impression du rapport papier
If modifier = True Then
Feuil9.Range("C6") = libe.Value
Feuil9.Range("c12") = ref.Value
Feuil9.Range("C14") = creation.Value
Feuil9.Range("C16") = DTfin.Value
Feuil9.Range("E20") = Combopilote.Value
Feuil9.Range("E22") = comboetatconstat.Value
Feuil9.Range("E24") = origine.Value
Feuil9.Range("C28") = retard.Value
Feuil9.Range("B34") = reporting.Value
Else
Feuil9.Range("C6") = libe.Value
Feuil9.Range("c12") = ref.Value
Feuil9.Range("C14") = creation.Value
Feuil9.Range("C16") = DTfin.Value
Feuil9.Range("E20") = pilote.Value
Feuil9.Range("E22") = etat.Value
Feuil9.Range("E24") = origine.Value
Feuil9.Range("C28") = retard.Value
Feuil9.Range("B34") = reporting.Value
End If
Feuil9.Activate
 Application.Dialogs(xlDialogPrint).Show
Feuil1.Activate
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Private Sub CommandButton4_Click() 'Boutton Supprimer
Dim a As Long
a = MsgBox("Etes vous sur de vouloir faire cela ?", vbYesNo)
If (a = 6) Then
        On Error Resume Next
Rows([B1:B65000].Find(ref.Value).row).EntireRow.Delete
Else
       Unload Me
End If

End Sub



Private Sub CommandButton5_Click() ' Boutton valier

Range("C" & ligselect).Value = libe.Value
Range("G" & ligselect).Value = reporting.Value
Range("D" & ligselect).Value = Combopilote.Value
Range("I" & ligselect).Value = comboetatconstat.Value
Range("F" & ligselect).Value = DTfin.Value
Range("K" & ligselect).Value = origine.Value
Call IniListview
Unload Me


End Sub

Private Sub CommandButton6_Click()
UserForm1.Show
End Sub

Private Sub modifier_Click()
With Combopilote
.AddItem ""
.AddItem "F****"
.AddItem "R*****"
.AddItem "I***"
.AddItem "Br****"
.AddItem "Ch*****"
.AddItem "Ha***"
.AddItem "M***"
.AddItem "A***"
.AddItem "L'***"
End With
With comboetatconstat
.AddItem ""
.AddItem "SOLDE"
.AddItem "ACCEPTE"
.AddItem "CREE"
.AddItem "TERMINE"
.AddItem "AFFECTE"
.AddItem "REDIGE"
End With

'Activation des contrôle de modification



origine.Enabled = True

etat.Visible = False
Combopilote.Visible = True
comboetatconstat.Visible = True
libe.Enabled = True
reporting.Enabled = True
modifier.Visible = False
pilote.Visible = False
Combopilote.Value = pilote.Value
comboetatconstat.Value = etat.Value
End Sub

Private Sub UserForm_Initialize()
  Dim re As Long

    Id.Value = Range("A" & ligselect).Value
    ref.Value = Range("B" & ligselect).Value
    libe.Value = Range("C" & ligselect).Value
    pilote.Value = Range("D" & ligselect).Value
    creation.Value = Range("E" & ligselect).Value
    DTfin.Value = Range("F" & ligselect).Value
    origine.Value = Range("K" & ligselect).Value
    etat.Value = Range("I" & ligselect).Value
    reporting.Value = Range("G" & ligselect).Value
    re = DateDiff("d", Date, Range("F" & ligselect).Value)
    
    If re < 0 Then
    retard.BackColor = vbRed
    retard.Value = re
    
    Else
    retard.BackColor = vbGreen
    retard.Value = re
    
   
    End If
    
Combopilote.Visible = False
comboetatconstat.Visible = False

  
End Sub
Sub IniListview()                         'Permet la mise à jour de la base dés la modification
Dim i As Long
Sheets("BASE").AutoFilterMode = False

    Recherche_Base_Admin.ListView1.ListItems.Clear
    With Recherche_Base_Admin.ListView1.ColumnHeaders
       .Add , , "Référence", 80
       .Add , , "Libéllé", 250
       .Add , , "Pilote", 100
       .Add , , "Date de création", 70
       .Add , , "Date de D'échéance", 70
       .Add , , "Reporting", 150
       .Add , , "Date de solde", 70
       .Add , , "Etat", 60
       .Add , , "Type d'action", 50
       .Add , , "Origine du constat", 85
       .Add , , "Commenditaire", 55
       .Add , , , 0
    End With
 Recherche_Base_Admin.ListView1.View = lvwReport
 Recherche_Base_Admin.ListView1.FullRowSelect = True
 Recherche_Base_Admin.ListView1.Gridlines = True
        For i = 2 To Sheets("BASE").Range("B65536").End(xlUp).row
           Recherche_Base_Admin.ListView1.ListItems.Add , "BASE!B" & i, Sheets("BASE").Cells(i, 2)
           Recherche_Base_Admin.ListView1.ListItems(Recherche_Base_Admin.ListView1.ListItems.Count).ListSubItems.Add , "BASE!C" & i, Sheets("BASE").Cells(i, 3)
           Recherche_Base_Admin.ListView1.ListItems(Recherche_Base_Admin.ListView1.ListItems.Count).ListSubItems.Add , "BASE!D" & i, Sheets("BASE").Cells(i, 4)
           Recherche_Base_Admin.ListView1.ListItems(Recherche_Base_Admin.ListView1.ListItems.Count).ListSubItems.Add , "BASE!E" & i, Sheets("BASE").Cells(i, 5)
           Recherche_Base_Admin.ListView1.ListItems(Recherche_Base_Admin.ListView1.ListItems.Count).ListSubItems.Add , "BASE!F" & i, Sheets("BASE").Cells(i, 6)
           Recherche_Base_Admin.ListView1.ListItems(Recherche_Base_Admin.ListView1.ListItems.Count).ListSubItems.Add , "BASE!G" & i, Sheets("BASE").Cells(i, 7)
           Recherche_Base_Admin.ListView1.ListItems(Recherche_Base_Admin.ListView1.ListItems.Count).ListSubItems.Add , "BASE!H" & i, Sheets("BASE").Cells(i, 8)
           Recherche_Base_Admin.ListView1.ListItems(Recherche_Base_Admin.ListView1.ListItems.Count).ListSubItems.Add , "BASE!I" & i, Sheets("BASE").Cells(i, 9)
           Recherche_Base_Admin.ListView1.ListItems(Recherche_Base_Admin.ListView1.ListItems.Count).ListSubItems.Add , "BASE!J" & i, Sheets("BASE").Cells(i, 10)
           Recherche_Base_Admin.ListView1.ListItems(Recherche_Base_Admin.ListView1.ListItems.Count).ListSubItems.Add , "BASE!K" & i, Sheets("BASE").Cells(i, 11)
           Recherche_Base_Admin.ListView1.ListItems(Recherche_Base_Admin.ListView1.ListItems.Count).ListSubItems.Add , "BASE!L" & i, Sheets("BASE").Cells(i, 12)
          Recherche_Base_Admin.ListView1.ListItems(Recherche_Base_Admin.ListView1.ListItems.Count).ListSubItems.Add , "BASE!M" & i, Sheets("BASE").Cells(i, 13)
'          .ListItems(.ListItems.Count).ListSubItems.Add , "BASE!D" & L, i
        Next
    Recherche_Base_Admin.ListView1.ListItems(1).Selected = False
    Set Recherche_Base_Admin.ListView1.SelectedItem = Nothing


End Sub


Pour ce qui est de la variable recherche elle est déclarée et initialisée dans le libelle_change () c'est en fait la valeur du textbox libelle.

Merci encore de te pencher sur mon problème.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 oct. 2012 à 10:55
Où et comment as-du déclaré la variable ligselect ?
As-tu ajouté (recommandé) Option Explicit au tout début de ton module de code ?
Pourquoi ces "On Error Resume Next" ? Ils ne font que "cacher" des erreurs !!!
Des expressions conditionnelles devraient permettre d'évaluer la faisabilité, plutôt que de vouloir à la fois la "forcer" à coups de "On Error Resume Next".
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
laurentnove
26 oct. 2012 à 11:05
La variable ligselect est déclarée dans un module standard comme long.
Les "On Error Resume Next" ne me servent que pour la suppression des lignes.

Pour mon problème je pense qu'il s'agit plutôt d'affecter le "cel.row" qui me renvoi le bon numéro de ligne à la valeur de l'item sur lequel je double clique dans ma listview.

Option Explicit est bien sur mon module déclarant "ligselect" dans le "libelle_change()" enfin il s'agit de mon humble avis ! qu'en pense tu ? Ma réflexion est elle correcte ou y aurait il un autre problème selon toi ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
laurentnove
26 oct. 2012 à 11:10
Excuse moi erreur de frappe dans mon dernier message :

Option Explicit est bien sur mon module déclarant "ligselect".
Pour mon problème je pense qu'il s'agit plutôt d'affecter le "cel.row" qui me renvoi le bon numéro de ligne à la valeur de l'item sur lequel je double clique dans ma listview dans le module "libelle_change()" enfin il s'agit de mon humble avis ! qu'en pense tu ? Ma réflexion est elle correcte ou y aurait il un autre problème selon toi ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 oct. 2012 à 11:19
La variable ligselect est déclarée dans un module standard comme long.

n'est pas une réponse complète
affecter le "cel.row" qui me renvoi le bon numéro de ligne à la valeur de l'item sur lequel je double clique dans ma listview

Je n'en sais rien puisque j'ignore les tenants et aboutissant précis !
Je ne peux que constater que ce que tu fais là :
Set cel = .Find(What:=Recherche, LookIn:=xlValues, lookat:=xlPart)
ne correspond pas à ce que tu dis (la valeur de l'item sur lequel je double clique dans ma listview), mais à une cellule résulat d'une recherche !
Tu deviens incompréhensible, là !!!
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
laurentnove
26 oct. 2012 à 11:29
Je vais essayer de te réexpliquer clairement ce que je souhaite faire.

- Une base de donnée excel remplie -> s'affiche dans un listview.

- A l'initialisation du userform la listview contient donc la base excel.

- Je souhaite effectuer une recherche dans ma base à l'aide du textbox "libelle" -> cette recherche s'affiche dans la listview (cela ça fonctionne)

- Dans la listview reste donc uniquement le resultat de la recherche

- Quand je double clique sur une ligne de la listview je souhaite que le second userform s'affiche et me renvoi les données de la ligne sélectionnée (autrement dit le résultat de la recherche affichée dans le listview)

Set cel = .Find(What:=Recherche, LookIn:=xlValues, lookat:=xlPart)

Cette fonction me sert donc à faire ma recherche.

Cependant ce qui ne fonctionne pas c'est :

Lorsque la listview affiche le résultat de ma recherche et que je double clique sur une ligne, le second userform renvoie pas la bonne ligne de la base excel dans laquelle j'ai fait la recherche.

Exemple :
J'ai une base de dix lignes (de 1 à 10) -> je fais une recherche
A la suite de cette recherche la listview affiche les lignes 4 et 8 de la base en item 1 et 2 du listview

Quand je clique sur le premier item du listview le second userform me renvoi les données de la ligne 1. (ce que je ne souhaite pas, je souhaiterais qu'il me renvoi la ligne 4 de la base)

J'espère avoir été plus clair.

Encore merci pour ton aide.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 oct. 2012 à 11:46
Ouf ..
Au bout du compte, tu veux conserver en mémoire les N°s de rang de ta base, qui ne sont certes pas ceux de ta listview.
J'ignore tout de tes raisons, mais cela ne me regarde pas.
Remède : ajouter une colonne invisible à ta listview et y mettre le numéro de rang de la base.
Lors de la sélection d'un item dans la listview, lire le rang correspondant de la base dans la colonne ajoutée et utiliser à ton gré ce rang.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
laurentnove
26 oct. 2012 à 11:55
Je suis soulagé que tu ais compris ce que je cherchais à faire (cela veut dire que je n'ai pas l'esprit si embrouillé en fin de compte!)

Par contre l'ajout de la colonne masqué je le fait déjà avec :
.ListItems(.ListItems.Count).ListSubItems.Add , , cel.row

Mais c'est justement de récupérer le numéro de rang.

Quand je tente un :

.ListItems(.ListItems.Count)=cel.row


Il me marque que la valeur est en lecture seule.

Je pense ne pas être très loin de la réponse ! Ton aide me permettrais de la trouver et enfin finaliser ce programme.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 oct. 2012 à 12:04
Tu écris là n'importe quoi !
.listItems.Count est le constat d'un nombre d'articles présents. Un constat étant un constat, je ne vois pas comment qui que ce fût pourrait en modifier la valeur !
C'est dans la dernière colonne (celle invisible) que tu dois, pour chaque item ajouté, inscrire le subitem = cel.row !!!
Réveille-toi un peu, s'il te plait.
Reviens après.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 oct. 2012 à 14:04
Voià, après avoir déjeuner, le petit test que je souhaite que tu fasses :
Private Sub UserForm_Initialize()
    Randomize
    ListView1.ColumnHeaders.Add , , "Nom", ListView1.Width / 3
    ListView1.ColumnHeaders.Add , , "prénom ID", ListView1.Width / 3, lvwColumnCenter
    ListView1.ColumnHeaders.Add , , "date de naissance", ListView1.Width / 3
    ListView1.ColumnHeaders.Add , , "", 0
    Dim itmX As ListItem
    For i = 1 To 10
       Set itmX = ListView1.ListItems.Add(, , Int((9 * Rnd) + 1))
       itmX.SubItems(1) = "a" & Int((9 * Rnd) + 1)
       If i Mod 2 = 0 Then
          itmX.SubItems(2) = "17/02/2000"
           itmX.SubItems(3) = "20000117"
       Else
          itmX.SubItems(2) = "20/03/2002"
          itmX.SubItems(3) = "20020320"
       End If
    Next
End Sub
Private Sub ListView1_ItemClick(ByVal Item As ComctlLib.ListItem)
  toto = ListView1.ListItems(Item.Index).Index  'je sais ... ce n'est pas évident ...
  MsgBox "tu viens de sélectionner la ligne N° " & toto & " qui dit" & vbCrLf & _
  "en sa première colonne " & ListView1.ListItems(toto).Text & vbCrLf & _
  "en sa 3ème colonne (celle que l'on a cachée) " & ListView1.ListItems(toto).SubItems(3)
End Sub

Il est plus que "parlant".
Je n'ai pas voulu te faire tout ton code, mais te frocer, à partir de ce petit exercice, à analyser, comprendre, puis utiliser comme il convient.
Bonne étude.




________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
laurentnove
26 oct. 2012 à 14:51
Merci du temps que me consacre !

Je souhaiterais échanger avec toi pour être sur que je comprends bien !
Je note et suis entièrement d'accord le fait que tu préfère échanger et me faire réfléchir plutôt que me digérer un code déjà fonctionnel !
Cette méthode de faire me plait d'autant plus que le jour ou le programme beugue j'aurai la connaissance nécessaire pour adapter et dépanner !

Ce que je comprend c'est que tu initialise un userform dans lequel se trouve une listview qui est alimentée par un random (fonction que je ne connais pas trop).
Ensuite tu ajoute des items en fonction du résultat de ta division donné par Mod.
Je retrouve bien le " ListView1.ColumnHeaders.Add , , "", 0" qui est si je ne me trompe pas la colonne masquée avec mon fameux cel.row.

Par contre là ou les choses se gâtent c'est sur la deuxième partie et c'est d'autant plus embêtant que je comprends très bien que c'est la partie qui m'intéresse !
Je ne vois pas comment le programme fait le lien entre les lignes d'une base et les items d'un listview!

En tout cas laisse moi te dire que ta méthode me convient parfaitement, elle favorise la pédagogie et limite au maximum l'assistanat qui d’après moi tue la connaissance !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 oct. 2012 à 15:08
Tu passes allègrement à côté de l'essentiel !
Le randomize et le mod ne sont dans cet exemple que pour remplir une listview. On aurait pu la remplir de n'importe quoi d'autre et de n'importe quelle autre manière.
L'essentiel est :
- le remplissage lui-même, y comris et surtout celui de la 3ème colonne (la colonne cachée). Par ceci ou par cela, peut importe ! On la remplit de la donnée qui nous intéresse. Tu ne vois pas que celle qui, à toi, t'intéresse, c'est le rang réel dans ta base ? Cel.Row, non ?
- la lecture lors de la sélection d'une ligne. Et que lit-on donc en 3ème colonne si l'on y a mis la valeur de Cel.row ?? hein ???
Je ne vois pas comment le programme fait le lien entre les lignes d'une base et les items d'un listview!

A toi de jouer ! Relis ce que je viens de te dire : tu y as ta réponse...
Si tu ne l'y vois pas, je te laisse bien évidemment pile là.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
laurentnove
26 oct. 2012 à 15:48
En effet le remplissage de la troisième colonne correspondrait chez moi au cel.row qui me renvoi le numéro de ligne dans la base !
Ce qui correspond dans ton code à cette ligne :
itmX.SubItems(3) = "20000117"


Par contre après je commence à comprendre ensuite la gestion du click !
Tu déclare une variable toto surement en Public dans un module standard pour qu'elle soit vu de tous les modules et surtout utilisable dans ceux ci. Non ?

Tu associe cette variable à l'index de l'item de ta listview qui correspond comme de par hasard à celui de la ligne de la Base. Non ?
Et cela avec ceci :
toto = ListView1.ListItems(Item.Index).Index

C'est juste ou je me plante ?

Par contre si mon raisonnement commence à être bon, ce qui me tracasse dans un premier temps : Est ce que je peux ajouter macolone caché uniquement dans le module de recherche ou suis je obligé de l'initialiser en même temps que le listview ?

et dans un second temps ! La syntaxe pour coder cela !
Je ne peux pas faire de "listview1.listitem.SubItems(13) = cel.row" dans mon code, il le refuse ! l'erreur membre de liste ou de données introuvable sur le "listitem".

Je pense avoir compris la philosophie du code en tout cas dans sa généralité, il me reste à trouver la syntaxe.
0
laurentnove
26 oct. 2012 à 15:57
Autant pour moi, j'ai trouvé la syntaxe pour faire apparaitre mon cel.row dans la listview ! Dans un premier temps je n'ai pas caché la colonne pour voir les erreurs éventuelles !

Ils suffit juste de ne pas le mettre en dernière colonne, je ne sais pas pourquoi il n’apprécie pas et ne l'affiche pas mais si je le place au milieu sa marche !
Ne reste plus qu'à trouver la syntaxe pour lire cette colonne et l'associer à l'index de la listview !

Je me rapproche petit à petit du but grâce à tes conseils en comprenant ce que je fais ! Si ce n'est pas de la pédagogie ça Monsieur je ne m'y connais pas !
0
laurentnove
29 oct. 2012 à 08:46
Bon lundi,

J'espère que vous avez passé un bon week end.

Concernant mon projet j'ai passé une grande partie du week end dessus et impossible de solutionner mon problème, j'en suis toujours au même point.

J'arrive à faire afficher le cel.row dans ma listview mais impossible pour moi de trouver la syntaxe qui me permet de gérer le double clic sur celle ci.

L'échéance de mon projet arrive à grand pas et j'ai peur de devoir rendre un programme à moitié terminé.

Je vous demande donc de me consacrer encore un peu de temps si cela ne vous dérange pas afin de me permettre de comprendre la syntaxe qu'il faut à mon programme.

Je vous remercie par avance.
0
Rejoignez-nous