Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Bug Erreur !!!Type défini par l'utilisateur non défini

chich

XLDnaute Occasionnel
Bonjour
Dans un de mes userform j'ai cet deux lignes
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
qui génére l'erreur "Type défini par l'utilisateur non défini" si vous avez une solution SVP merci

voici le code
Private Declare Function FindWindowA& Lib "User32" (ByVal lpClassName$, ByVal lpWindowName$)
Private Declare Function EnableWindow& Lib "User32" (ByVal hWnd&, ByVal bEnable&)
Private Declare Function GetWindowLongA& Lib "User32" (ByVal hWnd&, ByVal nIndex&)
Private Declare Function SetWindowLongA& Lib "User32" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)
Option Compare Text
Option Explicit

Dim Mem_Code_Art

Private Sub Ajouter_Click()
Dim derligne As Integer
If MsgBox("confirmez-vous l'ajout des données?", vbYesNo, "confirmation") = vbYes Then
derligne = Sheets("Feuil3").Range("A456541").End(xlUp).Row + 1
Cells(derligne, 1) = TextBox12.Value
Cells(derligne, 2) = TextBox2.Value
Cells(derligne, 3) = TextBox3.Value
Cells(derligne, 4) = TextBox4.Value
Cells(derligne, 5) = TextBox5.Value
Cells(derligne, 6) = TextBox6.Value
Cells(derligne, 7) = TextBox7.Value
Cells(derligne, 8) = TextBox8.Value
Cells(derligne, 9) = TextBox9.Value
Cells(derligne, 10) = TextBox10.Value

Call Majour_Lvw
End If

End Sub

Private Sub CommandButton1_Click()
Unload Userform51
End Sub

Private Sub Majour_Lsvw_Click()

Call Majour_Lvw
End Sub

Private Sub Supprimer_Click()
Dim cel As Range, lig&, I&, rep, Nb

Nb = Application.CountIf(Columns(1), Mem_Code_Art)
If Nb > 0 Then
lig = 2
lig = Columns(1).Find(Mem_Code_Art, Cells(lig, 1), , xlWhole).Row
rep = MsgBox("ATTENTION Vous allez Supprimer la ligne, action Irréversible", vbCritical + vbYesNo, "Suppression")
If rep = vbNo Then Exit Sub
With Feuil3

.Rows(lig).Delete
End With

Call Majour_Lvw
Else
MsgBox " xxxxxxx n'existe pas !!!!!!!!!!!!!!!!!!!"
End If

End Sub

Private Sub Modifier_Click()
Dim Nb, lig As Long, ligLst As Long, J

If Me.ListView1.SelectedItem.Index > 0 Then

Nb = Application.CountIf(Columns(1), Mem_Code_Art)
If Nb > 0 Then
lig = 2
lig = Columns(1).Find(Mem_Code_Art, Cells(lig, 1), , xlWhole).Row

Cells(lig, 1) = TextBox12
TextBox12.Value = ""
For J = 2 To 10
Cells(lig, J).Value = Me.Controls("TextBox" & J)
Me.Controls("TextBox" & J) = ""
Next J
Call Majour_Lvw
End If
End If

End Sub

Private Sub TextBox8_Change()
If TextBox8 = "xxxxxxxx" Then
TextBox12.ForeColor = vbRed
TextBox2.ForeColor = vbRed
TextBox3.ForeColor = vbRed
TextBox4.ForeColor = vbRed
TextBox5.ForeColor = vbRed
TextBox6.ForeColor = vbRed
TextBox7.ForeColor = vbRed
TextBox8.ForeColor = vbRed
TextBox9.ForeColor = vbRed
TextBox10.ForeColor = vbRed
Else
TextBox12.ForeColor = vbBlack
TextBox2.ForeColor = vbBlack
TextBox3.ForeColor = vbBlack
TextBox4.ForeColor = vbBlack
TextBox5.ForeColor = vbBlack
TextBox6.ForeColor = vbBlack
TextBox7.ForeColor = vbBlack
TextBox8.ForeColor = vbBlack
TextBox9.ForeColor = vbBlack
TextBox10.ForeColor = vbBlack
End If
End Sub

Private Sub TextBox1_Change()
Dim I As Long
Dim c As Range

