Listview, VBA, Excel

Résolu
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 - 1 juil. 2012 à 23:37
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 -
Bonjour,

Après avoir passé la journée au complet là-dessus, je ne trouve toujours pas.
C'est un code qui fonctionne normalement (dans d'autres usf) et même qu'il a fonctionné une fois ou deux et maintenant il ne veut plus.. Je n'y comprend rien.

les entêtes de colonnes appraissent dans ma listview et le quadrillage se met mais les données ne viennent pas.. Quelqu'un à une idée de ce qui cloche svp?
Je ne vous met que le code pour l'instant mais si vous avez besoin du fichier, juste à me le dire!

Le but est de dire si : Avec ma feuille infos, si la données de la première colonne de ma feuille info est égale à ma tbox_lot1 et que (avec ma feuille infos )si la données de la colonne 4 est égale à ce qui se trouve SOIT dans ma tbox54 OU tbox56 alors je fais venir la ligne (pas au complet)dans ma listview...

Voici mon code

Private Sub Cmd1_click() ' lot, emplir Listview

Dim x
Dim i As Byte
Dim sh As Worksheet


With ListView1: .Gridlines = True: .View = 3: .FullRowSelect = True
With .ColumnHeaders
.Clear
Set sh = Worksheets("infos")

.Add , , sh.Cells(3, 4).Value, 50
.Add , , "Sel/M", 42
.Add , , "%", 35
.Add , , " Prix Sel/M", 48
.Add , , "1Com", 42
.Add , , "%", 35
.Add , , " Prix 1Com", 48
.Add , , "2Com", 42
.Add , , "%", 35
.Add , , " Prix 2Com", 48
.Add , , "3Com", 42
.Add , , "%", 35
.Add , , " Prix 3Com", 48
.Add , , "3B", 42
.Add , , "%", 35
.Add , , " Prix 3B", 48
.Add , , "Pal", 42
.Add , , "%", 35
.Add , , " Prix Pal", 48
.Add , , "Autre", 42
.Add , , "%", 35
.Add , , " Prix Autre", 48
End With

Set sh = Worksheets("infos")

For Each x In sh.Range("A6:A" & Cells(Rows.Count, 1).End(xlUp).Row)
' Va trouver le lot demandé dans textbox3
If x.Value = TBox_Lot1.Value And Cells(x.Row, 4).Value = TextBox54.Value Or Cells(x.Row, 4).Value = TextBox56.Value Then

Set sh = Worksheets("infos")

With .listitems
.Add , , sh.Cells(x.Row, 4)
End With

With .listitems(.listitems.Count).ListSubItems

