XL 2013 ListView - Mais, pourquoi ça plante?

jeanba

XLDnaute Occasionnel
Bonjour le Forum,

Je découvre le contrôle ListView. J'avoue que j'ai plus compris la ListBox et j'ai beaucoup de mal avec la ListView. il m'est demandé de déclarer la propriété "lvwReport" alors que le compilateur est sensé la reconnaître...!!! Du coup, j'arrive même plus à faire s'afficher ma ListView et je me suis complètement perdu
Alors, SOS..

Merci par avance!

Jeanba
 
Dernière modification par un modérateur:

jeanba

XLDnaute Occasionnel
Bonjour Bruno,

En effet, tu as bossé dur!
Je vois que ça marche très bien, surtout je suis impressionné par la rapidité d'exécution des instructions de ton codes, car dans mon fichier projet, l'instruction Range prend plus de temps à s'exécuter.. Ce doit forcément venir de mon code pas toujours très light comme le tien..

Bon, tu as résolu le plus gros de mon souci.
Reste que l'instruction ajouter nouvelle écriture ne le fait pas chez toi, mais j'ai pu le faire.

Une chose me perturbe toutefois. Avant de l'exposer, faut d'abord copier cette formule en C1 de la feuille PlanTiers:
=CONCATENER(GAUCHE([Type];1);TEXTE(NB.SI($A$2:A2;$A2);"0000"))

Voici le souci: je voudrais que dans le formulaire, n'apparaisse dans la liste des Tiers que des clients (ComboBox4 chez toi) que si à la base INDEX de la valeur en ID (TextBox3 chez toi) dans la feuille Plan Imputation, colonne 8 est "C". En termes plus simples:

VB:
IF INDEX(Tableau6[Type Tiers];EQUIV(Saisie!G9;ecritures_CodeImput;0)) Then 
    Me.ComboBox4.Value = _ 
Toutes les cellules de la colonne "Compte" dans la feuille Plan Imputation qui commence par INDEX(Tableau6[Type Tiers];EQUIV(Saisie!G9;ecritures_CodeImput;0)) 
END IF

Je ne sais pas dire cela autrement que ce code qui marche pas curieusement:

VB:
If Me.ComboBox3 <> "" Then     ' Le code d'imputation est renseigné
    Me.Label18.Visible = True  ' L'intitulé du code d'imputation est actif
    With ImputationPlan
        Sens = .Cells(Me.ComboBox3.ListIndex + 2, 4)
        Me.Label18.Caption = .Cells(Me.ComboBox3.ListIndex + 2, 2) & _
        " ( " & .Cells(Me.ComboBox3.ListIndex + 2, 3) & " / " & Sens & ")"
       
        Select Case .Cells(Me.ComboBox3.ListIndex + 2, 7).Value
            Case Is = "N"
                Me.ComboBox1.Enabled = False: Me.Label23.Caption = ""
            Case Is = "O"
                Me.ComboBox1.Enabled = True: Me.Label21.Caption = .Cells(Me.ComboBox3.ListIndex + 2, 3)
        End Select
   
    Select Case .Cells(Me.ComboBox3.ListIndex + 2, 8).Value
        Case Is = "F"
            For Each CEL In PlanTiers.[NumTiers]
                If Left(CEL.Value, 1) = "F" Then Me.ComboBox1.AddItem CEL.Value
            Next CEL
       
        Case Is = "C"
            For Each CEL In PlanTiers.[NumTiers]
                If Left(CEL.Value, 1) = "C" Then Me.ComboBox1.AddItem CEL.Value
            Next CEL
       
        Case Is = "S"
            For Each CEL In PlanTiers.[NumTiers]
                If Left(CEL.Value, 1) = "S" Then Me.ComboBox1.AddItem CEL.Value
            Next CEL
    End Select
   
    Select Case .Cells(Me.ComboBox3.ListIndex + 2, 4).Value
        Case Is = "S"
            Me.TextBox8.Enabled = False:   Me.TextBox6.Enabled = True
        Case Is = "E"
            Me.TextBox8.Enabled = True:   Me.TextBox6.Enabled = False
    End Select
    End With
End If

UN TRES GRAND MERCI PAR AVANCE!
 

youky(BJ)

