XL 2013 SOS Ma ListBox plante

jeanba

XLDnaute Occasionnel
Bonjour le forum,

Je bute sur un formulaire devant Ajouter, Modifier, Supprimer les éléments d'un tableau
Voir ci-joint.

Merci par avance

Jeanba
 

Pièces jointes

  • SOS ListBoxt en panne fonction selection.zip
    9.6 MB · Affichages: 47

jeanba

XLDnaute Occasionnel
En fait, je ne comprends pas pourquoi lorsque je sélectionne autre chose que "Tous", l'affichage de l'objet sélectionné dans les textbox ne suit pas. J'ai dû faire une erreur de code pour que les index soient perturbés..

NB: Le bouton supprimer j'ai déjà réussi à le traiter..
Merci
 

jeanba

XLDnaute Occasionnel
Bonsoir le Forum,

Ma question est restée sans réponse, malgré les 52 affichages.
Dois-je comprendre qu'il n'existe pas de solution ou que les problématiques soulevées ne sont pas assez clairement exposées?

Faut-il recréer une discussion exprès pour cela?
 

ChTi160

XLDnaute Barbatruc
Bonjour jeanba
Bonjour le Fil ,le Forum
je pense que ton problème vient du fait que tu prends comme référence de la Ligne Source le ListIndex de ta ListBox +2
VB:
Me.ComboBox3.Value = .Cells(Me.ListBox1.ListIndex + 2, 3)  '   Compte Tiers
Ce qui fait que quand tu sélectionnes la première ligne tu auras toujours ListIndex=0 puis 1 ,2 etc etc
donc si tu as sélectionné "Tous" tu auras bien la localisation dans le Tableau .
mais si tu sélectionnes par exemple "Salarié" , la première ligne Source est la Ligne 18 dans le Tableau.
ta listBox renverra elle :
VB:
.Cells(Me.ListBox1.ListIndex + 2, 3)
soit première ligne =0+2 = 2 ---> CLIENT 1. et Non = 18 ----> SALARIE 1
Bonne journée
jean marie
 

jeanba

XLDnaute Occasionnel
Bonsoir Jean Marie,
Bonsoir le Fil + Forum,

Merci Jean Marie, c'était effectivement cela le problème pour ce qui concerne la problématique N°2 sur les 6 soumis.
A cet effet, quelqu'un a-t-il une idée de comment on pourrait traduire en code vba cette formule:

Code:
'6 Je souhaite gérer par code vba la création des comptes Tiers
'Le procédé se trouve dans la formule excel en colonne 3 comme suit:
=CONCATENER(GAUCHE([@Type];1);TEXTE(NB.SI($A$2:A21;$A21);"0000"))

Merci encore par avance et pour tout!

Jeanba
 

ChTi160

XLDnaute Barbatruc
Re
pour la problématique 1
j'ai ajouter
VB:
 With .ListBox1
              .ColumnCount = 12
              .ColumnWidths = "60;150;35;110;110;30;60;110;90;90;50;50"
              .List = [Tableau4].Value
              .ListIndex = 0 '------- >ici
  End With
pour la problématique 3 a tester
VB:
Sub TrierTiers()
Application.DisplayAlerts = False
 With ActiveWorkbook.Worksheets("Plan Tiers")
   With .ListObjects("Tableau4").Sort
     With .SortFields
        .Clear
        .Add Key:=Range("Tableau4[Compte]"), SortOn:=xlSortOnValues, Order:= _
         xlAscending, DataOption:=xlSortNormal
     End With
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
 End With
    ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub
jean marie
 

jeanba

XLDnaute Occasionnel
With .ListBox1
.ColumnCount = 12
.ColumnWidths = "60;150;35;110;110;30;60;110;90;90;50;50"
.List = [Tableau4].Value
.ListIndex = 0 '------- >ici
End With

Cette seule ligne de code génère l'erreur suivante:

upload_2018-10-30_22-17-48.png
 

jeanba

XLDnaute Occasionnel
Sub TrierTiers()
Application.DisplayAlerts = False
With
ActiveWorkbook.Worksheets("Plan Tiers")
With .ListObjects("Tableau4").Sort
With .SortFields
.Clear
.Add Key:=Range("Tableau4[Compte]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
End With
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End
With
ActiveWorkbook.Save
Application.DisplayAlerts = True
End
Sub

Ce code s'exécute sans retour de message d'erreur!
Cependant, le programme devient très très lent, je veux dire que le code prend trop de temps pour son exécution.
Il doit être possible de faire en sorte que ce soit moins long, non?

Merci beaucoup!
 

ChTi160

XLDnaute Barbatruc
Bonjour jeanba
Bonjour le Fil ,le Forum
pour ce qui est du message d'erreur !
C'est quelle instruction ?
VB:
.ListIndex=0
'ou
.List(L,.Columns.count-1)=1 +L
si c'est la deuxième !
Voir si tu as bien 13 colonnes dans ta ListBox (car dans ton post #10 ,tu as 12 en haut et 13 ou il y a l'erreur?)
ou alors
voir la déclaration de la variable "L" la mettre en Long
VB:
Dim L as Long  'cela dépend du nombre de lignes à traiter
pour ce qui est de la lenteur , je l'ai constaté lors de l'enregistrement de ton fichier à la fin du Tri (ActiveWorkbook.Save).
je pense qu'il y a un problème avec Tes Objects Tableau (que je n'utilise pas ).
Tu utilises le fichier que j'ai joins ou un autre ?
jean marie
 

jeanba

XLDnaute Occasionnel
Bonjour Jean Marie, Bonjour le Fil,

Le message d'erreur concerne l'instruction

Pour la lenteur, j'utilise un autre fichier dont les éléments soumis au Forum ne sont qu'un minuscule aspect (le fichier total a maintenant une taille de près de 5000Ko!!).

D'ailleurs à ce sujet, je me demandais si c'était pas mieux de loger certaines feuilles de type bases de données dans d'autres classeurs et faire des liasons avec Power Query ou autre? Peut-être que ce serait moins long...
 

jeanba

XLDnaute Occasionnel
Oui, je crois.
Au début, je me suis lancé dans le tas, et au fûr et à mesure, je réalise que programmer c'est toute une méthodologie.
Faut apparemment d'abord tout penser et écrire même ce qu'on veut faire..

Merci pour tout!

Jeanba
 

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 789
Membres
101 817
dernier inscrit
carvajal