Aide à la programmation

zeltron24

XLDnaute Impliqué
Bonjour à toutes et tous,

J'ai trouvé sur ce Forum un petit fichier de jp14 que je remercie par avance.
Je l'ai transformé pour mes besoins mais je bloque sur le code pour le Formulaire "FrmListe"
Je demande donc "à genoux", si je ne pourrais pas bénéficié de votre aide.
J'ai fais une description dans le classeur ci joint afin d’être au plus précis sur ma demande.
J'en conviens que ce sera un travail assez fastidieux, mais pour moi, je bloque.
J'ai réalisé le formulaire d'inscription de contacts mais je n'arrive pas pour celui de la listview.
Merci beaucoup pour votre participation.
zeltron24
 

Pièces jointes

  • Classeur1.xls
    239.5 KB · Affichages: 58
  • Classeur1.xls
    239.5 KB · Affichages: 74
  • Classeur1.xls
    239.5 KB · Affichages: 70

Bebere

XLDnaute Barbatruc
Re : Aide à la programmation

Zeltron
comme le dit Dranreb,il faut exporter les modules utiles
et dans userform_initialise ces 2 lignes
Set CBL = New ComboBoxLiés ' Allocation de nouvelles ressources de mémoire à l'objet.
CBL.Plage Feuil2.[A3] ' Prend en fait toutes les lignes utilisées à partir de là. Définit CBL.PlgTablo
et dans
Private Sub ListBox1_Click()
Dim T(), C As Long
LCou = TLgn(ListBox1.ListIndex + 1) ' (La ListIndex commence à l'indice 0)
T = CBL.PlgTablo.Rows(LCou).Resize(, 11).Value
For C = 1 To 10: Me.Controls("TextBox" & C).Text = T(1, C + 1): Next C'cette ligne
End Sub
j'ai aussi eu une erreur le système(excel) a corrigé
as tu essayer analyse et réparer(menu aide)
 

Pièces jointes

  • Classeur1 (1).xls
    324 KB · Affichages: 33
  • Classeur1 (1).xls
    324 KB · Affichages: 36
  • Classeur1 (1).xls
    324 KB · Affichages: 33

zeltron24

XLDnaute Impliqué
Re : Aide à la programmation

Re,
Après plus de 3h de transformations, d'essais, de plantage, J'abandonne le projet cela me donne un de ces mal de tete. Merci à vous deux je reviendrai sur le projets dans quelques temps à tete reposée.
Bonne soirée à vous et encore mille merci
 

Dranreb

XLDnaute Barbatruc
Re : Aide à la programmation

Si vous avez bien fait, pour chacun des module de mon zip, un clic droit dans l'explorateur de projet sur votre projet VBA, choisi "Importer un fichier…" qu'est-ce qui ne va encore pas ?
Dites le, et joignez votre classeur muni des modules nécessaires.
 
Dernière édition:

zeltron24

XLDnaute Impliqué
Re : Aide à la programmation

Bonjour à tous et en particulier à Dranreb
Voici le classeur avec les modifs. Il y a des erreurs (voir Feuil2) qui se produisent sur mon classeur et pas sur le votre.
J'ai fait des modifs cela est peut être la cause....
Je cite Bebere :
j'ai aussi eu une erreur le système(excel) a corrigé
as tu essayer analyse et réparer(menu aide)

Je ne trouve pas l'onglet correspondant.
 

Pièces jointes

  • Classeur1 (1).xls
    357 KB · Affichages: 36
  • Classeur1 (1).xls
    357 KB · Affichages: 39
  • Classeur1 (1).xls
    357 KB · Affichages: 40
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Aide à la programmation

Bonjour.
Il n'y plus que 2 ComboBox alors ? Vous avez abandonné l'idée de le recherche multicritères ? Enfin vous pourrez toujours les remettre par la suite sans avoir beaucoup de modification à effectuer.
Vous devez quand même garder l'initialisation de CBL dans l'Userform_Initialize et lui spécifier les ComboBox concernés.
Pour afficher tout vous pourrez, avant de garnir la listBox alors mettre toutes les lignes dans TLgn en faisant :
VB:
InitTbLong TLgn, CBL.PlgTablo.Rows.Count

Je viens de lire "Le CombotBox2 doit apparaitre lorsqu'…
Non. Si les ComboBox ne doivent pas être affichés en permanence, débrouillez vous, terminé, je ne m'en occupe plus. C'est n'importe quoi
 

zeltron24

XLDnaute Impliqué
Re : Aide à la programmation

Je dois vous avouez que je ne maitrise pas VBA et que pour moi il y a beaucoup d'incomprehensibilité dans les codes c'est pour cela peut etre qu'il y a des incomprehention dans mes demandes je vous prie de m'en excuser.
J'essaye des codes par ci par là mais je vois que cela vous énerve. Pardonnez moi mon ignorance je fais pourtant de mon mieux mais je reste un "ANE"
 

Dranreb

XLDnaute Barbatruc
Re : Aide à la programmation

Remettez vos ComboBox visibles supprimez le bouton Modifier qui ne sert à rien, par contre mettez un bouton Effacer.
et repartez de cette base :
VB:
Option Explicit
Dim WithEvents CBL As ComboBoxLiés ' Déclaration avec évènements d'un objet de type ComboBoxLiés.
Rem. Sélectionnez votre objet CBL dans la liste de gauche au dessus de la fenêtre de code.
'    Liste de droite: voir explications des modèles de procédures implantables en face des
'    instructions Event situées en tête du module ComboBoxLiés.
Dim TLgn() As Long ' Table des numéros de lignes chargés dans la ListBox1 (mais commence à l'indice 1)
Dim LCou As Long ' Numéro de la ligne courante à mettre à jour (sélectionnée dans la ListBox1)

