renseignement d'un tableau grace à trois variables

belerofon

XLDnaute Occasionnel
bonjour à tous,
Encore une nuit blanche pour essayer de trouver par moi meme une solution a un manque de connaissances en VB...et la ca devient irritant...

Je me suis fait moi meme un petit exercice pour progresser gentiment...
un petit tableur sympa pour gerer une collection de pieces pour plusieurs personnes...
jusque la tout allait " a peu pres", mais voila que sur la touche finale, ca coince...

Le probleme reside lorsque l on clique sur le bouton "ajouter"... L action désirée est l implementation de la " base de données" situées dans l onglet "Base" qui se presente sous la forme de deux tableaux , le premier representant la collection de julien, le second la collection de brigitte....

l utilisation est simple, un selectionne son nom, pluis on choisis le pays dont on veut ajouter une piece nouvellement acquise, plus on selectionne une année et enfin la valeur faciale de la piece....

Ensuite on clique sur le bouton ajouter, et une nouvelle croix devrait apparaitre et dans la listview du formulaire et dans le tableau correspndant dans l onglet " Base " .... seulement voila, impossible... je me suis decarcassé toute la nuit pour tenter toute sorte de manip... des Do While, des While, des For Each... a croire que j suis pas fait pour ca... mais franchement ma curiosite m oblige a pousser jusqu a avoir la solution a cette enigme....
Si quelqu un pouvait me donner un coup de pouce, ce serait genial...
Merci d'avance,
J.
 

Pièces jointes

  • Euros Projet.xls
    201 KB · Affichages: 60
  • Euros Projet.xls
    201 KB · Affichages: 65
  • Euros Projet.xls
    201 KB · Affichages: 62
C

Compte Supprimé 979

Guest
Re : renseignement d'un tableau grace à trois variables

Bonjour beleforon

Soit ca n inspire pas grand monde
Possible ..
soit tout le monde cale comme moi
Je ne pense pas

L action désirée est l implementation de la " base de données" situées dans l onglet "Base" qui se presente sous la forme de deux tableaux , le premier representant la collection de julien, le second la collection de brigitte....
Là ou tu vois 2 tableaux, moi j'en vois une multitude .. un par pays

De plus n'apparaissent pas les prénoms dans tes tableaux ...
"Julien" à droite, "brigitte" à gauche !? ... et je ne parle pas de politique :)

Dans ton USF, le prénom est à saisir !?

A+
 

belerofon

XLDnaute Occasionnel
Re : renseignement d'un tableau grace à trois variables

Salut Bruno ,
effectivement, tu souleve des vraies questions....
Le coup des tableaux, mea culpa, c etait evident dans ma tete mais mal explicité...
Pour continuer sans parler de politique ( ;) ) le "tableau" relatif à Julien est le "plage "C1:Kx" et celui de Brigitte "M1:Ux"

Quand au prénom , pour l instant il est défini dans une liste de deux personnes entrés par
' Initialise la liste de CobCollectionneur
Me.CobCollectionneur.AddItem "Julien"
Me.CobCollectionneur.AddItem "Brigitte"
CobCollectionneur.ListIndex = 0

mais qui pourrait par la suite evoluer en un combobox implementable si d autres collectionneurs se joignent au groupe ( idee a reflechir )
J.
 

belerofon

XLDnaute Occasionnel
Re : renseignement d'un tableau grace à trois variables

Bruno,
Je viens de comprendre ta remarque sur le "prénom à saisir", effectivement la TextBox relative au prénom est surement de trop je vais la supprimer pour ne laisser que la ComboBox relative aux prénoms
 

Arpette

XLDnaute Impliqué
Re : renseignement d'un tableau grace à trois variables

Bonjour Beleferon, Bruno le forum,

J'ai commencer à regarder, il te manque l'action à faire quand tu cliques sur listBox1. J'ai placé le code ci-dessous après
Code:
' Renvoi à la procédure d'initialisation Inilvw1
Inilvw1
End Sub

Si tu sélectionnes,une valeur dans ta listBox, la valeur sera renvoyée dans Base dernière ligne colonne 9. Il faut l'adapter à ton cas.

Code:
Private Sub ListBox1_Click()
With Sheets("Base")
        'On mémorise dans DernLign le numéro de la première ligne libre de la feuille Saisie
        dernLign = .Cells(.Rows.Count, 1).End(xlUp).Row
        'On met à jour la feuille Saisie avec les données du Userform
        .Cells(dernLign, 9).Value = Me.ListBox1.List(Me.ListBox1.ListIndex)
    End With
End Sub

@+
 
C

Compte Supprimé 979

Guest
Re : renseignement d'un tableau grace à trois variables

Re,

J'ai compris en utilisant ton USF, au niveau des controles, c'est ok
il faut simplement interdire d'aller dans "TextBoxCollectionneur" en mettant la propriété "Enable" à False

Pour l'ajout, voici un code
Code:
' Action du Bouton "Ajouter"
Private Sub ButAjout_Click()
  Dim Der As Integer, Cel As Range, Plage As Range, Ok As Boolean, i As Integer
  Dim Lig As Long, LigP As Long, DLigP As Long
  Dim sPays As String, sAnnee As String
  sPays = Me.CobSelPays
  sAnnee = Me.CombAnnee
  With Sheets("Base")
    ' Trouver le pays via Find, plus rapide
    LigP = .Range("A:A").Find(What:=sPays, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
                              SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row
    If LigP = 2 Then LigP = 1 ' evite un bug
    ' Dernière ligne du ableau du pays
    DLigP = .Range("A" & LigP).End(xlDown).Row
    ' Trouver l'année dans la colonne B de la plage
    Lig = .Range("B" & LigP & ":B" & DLigP).Find(What:=sAnnee, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
                                                 SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row
    If CobCollectionneur = "Julien" Then
      If ListBox1 = "1c" Then Cells(Lig, 3) = "X"
      If ListBox1 = "2c" Then Cells(Lig, 4) = "X"
      If ListBox1 = "5c" Then Cells(Lig, 5) = "X"
      If ListBox1 = "10c" Then Cells(Lig, 6) = "X"
      If ListBox1 = "20c" Then Cells(Lig, 7) = "X"
      If ListBox1 = "50c" Then Cells(Lig, 8) = "X"
      If ListBox1 = "1€" Then Cells(Lig, 9) = "X"
      If ListBox1 = "2€" Then Cells(Lig, 10) = "X"
      If ListBox1 = "2€ Com." Then Cells(Lig, 11) = "X"
    Else  ' Si ce n'est pas julien, c'est forcément Brigitte :)
      If ListBox1 = "1c" Then Cells(Lig, 13) = "X"
      If ListBox1 = "2c" Then Cells(Lig, 14) = "X"
      If ListBox1 = "5c" Then Cells(Lig, 15) = "X"
      If ListBox1 = "10c" Then Cells(Lig, 16) = "X"
      If ListBox1 = "20c" Then Cells(Lig, 17) = "X"
      If ListBox1 = "50c" Then Cells(Lig, 18) = "X"
      If ListBox1 = "1€" Then Cells(Lig, 19) = "X"
      If ListBox1 = "2€" Then Cells(Lig, 20) = "X"
      If ListBox1 = "2€ Com." Then Cells(Lig, 21) = "X"
    End If
  End With
  Set ws = ThisWorkbook.Sheets("Acceuil")
  ws.Select
  Inilvw1
End Sub

A+
 

belerofon

XLDnaute Occasionnel
Re : renseignement d'un tableau grace à trois variables

@ Staple : Vu qu en meme temps j essaye de trouver la solution par moi meme, et que je n avais pas vu ton message privé , je ne savais pas que tu etais rentré du boulot ... Je viens de lire ton Edit sur l autre fil... Effectivement le code original de mon fichier est different de celui posté dans l autre fil car j essaye d ameliorer le code au fur et a mesure pour en reduire la taille d ou le changement de VJUL1c en A1c par exemple.... La derniere version de mon code est donc modifier et je vais la poster sur ce fil avec ce message...
Quand au respect de la charte, ne charries pas non plus je pensais que ce morceau de code fourni dans l autre fil parlais de lui meme pour envisager une simplification sans avoir besoin de tout un fichier , mais c est peut etre la mon erreur, mea culpa... Je penses que depuis notre premier message j ai quand meme largement respecté cette charte....

ceci etant dit voila ma derniere version :
 

Pièces jointes

  • Euros Projet.xls
    219 KB · Affichages: 63
  • Euros Projet.xls
    219 KB · Affichages: 70
  • Euros Projet.xls
    219 KB · Affichages: 89

belerofon

XLDnaute Occasionnel
Re : renseignement d'un tableau grace à trois variables

@Staple , non pas zappé, probleme de pc qui rame désolé, je venais de repondre... je repond dans l autre fil juste apres

@Arpette, bonsoir, en fait c etait voulu , c etait juste pour que lorsque la valeur de la list change, elle remette la ListView à jour directement.... Je vais analyser ton code des que j aurais repondu à tout le monde...merci en tout cas

@Bruno, je le saurais pour la prochaine fois, mais de toute facon ca faisait un doublon d information donc je l ai supprimé comme vu dans la derniere version mise a jour quelquus messages plus haut...
 

belerofon

XLDnaute Occasionnel
Re : renseignement d'un tableau grace à trois variables

@Bruno,
ton code pour l ajout à l air tres judicieux, c est bien pensé...
Du coup entre temps j etais repassé a un autre essai en utilisant plutot les ActiveCell, mais maintenant que tu m as mis cette solution a l oreille je vais readapter mon code a ta facon...
Merci beaucoup, c est toujours enrichissant de rencontrer de nouveaux points de vue et ta logique est imparable...
J.
 

belerofon

XLDnaute Occasionnel
Re : renseignement d'un tableau grace à trois variables

@Arpette,
Ca y est je viens de me pencher sur ton code, j'ai bien compris son usage, j y avais pensé au debut mais j ai abandonné cette piste car elle me renvoie dans le tableur une information que j ai deja puisque c est celle de ListBox1.Value , et moi je ne veux ajouter a mon tableau que des "X"
C'est pourquoi la valeur de ListView1 ne me sert qu au moment de renseigner le tableau lors du clic sur le CommandButton ButAjout .
Mais comme quoi au debut on a les memes idées :)
J.
 

Discussions similaires

Statistiques des forums

Discussions
312 728
Messages
2 091 402
Membres
104 913
dernier inscrit
Walderick