Erreur de compilation Qualificateur incorrect
Bonjour,
je rencontre un probème sur le quelle je tourne en rond depuis des heures..
je vous expliques, je souhaite faire clignoter les lignes entieres de ma ListView auquel il n'y a aucune donnée dans la cellule de la colonne G avec la fonction flashrow et du coup j'ai une Erreur de compilation Qualificateur incorrect
je ne trouve pas comment régler ce problème
voici le code et le fichier excel
merci par avance :)
Dim flashingRowIndex As Long
Dim flashColor As Long
Private Sub UserForm_Initialize()
LoadDataToListView
flashingRowIndex = -1 ' Initialisation de l'index de ligne clignotante
flashColor = RGB(255, 165, 0) ' Couleur orange
StartFlashing ' Démarrer le clignotement
End Sub
Private Sub LoadDataToListView()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("BD") '
ListView1.View = lvwReport ' Définir la vue du ListView sur "Report"
ListView1.ColumnHeaders.Clear ' Effacer les en-têtes existants
' Ajouter les en-têtes de colonne
Dim headerRange As Range
Set headerRange = ws.Range("A1:I1") ' Colonne A à I pour les en-têtes
Dim headerCell As Range
For Each headerCell In headerRange.Cells
ListView1.ColumnHeaders.Add , , headerCell.Value ' Ajouter en-tête de colonne
Next headerCell
' Charger les données à partir de la ligne 2
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim dataRange As Range
Set dataRange = ws.Range("A2:I" & lastRow) ' Plage des données
Dim dataRow As Range
For Each dataRow In dataRange.Rows
Dim newItem As MSComctlLib.ListItem
Set newItem = ListView1.ListItems.Add(, , dataRow.Cells(1, 1).Value) ' Colonne A
For i = 2 To dataRange.Columns.Count
newItem.ListSubItems.Add , , dataRow.Cells(1, i).Value ' Colonnes B à I
Next i
Next dataRow
End Sub
Private Sub StartFlashing()
flashingRowIndex = 1 ' Commencer par la première ligne
FlashRow
End Sub
Private Sub FlashRow()
If flashingRowIndex >= 0 And flashingRowIndex <= ListView1.ListItems.Count Then
If ListView1.ListItems(flashingRowIndex).SubItems(6).Text <> "" Then
If ListView1.ListItems(flashingRowIndex).BackColor = vbWhite Then
ListView1.ListItems(flashingRowIndex).BackColor = flashColor
Else
ListView1.ListItems(flashingRowIndex).BackColor = vbWhite
End If
Else
ListView1.ListItems(flashingRowIndex).BackColor = vbWhite
End If
flashingRowIndex = flashingRowIndex + 1
If flashingRowIndex > ListView1.ListItems.Count Then
flashingRowIndex = 1
End If
Application.OnTime Now + TimeValue("00:00:01"), "FlashRow" ' Appeler FlashRow après une seconde
End If
End Sub
Private Sub UserForm_Terminate()
flashingRowIndex = -1 ' Arrêter le clignotement lorsque le UserForm est fermé
End Sub
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
flashingRowIndex = Item.Index ' Arrêter le clignotement lorsque l'utilisateur clique sur une ligne
ListView1.ListItems(flashingRowIndex).BackColor = vbWhite
TextBoxNoCommande.Value = Item.Text ' Colonne A (NoCommande)
TextBoxContremarque.Value = Item.ListSubItems(1).Text ' Colonne B (Contremarque)
TextBoxProduit.Value = Item.ListSubItems(2).Text ' Colonne C (Produit)
TextBoxFabricant.Value = Item.ListSubItems(3).Text ' Colonne D (Fabricant)
TextBoxDelaiConfirme.Value = Item.ListSubItems(4).Text ' Colonne E (DelaiConfirme)
TextBoxNoConfirmation.Value = Item.ListSubItems(5).Text ' Colonne F (NoConfirmation)
TextBoxDateEntreeStock.Value = Item.ListSubItems(6).Text ' Colonne G (DateEntreeStock)
TextBoxNoFacture.Value = Item.ListSubItems(7).Text ' Colonne H (NoFacture)
TextBoxDateFacture.Value = Item.ListSubItems(8).Text ' Colonne I (DateFacture)
End Sub
Private Sub ClearTextBoxes()
TextBoxNoCommande.Value = ""
TextBoxContremarque.Value = ""
TextBoxProduit.Value = ""
TextBoxFabricant.Value = ""
TextBoxDelaiConfirme.Value = ""
TextBoxNoConfirmation.Value = ""
TextBoxDateEntreeStock.Value = ""
TextBoxNoFacture.Value = ""
TextBoxDateFacture.Value = ""
End Sub
Private Sub CommandButtonAjouterModifier_Click()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("BD") ' Remplace "BD" par le nom réel de ta feuille
Dim rechercheContremarque As Range
Dim ligneTrouvee As Long
Dim derniereLigne As Long
derniereLigne = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row ' Colonne B pour "Contremarque"
' Chercher si la Contremarque existe déjà dans le tableau
Set rechercheContremarque = ws.Range("B2:B" & derniereLigne).Find(TextBoxContremarque.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not rechercheContremarque Is Nothing Then
' Si la Contremarque existe, mettre à jour la ligne correspondante
ligneTrouvee = rechercheContremarque.Row
ws.Cells(ligneTrouvee, 1).Value = TextBoxNoCommande.Value
ws.Cells(ligneTrouvee, 3).Value = TextBoxProduit.Value
ws.Cells(ligneTrouvee, 4).Value = TextBoxFabricant.Value
ws.Cells(ligneTrouvee, 5).Value = TextBoxDelaiConfirme.Value
ws.Cells(ligneTrouvee, 6).Value = TextBoxNoConfirmation.Value
ws.Cells(ligneTrouvee, 7).Value = TextBoxDateEntreeStock.Value
ws.Cells(ligneTrouvee, 8).Value = TextBoxNoFacture.Value
ws.Cells(ligneTrouvee, 9).Value = TextBoxDateFacture.Value
Else
' Si la Contremarque n'existe pas, ajouter une nouvelle ligne à la fin du tableau
derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ligneTrouvee = derniereLigne + 1
ws.Cells(ligneTrouvee, 1).Value = TextBoxNoCommande.Value
ws.Cells(ligneTrouvee, 2).Value = TextBoxContremarque.Value
ws.Cells(ligneTrouvee, 3).Value = TextBoxProduit.Value
ws.Cells(ligneTrouvee, 4).Value = TextBoxFabricant.Value
ws.Cells(ligneTrouvee, 5).Value = TextBoxDelaiConfirme.Value
ws.Cells(ligneTrouvee, 6).Value = TextBoxNoConfirmation.Value
ws.Cells(ligneTrouvee, 7).Value = TextBoxDateEntreeStock.Value
ws.Cells(ligneTrouvee, 8).Value = TextBoxNoFacture.Value
ws.Cells(ligneTrouvee, 9).Value = TextBoxDateFacture.Value
End If
Unload Me
End Sub
bonjour,
backcolor ne semble pas être une propriété de listitems
subitems, il me semble que cela devrait être listsubitems
If flashingRowIndex >= 0 And flashingRowIndex <= ListView1.ListItems.Count Then
If ListView1.ListItems(flashingRowIndex).SubItems(6).Text <> "" Then
If ListView1.ListItems(flashingRowIndex).Backcolor = vbWhite ThenBonjour
Merci de ta réponse mais j'ai deja essayer et sans succé ...
jespere que quelqu'un poura trouvé
bonjour,
je me demande ce que tu as essayé.
Si tu essaies d'utiliser une propriété qui n'existe pas pour un objet, c'est normal que tu reçoives un message d'erreur. Si tu remplaces subitems par listsubitems et si tu remplaces backcolor par forecolor (propriétés qui existent bien pour ces objets) tu n'as plus d'erreur de compilation.