Private Sub UserForm_Initialize()
Set CBL = New ComboBoxLiés ' Allocation de nouvelles ressources de mémoire à l'objet.
CBL.Plage Feuil2.[A3] ' Prend en fait toutes les lignes utilisées à partir de là. Définit CBL.PlgTablo
CBL.Add Me.CbxNom, "B"
CBL.Add Me.CbxPrenom, "C"
CBL.CorrespRequise = True
CBL.Actualiser
CmdToutAfficher_Click
End Sub

Private Sub CmdToutAfficher_Click()
InitTbLong TLgn, CBL.PlgTablo.Rows.Count
GarnirListe
End Sub

Private Sub BtnEffacer_Click() ' Je vous conseille de mettre un bouton pour effacer les ComboBox
CBL.Nettoyer ' C'est une procédure Public dans le module de classe du nom de son type.
'              Et du coup, pour ne pas répéter cette définition, ça s'appelle une méthode.
Rem. Pareil:   Une variable déclarée Public dans le module de classe du nom de son type
'              telle que CBL.PlgTablo s'appelle une propriété en lecture/écriture.
End Sub

Private Sub CBL_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long) ' 1er évènement principal.
ListBox1.Clear
LCou = 0
If NbrLgn = 0 Then ReDim TLgn(0 To 0)
End Sub

Private Sub CBL_Résultat(Lignes() As Long) ' 2ième évènement principal.
Dim T(), N As Long, L As Long, C As Long
TLgn = Lignes
GarnirListe
End Sub

Private Sub GarnirListe()
Dim T(), N As Long, L As Long, C As Long
T = CBL.PlgTablo.Resize(, 11).Value
For N = 1 To UBound(TLgn)
   L = TLgn(N)
   ListBox1.AddItem
   For C = 2 To 11: ListBox1.List(N - 1, C - 2) = T(L, C): Next C
   Next N
End Sub

Private Sub ListBox1_Click()
Dim T(), C As Long
LCou = TLgn(ListBox1.ListIndex + 1) ' (La ListIndex commence à l'indice 0)
T = CBL.PlgTablo.Rows(LCou).Resize(, 11).Value
For C = 1 To 10: Me.Controls("TextBox" & C).Text = T(1, C + 1): Next C
End Sub

Private Sub CmdEnregist_Click()
Dim T(), C As Long
If LCou = 0 Then
   LCou = CBL.PlgTablo.Rows.Count
   With CBL.PlgTablo.Rows(LCou): .Copy: .Insert: End With
   ReDim T(1 To 1, 1 To 11): T(1, 1) = CBL.PlgTablo(LCou, 1) + 1
   LCou = LCou + 1
Else
   T = CBL.PlgTablo.Rows(LCou).Resize(, 11).Value: End If
For C = 2 To 11: T(1, C) = Me.Controls("TextBox" & C).Text: Next C
CBL.PlgTablo.Rows(LCou).Resize(, 11).Value = T
CBL.Actualiser
End Sub

Private Sub BtnFermer_Click()
Unload Me
End Sub
 

zeltron24

XLDnaute Impliqué
Re : Aide à la programmation

Merci Dranreb
Cette fois tout fonctionne correctement sauf ce module .

Private Sub CmdEnregist_Click()
Dim T(), C As Long
If LCou = 0 Then
LCou = CBL.PlgTablo.Rows.Count
With CBL.PlgTablo.Rows(LCou): .Copy: .Insert: End With
ReDim T(1 To 1, 1 To 11): T(1, 1) = CBL.PlgTablo(LCou, 1) + 1
LCou = LCou + 1
Else
T = CBL.PlgTablo.Rows(LCou).Resize(, 11).Value: End If
For C = 2 To 11: T(1, C) = Me.Controls("TextBox" & C).Text: Next C
CBL.PlgTablo.Rows(LCou).Resize(, 11).Value = T
CBL.Actualiser
End Sub

For C = 2 To 11: T(1, C) = Me.Controls("TextBox" & C).Text: Next C
Cette ligne me donne une erreur. "Objet spécifié introuvable" avec Next C en jaune.
 

Dranreb

XLDnaute Barbatruc
Re : Aide à la programmation

Oui je venais justement de voir un truc:
Dans votre 1er fichier vos TextBox allaient de TextBox2 à TextBox11. Je croyais que ça avait été fait exprès pour qu'ils coïncident avec les numéros de colonnes. Cette fois il vont de TextBox1 à TextBox10. Là il faut par exemple :
For C = 2 To 11: T(1, C) = Me.Controls("TextBox" & C - 1).Text: Next C
Mais il serait bon de passer en revue toutes les boucles sur les colonnes suite à ce changement.
Il serait possible par ailleurs de faire en sorte que si la recherche d'un nom ou d'un prénom n'aboutit qu'à une ligne elle soit sélectionnée d'office.
 

zeltron24

XLDnaute Impliqué
Re : Aide à la programmation

Bonsoir Si

On a du te le faire mais "avec des SI" on sait faire beaucoup de choses. Et là, je vous dit Bravo pour ce travail. Grâce à vous à Bebere et surtout à Dranreb qui a eu beaucoup de patience avec moi je vais pouvoir poffiner à ma convenance vos travaux.
Un grand merci sincèrement à vous tous. Une bonne soirée à vous. Vraiment sympa de votre part de vous êtes démenés pour moi.
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 895
Membres
103 982
dernier inscrit
krakencolas