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 Then

Bonjour

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.

Rechercher des sujets similaires à "erreur compilation qualificateur incorrect"