ListView1.ListItems.Clear
If TextBox1 <> "" Then
With Sheets("Feuil3")
I = 2
Do
For Each c In .Range(.Cells(I, 1), .Cells(I, 10))
If UCase(CStr(c.Value)) = UCase(TextBox1.Value) Or InStr(CStr(c), TextBox1) > 0 Then
IniLvw12 c.Row
Exit For
End If
Next c
I = I + 1
Loop While .Cells(I, 1) <> ""
End With
Else
Me.TextBox2 = ""
Me.TextBox3 = ""
Me.TextBox4 = ""
Me.TextBox5 = ""
Me.TextBox6 = ""
Me.TextBox7 = ""
Me.TextBox8 = ""
Me.TextBox9 = ""
Me.TextBox10 = ""
Me.TextBox12 = ""
Call Majour_Lvw
End If
End Sub

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
ListView1.Sorted = False
ListView1.SortKey = ColumnHeader.Index - 1
If ListView1.SortOrder = lvwAscending Then
ListView1.SortOrder = lvwDescending
Else
ListView1.SortOrder = lvwAscending
End If
ListView1.Sorted = True

End Sub

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim I As Integer
Dim J As Integer

Dim x
I = Me.ListView1.SelectedItem.Index
TextBox12 = ListView1.ListItems(I)
Mem_Code_Art = TextBox12.Value
For J = 1 To Me.ListView1.ColumnHeaders.Count - 1
Me.Controls("Textbox" & J + 1) = ListView1.ListItems(I).ListSubItems(J).Text
Next J

End Sub

Sub IniLvw12(a As Long)
Dim x
Dim I
Dim J
Dim c
With ListView1
.ListItems.Add , , Sheets("Feuil3").Cells(a, 1)
For I = 1 To 9
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Feuil3").Cells(a, I + 1)
Next
.ListItems(.ListItems.Count).ListSubItems.Add , , a
For I = 1 To .ListItems.Count
If .ListItems(I) = TextBox1 Then .ListItems(I).Bold = True
For J = 1 To .ColumnHeaders.Count - 1
If .ListItems(I).ListSubItems(7).Text = "xxxxxxxx" Then
.ListItems(I).Bold = True
.ListItems(I).ForeColor = vbRed
For c = 1 To .ColumnHeaders.Count
.ListItems(I).ListSubItems(c).Bold = True
.ListItems(I).ListSubItems(c).ForeColor = vbRed
Next c
End If
Next J
Next I
End With
End Sub

Private Sub UserForm_Activate()
EnableWindow FindWindowA("XLMAIN", Application.Caption), 1
End Sub

Private Sub UserForm_Initialize()
Dim hWnd As Long
Dim ligne