.Add , , sh.Cells(x.Row, 11) + sh.Cells(x.Row, 14) + sh.Cells(x.Row, 17) + sh.Cells(x.Row, 20) + sh.Cells(x.Row, 23) ' grade Sel/m
.Add , , sh.Cells(x.Row, 12) + sh.Cells(x.Row, 15) + sh.Cells(x.Row, 18) + sh.Cells(x.Row, 21) + sh.Cells(x.Row, 24) ' % Sel/m
If sh.Cells(x.Row, 11) + sh.Cells(x.Row, 14) + sh.Cells(x.Row, 17) + sh.Cells(x.Row, 20) + sh.Cells(x.Row, 23) > 0 Then
.Add , , sh.Cells(x.Row, 13) + sh.Cells(x.Row, 16) + sh.Cells(x.Row, 19) + sh.Cells(x.Row, 22) + sh.Cells(x.Row, 25) + sh.Cells(x.Row, 89) ' prix Sel/m
Else: .Add , , sh.Cells(x.Row, 13) + sh.Cells(x.Row, 16) + sh.Cells(x.Row, 19) + sh.Cells(x.Row, 22) + sh.Cells(x.Row, 25)
End If
.Add , , sh.Cells(x.Row, 26) + sh.Cells(x.Row, 29) + sh.Cells(x.Row, 32) + sh.Cells(x.Row, 35) + sh.Cells(x.Row, 38) ' grade 1com
.Add , , sh.Cells(x.Row, 27) + sh.Cells(x.Row, 30) + sh.Cells(x.Row, 33) + sh.Cells(x.Row, 36) + sh.Cells(x.Row, 39) ' % 1com
If sh.Cells(x.Row, 26) + sh.Cells(x.Row, 29) + sh.Cells(x.Row, 32) + sh.Cells(x.Row, 35) + sh.Cells(x.Row, 38) > 0 Then
.Add , , sh.Cells(x.Row, 28) + sh.Cells(x.Row, 31) + sh.Cells(x.Row, 34) + sh.Cells(x.Row, 37) + sh.Cells(x.Row, 40) + sh.Cells(x.Row, 89) ' prix 1com
Else: .Add , , sh.Cells(x.Row, 28) + sh.Cells(x.Row, 31) + sh.Cells(x.Row, 34) + sh.Cells(x.Row, 37) + sh.Cells(x.Row, 40)
End If
.Add , , sh.Cells(x.Row, 41) + sh.Cells(x.Row, 44) + sh.Cells(x.Row, 47) ' grade 2 com
.Add , , sh.Cells(x.Row, 42) + sh.Cells(x.Row, 45) + sh.Cells(x.Row, 48) ' % 2 com
If sh.Cells(x.Row, 41) + sh.Cells(x.Row, 44) + sh.Cells(x.Row, 47) > 0 Then
.Add , , sh.Cells(x.Row, 43) + sh.Cells(x.Row, 46) + sh.Cells(x.Row, 49) + sh.Cells(x.Row, 89) ' prix 2 com
Else: .Add , , sh.Cells(x.Row, 43) + sh.Cells(x.Row, 46) + sh.Cells(x.Row, 49)
End If
.Add , , sh.Cells(x.Row, 50) + sh.Cells(x.Row, 53) + sh.Cells(x.Row, 56) ' grade 3 com
.Add , , sh.Cells(x.Row, 51) + sh.Cells(x.Row, 54) + sh.Cells(x.Row, 57) ' % 3 com
If sh.Cells(x.Row, 50) + sh.Cells(x.Row, 53) + sh.Cells(x.Row, 56) > 0 Then
.Add , , sh.Cells(x.Row, 52) + sh.Cells(x.Row, 55) + sh.Cells(x.Row, 58) + sh.Cells(x.Row, 89) ' prix 3 com
Else: .Add , , sh.Cells(x.Row, 52) + sh.Cells(x.Row, 55) + sh.Cells(x.Row, 58)
End If
.Add , , sh.Cells(x.Row, 59) ' grade 3B com
.Add , , sh.Cells(x.Row, 60) ' % 3B com
If sh.Cells(x.Row, 59) > 0 Then
.Add , , sh.Cells(x.Row, 61) + sh.Cells(x.Row, 89) ' prix 3B com
Else: .Add , , sh.Cells(x.Row, 61)
End If
.Add , , sh.Cells(x.Row, 62) ' grade pal
.Add , , sh.Cells(x.Row, 63) ' % pal
.Add , , sh.Cells(x.Row, 64) ' prix pal
.Add , , sh.Cells(x.Row, 65) + sh.Cells(x.Row, 68) + sh.Cells(x.Row, 71) + sh.Cells(x.Row, 74) + sh.Cells(x.Row, 77) + sh.Cells(x.Row, 80) ' grade autre
.Add , , sh.Cells(x.Row, 66) + sh.Cells(x.Row, 69) + sh.Cells(x.Row, 72) + sh.Cells(x.Row, 75) + sh.Cells(x.Row, 78) + sh.Cells(x.Row, 81) ' % autre
.Add , , sh.Cells(x.Row, 67) + sh.Cells(x.Row, 70) + sh.Cells(x.Row, 73) + sh.Cells(x.Row, 76) + sh.Cells(x.Row, 79) + sh.Cells(x.Row, 82) ' prix autre

End With


End If
Next
End With


End Sub

merci beaucoup à l'avance
Mélanie
A voir également:

8 réponses

Le Pingou Messages postés 12249 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 juin 2025 1 458
2 juil. 2012 à 13:45
Bonjour,
Suite au message d'eriiic (Salutations), je pense que si vous corrigez les formules
Cells(x.Row, 4).Value
en
sh.Cells(x.Row, 4).Value   
cela devrait marcher ... !
1
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 273
1 juil. 2012 à 23:44
Bonsoir,

Je ne vous met que le code pour l'instant mais si vous avez besoin du fichier, juste à me le dire!
A ton avis ?

eric
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
1 juil. 2012 à 23:56
Bonjour Eriic