XLDnaute Barbatruc
Bon ! j'ai pas bossé pour rien cela fait plaisir. . . .
Le bouton Nouveau efface les textbox et combo et écrit label9=""
Si on click dans la listeview cela écrit le N° ligne en Label9
Ensuite le bouton Valider sait de suite si c'est une modif ou une nouvelle écriture
Je regarde ta demande je pense avoir pigé mais ca a été long.
Je renvoie le fichier dés fait
Bruno
 

youky(BJ)

XLDnaute Barbatruc
Désolé impossible à comprendre !
Sur le fichier il manque trop de choses pour suivre.
En plus les formules sont #REF à tout va
upload_2018-11-27_10-29-14.png

Certains noms manquent ….PlanTiers.[NumTiers]
J'avais fait ca mais ca doit pas être bon(à copier en code de l'user)
Ils'exécute lors du changement de Textbox3 (ID)
Bruno
Code:
Private Sub TextBox3_Change()
ComboBox4.Clear
For k = 2 To ImputationPlan.[H65000].End(3).Row
If ImputationPlan.Cells(k, 8) = "C" Then _
ComboBox4.AddItem ImputationPlan.Cells(k, 2)
Next
End Sub
 

jeanba

XLDnaute Occasionnel
Je reviens après avoir consulté le fichier. C'est effectivement un support qui va beaucoup m'aider.
Je vais adapter mon code et si je comprends pas quelque chose, je reviendrais le soumettre au fil en cours..

Merci pour tout!

Jeanba
 

jeanba

XLDnaute Occasionnel
Juste cependant 2 choses que je saurais pas faire:

1) Aligner à droite les nombres et séparateurs de milliers sur la ListView
2) Est-il possible de définir une hauteur de ligne identique pour toutes les lignes de la ListView?

Merci par avance

Jeanba
 

youky(BJ)

XLDnaute Barbatruc
Hello,
La macro est en texbox3_change.
Regarde si ca conviens
Par contre Excel refuse une formule dans une entête filtrée.
Pas possible en C1 de Plan Tiers
Comment t'as fait pour mettre du jaune bariolé dans la formule ci dessus . . .hihi!
Hier soirmon message n'était pas parti site en maintenance je le retrouve donc c'est parti
Bruno
 

Pièces jointes

  • SOS Listview Base corrigee (1).xlsm
    70.1 KB · Affichages: 26

jeanba

XLDnaute Occasionnel
Bonjour Tout le monde!

Je me suis plus connecté depuis là, souci de connexion..

Alors, par où commencer?
1° Réponse de Boisgontier:
>Aligner à droite les nombres et séparateurs de milliers sur la ListView

Cf PJ

Boisgontier
Excellent, c'est bon j'ai la réponse grâce à ton fichier exemple. Merci beaucoup!

2° ChTi120:
Ok, je vais aller tester donc dans les propriétés objet de ma listview alors? A moins que tu parles de la taille des éléments de la ligne d'origine sur la feuille Excel?

3° Bruno,
La macro est en texbox3_change.
Regarde si ca conviens

C'est excellent! Je m'inspire vite de ton code.

Alors, en ce qui concerne la coloration de ma formule, écoute j'ai utilisé Outil Capture écran et Paint...
Ensuite, j'ai copié et coller dans le fil...

Merci à tous!
 

Si...

XLDnaute Barbatruc
Salut

Simple question : quel est l'intérêt d'utiliser un tel type de contrôle* quand on a déjà sous les yeux le tableau ?

Je pense que le formulaire peut intervenir, non pas quand on a une quantité énorme de lignes, mais plutôt quand on a beaucoup de colonnes non visibles à son écran.

*le contrôle ListView est un des moins portables tout en étant l'un des moins commodes à programmer (ce qui réduit l'intérêt principal du formatage) quand on veut fournir un Outil de développement ; déjà 28 messages et ce n'est pas fini avec le manque des tests de validité manquants !

Je pense que le contrôle ListBox lui est préférable , surtout quand on ne veut pas faire passer l'esthétisme avant l'utile mais là encore, est-il intéressant de le solliciter ?
 

Statistiques des forums

Discussions
311 721
Messages
2 081 929
Membres
101 843
dernier inscrit
Thaly