hWnd = FindWindowA(vbNullString, Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000
With Me.ListView1
With .ColumnHeaders
.Clear
.Add , , "xxxxxxxx", 138, lvwColumnLeft
.Add , , "xxxxxxx", 70, lvwColumnCenter
.Add , , "xxxxx", 73, lvwColumnCenter
.Add , , "xxxxx", 42, lvwColumnCenter
.Add , , "xxxxxxxxx", 138, lvwColumnCenter
.Add , , "xxxxxxx", 77, lvwColumnCenter
.Add , , "xxxxxxxx", 110, lvwColumnCenter
.Add , , "xxxxxxxxxxx", 115, lvwColumnCenter
.Add , , "xxxx", 30, lvwColumnCenter
.Add , , "xxxxx", 50, lvwColumnCenter
End With
ligne = 1
.Gridlines = True
.View = lvwReport
.FullRowSelect = True
End With
End Sub

Sub Majour_Lvw()
Dim Nbl As Long, I As Long, J As Long, c As Range

ListView1.ListItems.Clear

With Sheets("Feuil3")
I = 2
J = .Range("A456541").End(xlUp).Row
For Each c In .Range("A2:A" & .Range("A456541").End(xlUp).Row)
Call IniLvw_Maj(c.Row)
Next c
End With
End Sub

Sub IniLvw_Maj(a As Long)
Dim x
Dim I
Dim J
Dim c

With ListView1
.ListItems.Add , , Sheets("Feuil3").Cells(a, 1)
For I = 1 To 9
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Feuil3").Cells(a, I + 1)
Next
.ListItems(.ListItems.Count).ListSubItems.Add , , a
For I = 1 To .ListItems.Count
If .ListItems(I) = TextBox1 Then .ListItems(I).Bold = True
For J = 1 To .ColumnHeaders.Count - 1
If .ListItems(I).ListSubItems(7).Text = "xxxxxxxx" Then
.ListItems(I).Bold = True
.ListItems(I).ForeColor = vbRed
For c = 1 To .ColumnHeaders.Count
.ListItems(I).ListSubItems(c).Bold = True
.ListItems(I).ListSubItems(c).ForeColor = vbRed
Next c
End If
Next J
Next I
End With

End Sub
 

ChTi160

XLDnaute Barbatruc
Bonjour chich
Bonjour Roland , le Forum
Problème de Référence non cochée dans Outils/Références
As tu déjà utilisé des ListView dans tes projets ?
vois l'image de mes Références cochées dans un fichier où j'utilise des ListView
surtout la dernière Lol
Dans l'attente
jean marie
 

Pièces jointes

  • ListView reference.jpg
    24.4 KB · Affichages: 170
Dernière édition:

chich

XLDnaute Occasionnel

Re
c'est mon premier projet avec listview
voici les references chez moi je n'ai pas les tienne
 

Pièces jointes

  • VBA REF.GIF
    12.2 KB · Affichages: 81

ChTi160

XLDnaute Barbatruc
Bonjour chich
Bonjour le Fil (Roland) , le Forum
Je pense donc que tu as une référence qui n'est ou , pas cochée ou pas présente .
voir sur le Forum et faire une recherche sur cette référence MscomctlLib(.ocx)
à moins que Roland ait la réponse à ton problème , s'il faut installer le MscomctlLib(.ocx)
il y a sur le site des Tutos sur l’installation de ce Composant (si pas présent sur ta machine)
Bonne continuation
Jean marie
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour,

As MSComctlLib.ColumnHeader et As MSComctlLib.ListItem n'existent pas comme types.
Essaie avec As MSComctlLib et récupère ses propriétés dans la fonction.
Sinon essaie avec As String et au moment de l'appel tu lui passes MSComctlLib.ListItem et non MSComctlLib
eric
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Si ça existe. C'est défini par la MSComctlLib dont la référence "Microsoft Windows Common Controls 6.0 (SP6)" n'est visiblement pas cochée. (voire pas disponible: ce contrôle ListView posant régulièrement des problèmes de portabilité)
 

Dranreb

XLDnaute Barbatruc
Se rabattre sur une ListBox.
Il y a à mon avis de grandes chances que même avec le bouton Parcourir… vous ne trouverez nulle part le fichier MSCOMCTL.OCX
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
J'ai eu un peu de mal aussi à l'avoir dans la liste en essayant Parcourir… parce que je n'ai pas tout de suite vu qu'il ne cherchait que dans les .old, .tlb et .dll. En prenant Tout les fichiers (*.*) ou mieux Contrôles ActiveX(*.ocx) on l'à …s'il y est.
 

Roland_M

XLDnaute Barbatruc
bonjour à tous,

Perso j'ai supprimé tous les listview avec des listbox il y a toujours un moyen de remplacer listview
pour cela il faut revoir sa stratégie pour arriver à ce que l'on souhaite, listview c'est mort !

Sinon j'ai ces fichiers avec la méthode d'install mais le classeur ne tounera pas forcément sur un autre pc !
Je vais essayer de retrouver tout ça au cas ou tu les voudrais !?

Maintenant si tu as déjà ces fichiers et que tu ne les trouves pas dans les références,
bizarrement j'ai eu ce même problème,
voici la manipulation que j'ai faite à l'époque et qui a fonctionnée
(je viens de refaire cette manip est ça a fonctionné car j'ai les fichiers)

donc tu peux toujours essayer:
Insérer un Userform et cliquer sur Boite à Outils et faire clic droit dessus
pour contrôles supplémentaires, et dans la liste des Contrôles chercher et cocher:
[x] Microsoft ListView control 6(SP6)

Normalement une fois ces contrôles collés sur l'userf on doit voir les références apparaîtres
Dans Outils... Références... (perso j'avais ceci avec mes fichiers installés)
[x] Microsoft Calendar 9
[x] Microsoft Windows Controls 6.0(SP6)

. . cocher aussi la référence
[x] Microsoft Visual Basic for Applications extensibility 5.3

bizarrement les références apparaissent après avoir collé les contrôles et sont même cochées !
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
449
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…