Voici le lien pour le fichier, mon problème est dans mon usf Livraison sec

https://www.cjoint.com/?3Gbx2N0shSI

merci à l'avance
Mélanie
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 273
2 juil. 2012 à 00:07
merci à l'avance
Ben de rien.
Aucune explication sur comment utiliser le fichier, quel bouton cliquer pour se retrouver en situation etc.
Je n'ai pas à passer 1h pour deviner les explications que tu ne fournis pas, désolé.
Donc j'arrête là et je laisse la place aux autres.

eric
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
2 juil. 2012 à 00:17
Bonjour Éric,

Désolé, je suis trop ''dedans'' , tu as raison, ce n'étais pas très évident. merci d'avoir regardé.
Voici donc les instructions. Dans la feuille Bouton, Cliquer sur Livraison Sec
Ensuite quand le usf s'ouvre, il faut mettre une donnée dans le bon de livraison (un nombre ex:1)
Ensuite dans le bas le premier Tbox Lot, il faut mettre : Cym-58 (le C doit être en majuscule)
Puis appuyer sur le bouton au bout le la ligne... Et là normalement les données de la feuille info correspondant au lot Cym-58 et que le mouvement correspond à Entrée ou Ajustement Quantité devrait apparaitre dans ma listview

Si ce n'est pas claire ou que vous avez besoin de précision, ne vous gêner pas!
Encore une fois merci d'avance!
Mélanie
0
Le Pingou Messages postés 12249 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 juin 2025 1 458
2 juil. 2012 à 12:23
Bonjour,
Eh bien en suivant vos instructions, ... , il faut mettre une donnée dans le bon de livraison (un nombre ex:1)...
J'obtiens une erreur de compilation qui se réfère à la procédure :
Private Sub TBox_Livraison_change()

Je ne peux donc rien faire de plus.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12249 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 juin 2025 1 458
2 juil. 2012 à 12:49
Bonjour,
Dans cette condition :
If x.Value = TBox_Lot1.Value And Cells(x.Row, 4).Value = TextBox54.Value Or Cells(x.Row, 4).Value = TextBox56.Value Then
La formule
Cells(x.Row, 4).Value
fait référence à quelle feuille ... ?
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
2 juil. 2012 à 15:09
Bonjour Le Pingou,

Premièrement je voudrais te remercier d'avoir pris le temps de regarder mes trucs, j'apprécie beaucoup.
la feuille de référence est infos, tout fait référence à cette feuille là.
Chez-moi je n'ai pas l'erreur que tu me dis que tu as..mon listview ne se rempli pas mais je n'ai pas de message d'erreur

merci à l'avance
Mélanie
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 273
2 juil. 2012 à 13:14
Bonjour,

Le Pingou dit :
J'obtiens une erreur de compilation qui se réfère à la procédure :
Private Sub TBox_Livraison_change()

Idem
On se retrouve avec, dans les références, un 'windows common controls-3 6.0(SP5)' sortant d'on ne sait où... Référence manquante à décocher.

fait référence à quelle feuille ... ?
voir ligne du dessus : For Each x In sh.Range("A6:A" & Cells(Rows.Count, 1).End(xlUp).Row)
=> info!A6:A31


Je me suis arrété sur la même ligne que le pingou :
If x.Value = TBox_Lot1.Value And Cells(x.Row, 4).Value = TextBox54.Value Or Cells(x.Row, 4).Value = TextBox56.Value Then

Déjà je me demande si des () ne seraient pas bien venues (?) :
if test1 and (test2 or test3) then
Condition jamais validée pour la bonne raison, je pense, que tu n'indiques pas devoir remplir une de ces textbox.
Quand tu auras mis un mode opératoire complet peut-être pourras-tu avoir de l'aide plus efficace.

eric
0
Le Pingou Messages postés 12249 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 juin 2025 1 458
2 juil. 2012 à 15:30
Bonjour,
Merci pour l'information.
Je pense que vous avez aussi pris connaissance de mon deuxième message à la suite de celui d'eriiic (poste 7 / 13 :14) et que de ce fait vous avez corrigé la ligne de code selon ma remarque : poste 8 / 13 :45.
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
2 juil. 2012 à 15:44
Bonjour Le pingou

Un énorme MERCI!!! ça fonctionne :)

p.s merci aussi à Éric qui a pris le temps de regarder

Mélanie
0