Bien le bonjour a tous,
Finalement, mon silence n'auras pas duré longtemps, j'ai essayé de me sortir de pas mal de situation jusque la, mais je bloque sévère sur quelque chose de mystérieux.

Pour l'histoire, je suis en train de me coder une gestion de stock qui est pas mal abouti maintenant, (cela va peut être en intéresser ici éventuellement, je vais essayer de répondre a vos questions si jamais), et ces derniers soirs je codais deux macros :
  • Une qui filtre des 'purchase order' suivant leur numéros.
  • Et une deuxième qui me permet d'effacer des lignes d'articles.



La première fonctionne a merveille, tout est beau, aucune erreur.
Je code la deuxieme, tout fonctionne a merveille, aucune erreur.

Je re essaye la premiere dans la foulée, et bam, poteau télégraphique en pleine face mes amis. Un beau message d'erreur apparait.

Je vous fais des captures d'écrans pour que vous vous fassiez une idée de mon bousin, suivi du message d'erreur.

Je sélectionne A23034 dans ma combobox pour filtrer le contenu de ma listview, ca fonctionne. Youpi.
Nom : Capture d’écran 2023-04-12 212554.jpg
Affichages : 185
Taille : 31,1 Ko

Je sélectionne ma ligne que je veux effacer, je presse frénétiquement le bouton effacer, ca fonctionne. La ligne est effectivement effacée dans mon tableau...
Nom : Capture d’écran 2023-04-12 212758.jpg
Affichages : 182
Taille : 82,6 Ko

Puis vlan ! Un message d'erreur sauvage apparait.
Nom : Capture d’écran 2023-04-12 213053.jpg
Affichages : 181
Taille : 13,1 Ko

J'ai essayé de tourner le problème dans tout les sens pour savoir pourquoi cette erreur maintenant, j'ai rien trouvé jusque là.
Ensuite, j'ai réécris la ligne manuellement dans mon tableau, histoire de voir si l'erreur persiste.
Et bah non, l'erreur disparait ! Ca filtre de nouveau correctement.
Je suis un vicieux, je re execute ma macro pour effacer la ligne, et re nouveau erreur.

Je seche literalement sur le pourquoi. Avez vous été confronté a ceci aussi ? Avez vous une piste d'exploration a me proposer ?

Je vous met aussi les codes VBA de mes deux macros, cela pourrais nous aider ensemble a comprendre le pourquoi.

La premiere qui permet d'effacer la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Private Sub CommandButton8_Click()  'effacer article
    If MsgBox("Confirmez vous la suppression ?" & vbNewLine & "Fortement déconseillé, inactivez l'article de préférence.", vbYesNo + vbCritical + vbDefaultButton2, "ATTENTION : Action définitive") = vbYes Then
        Set zone = Feuil3.Columns("A").Find(ListView1.SelectedItem, LookIn:=xlValues, lookat:=xlPart)
        If Not zone Is Nothing Then
            Call secu_visi(Feuil3, False, False) 'feuille, proteger Y/N, visibilité Y/N
            zone.EntireRow.Delete
            Call secu_visi(Feuil3, True, False) 'feuille, proteger Y/N, visibilité Y/N
        End If
    End If
    ThisWorkbook.Save
    UserForm_Initialize
End Sub
la deuxieme qui me permet de filtrer ma listview selon les infos de ma combobox
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
 
Sub filtrer()
    Dim couleur As Variant, plage As Variant
    plage = Feuil3.Range("A1:N" & Feuil3.Range("A65000").End(xlUp).Row).Value
    With ListView1
        .ListItems.Clear
        For i = 2 To UBound(plage, 2)
            If plage(i, 14) = "Open" Then
                couleur = RGB(255, 0, 0)
            Else
                couleur = RGB(0, 0, 255)
            End If
            If CStr(plage(i, 2)) = ComboBox3 Then
                .ListItems.Add , , plage(i, 1)
                ligne = .ListItems.Count
                .ListItems(ligne).ListSubItems.Add , , plage(i, 2)
                .ListItems(ligne).ForeColor = couleur
                .ListItems(ligne).ListSubItems.Add , , plage(i, 3)
                .ListItems(ligne).ListSubItems.Add , , plage(i, 5)
                .ListItems(ligne).ListSubItems.Add , , plage(i, 6)
                .ListItems(ligne).ListSubItems.Add , , Format(plage(i, 8), "####.00")
                '.ListItems(ligne).ForeColor = couleur
            End If
        Next i
    End With
End Sub
La macro plante sur le For i = 2. Je récupère les bonnes valeurs pourtant

J'ai essayé d'être le plus précis possible dans ma requête, en esperant vous aider a mieux comprendre mon probleme.

Bien a vous !