Listview, VBA, Excel
Résolu
lanetmel
Messages postés
200
Date d'inscription
Statut
Membre
Dernière intervention
-
lanetmel Messages postés 200 Date d'inscription Statut Membre Dernière intervention -
lanetmel Messages postés 200 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Listview vba excel exemples
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Tableau croisé dynamique excel exemple - Guide
8 réponses
Bonjour,
Suite au message d'eriiic (Salutations), je pense que si vous corrigez les formules
Suite au message d'eriiic (Salutations), je pense que si vous corrigez les formules
Cells(x.Row, 4).Valueen
sh.Cells(x.Row, 4).Valuecela devrait marcher ... !
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
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
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
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
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
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
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 :
Je ne peux donc rien faire de plus.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Dans cette condition :
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 ThenLa formule
Cells(x.Row, 4).Valuefait référence à quelle feuille ... ?
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
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
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 :
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
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