Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3087 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  L AIDE D UN EXPERT EN VBA SVP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

L AIDE D UN EXPERT EN VBA SVP

n°1012228
marcodelor​is
Posté le 14-03-2005 à 16:35:17  profilanswer
 

J AI UNE LISTBOX NOMME ONGLET UNE COMBOBOX NOMME MARQUE ET UNE DEUXIEME NOMME CLASSE. La listbox renvoie a une feuille du classeur, la combobox nommé MARQUE renvoie à une liste dans la colonne A. Jusque là tout est ok... APRES AIE(ligne de pointillé----). J aimerai que le choix effectué dans cette combobox renvoie à une liste (dépendant des lignes) ds la combobox CLASSE.  
 
Présentation feuille excel  
 
        A            B       C        D  
1   Boulanger     pain     bonbon    tarte  
2   Boucher       boeuf    saucisson jambon  
3   Restaurant    entree   plat      dessert  
 
Programme  
 
 
 
Private Sub Onglets_Change()  
Dim OngletSelect As Integer  
' Déterminer la ligne sélectionnée dans la liste déroulante  
    OngletSelect = ListeDeroulanteCombinee.Onglets.ListIndex + 2  
' Mise à jour ComboBox Modele et Type  
    Dim DerniereMarque As String  
    Sheets(OngletSelect).Activate  
    DerniereMarque = Range("A1" ).End(xlDown).Address  
    Marque.RowSource = "A1:" & DerniereMarque  
    Marque.ListIndex = 0  
 ---------------------------------------------------------------------    
    Dim Classix As Integer  
    Classix = ListeDeroulanteCombinee.Marque.ListIndex  
    Classe.RowSource = B Classix.End(xlToRight)  
    Classe.ListIndex = 0  
    End Sub
 
---------------

mood
Publicité
Posté le 14-03-2005 à 16:35:17  profilanswer
 

n°1013170
AlainTech
Pas trouvé? Cherche encore!
Posté le 15-03-2005 à 12:04:11  profilanswer
 

