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.
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...
Puis vlan ! Un message d'erreur sauvage apparait.
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
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 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 macro plante sur le For i = 2. Je récupère les bonnes valeurs pourtant
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
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 !
Partager