Je ne suis pas un expert...
Mais je propose quand même une solution qui fonctionne (j'ai testé).
 

Option Explicit
 
Dim rMarque As Range
 
Private Sub cboMarque_Change()
  Dim iRangee As Integer
  Dim rClasse As Range
  Dim vI As Variant
  cboClasse.Clear
  For Each vI In rMarque
    If vI.Text = cboMarque.Text Then
      iRangee = vI.Row
      Exit For
    End If
  Next vI
  Set rClasse = Range(Cells(iRangee, 2), Cells(iRangee, 2).End(xlToRight))
  For Each vI In rClasse
    cboClasse.AddItem (vI.Text)
  Next vI
End Sub
 
Private Sub lstOnglet_Change()
  Dim vI As Variant
  cboMarque.Clear
  Sheets(lstOnglet.Text).Activate
  Set rMarque = Range([A1], [A1].End(xlDown))
  For Each vI In rMarque
    cboMarque.AddItem (vI.Text)
  Next vI
End Sub
 
Private Sub UserForm_Initialize()
  Dim vI As Variant
  For Each vI In Worksheets
    lstOnglet.AddItem (vI.Name)
  Next vI
End Sub


 
D'après ton code, il me semble que tu as 2 feuilles avant celles qui contiennent les données à mettre en liste. Il faudra adapter la boucle qui énumère les feuilles.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1013275
AlainTech
Pas trouvé? Cherche encore!
Posté le 15-03-2005 à 13:16:50  profilanswer
 

MARRE DES DOUBLES POSTS POUR UN MEME SUJET!!!!!!!
Je réponds à celui-ci, puis je me rends compte qu'il y en a un autre avec tout un échange...
Plus que chiant!!


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1013427
marcodelor​is
Posté le 15-03-2005 à 15:17:38  profilanswer
 

Merci ALAIN TECH et dsl pour le double post
j ai essayé de l inserer ds mon programme ms ca bloque au tout début.
pourrais je te l envoyer que tu y jete un oeil car avec skakes vous etes les deux seuls a avoir essayer de resoudre ce probleme.
merci d avance

n°1013435
AlainTech
Pas trouvé? Cherche encore!
Posté le 15-03-2005 à 15:22:40  profilanswer
 

Je te donne mon adresse en MP


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1013442
AlainTech
Pas trouvé? Cherche encore!
Posté le 15-03-2005 à 15:26:37  profilanswer
 

Chose importante quand "ça marche pas" ou "il bloque"...
 
DONNER LE MESSAGE D'ERREUR
 
Sinon, moi, je vais répondre:
"Et pourtant, chez moi, ça marche"
 
Et on n'aura pas fait avancer le schmilblick.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1014002
knakes
Posté le 15-03-2005 à 22:50:05  profilanswer
 

Normalement c'est ok :
Voilà le code peu digeste ...

Code :
  1. Me.Classe.Clear
  2. For i = 1 To Len(Range("B" & Marque.ListIndex + 1).End(xlToRight).Address(Marque.ListIndex + 1, , xlR1C1))
  3. If IsNumeric(Right(Range("B" & Marque.ListIndex + 1).End(xlToRight).Address(Marque.ListIndex + 1, , xlR1C1), i)) And Not IsNumeric(Right(Range("B" & Marque.ListIndex + 1).End(xlToRight).Address(Marque.ListIndex + 1, , xlR1C1), i + 1)) Then LastCol = Right(Range("B" & Marque.ListIndex + 1).End(xlToRight).Address(Marque.ListIndex + 1, , xlR1C1), i)
  4. Next i
  5. For j = 2 To LastCol
  6. Me.Classe.AddItem Cells(Marque.ListIndex + 1, j).Value
  7. Next j


En plus clair ...

Code :
  1. Me.Classe.Clear
  2. Dim adDerCol As String
  3. '
  4. ' on récupère l'adresse de la dernière cellule utilisée sous la forme RxCy
  5. '
  6. adDerCol = Range("B" & Marque.ListIndex + 1).End(xlToRight).Address(Marque.ListIndex + 1, , xlR1C1)
  7. For i = 1 To Len(Range("B" & Marque.ListIndex + 1).End(xlToRight).Address(Marque.ListIndex + 1, , xlR1C1)) ' On récupère la taille de l'adresse pour faire une boucle qui va nous permettre de savoir le numéro de la dernière colonne (x ou xx ou encore xxx ...)
  8. If IsNumeric(Right(Range("B" & Marque.ListIndex + 1).End(xlToRight).Address(Marque.ListIndex + 1, , xlR1C1), i)) And Not IsNumeric(Right(Range("B" & Marque.ListIndex + 1).End(xlToRight).Address(Marque.ListIndex + 1, , xlR1C1), i + 1)) Then LastCol = Right(Range("B" & Marque.ListIndex + 1).End(xlToRight).Address(Marque.ListIndex + 1, , xlR1C1), i)
  9. Next i
  10. For j = 2 To LastCol 'Donc, jusqu'à la dernière colonne, on prend les valeurs des cellules ...
  11. Me.Classe.AddItem Cells(Marque.ListIndex + 1, j).Value
  12. Next j


Il y a juste un bug : s'il n y a qu'une colonne de remplie pour la Combobox, il y a une barre de défilement qui apparaît. Cela ne gène en rien l'éxécution du programme.
---
Lol ça m'a donné du fils a retordre tout de même ...
Edit : C'est pas plus digeste le premier que le second ... mais bon je peux expliquer si besoin est. :)


Message édité par knakes le 15-03-2005 à 22:51:07
n°1014164
marcodelor​is
Posté le 16-03-2005 à 08:59:14  profilanswer
 

knakes j ai inserer ton programme ds le mien il colle pil poil... ca fait plaisir sauf qu il y a un hic comme toutes les bonnes nouvelles il y a une mauvaise. c est pour ca que je voulais t envoyer le fichier excel. en fait à la place de bonbon saucisson plat, il y a les quantites correspondante à pain boeuf entree. donc il doit y avoir un decalage de 1 sur 2 ds le choix de liste. et suivant mon choix je voudrais que si je choisis bonbon par ex la quantité correspondante s affiche automatiquement par exemple bonbon 5.
alain tech y jete un oeil aussi .
J espere que vous allez resoudre mon probleme. Merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  L AIDE D UN EXPERT EN VBA SVP

 

Sujets relatifs
[VBA] Excel : perte variables globales sans fermer le classeuraide en graphisme de c#
[VBA]Auriez vous un livre a me conseiller pour m initier au vbaAide sur url rewriting
[VB/VBA/VBS] Lier 2 bases access avec VB6svp aide urgente
[VBA] Access, rafraichir automatiquement un menu déroulantHELP J'AI BESOIN D'AIDE
Aide pour Gestion de tournoi[LDAP] Recherche un cabinet d'expert sur Critical Path
Plus de sujets relatifs à : L AIDE D UN EXPERT EN VBA SVP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR