Alimentation ComboBox avec plusieurs feuilles
Résolu
Landry85
Messages postés
94
Date d'inscription
Statut
Membre
Dernière intervention
-
Landry85 Messages postés 94 Date d'inscription Statut Membre Dernière intervention -
Landry85 Messages postés 94 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
j'utilise le code ci-dessous pour alimenter une série de comboBox en cascade. Pour le moment, la recherche s'effectue sur la feuille "1796". Mais comme j'ai une multitude de lignes, j'aimerai effectuer la recherche sur différente page.
J'ai essayé d'ajouter les feuilles exp :
Set ws = worksheets ("1796" , "Feuil2" , "Feuil3"....)
ou
Set ws = worksheets ("1796") And worksheets ("Feuil2") And.....
Mais ça ne fonctionne pas.
Peut être une idée?
Merci d'avance
j'utilise le code ci-dessous pour alimenter une série de comboBox en cascade. Pour le moment, la recherche s'effectue sur la feuille "1796". Mais comme j'ai une multitude de lignes, j'aimerai effectuer la recherche sur différente page.
J'ai essayé d'ajouter les feuilles exp :
Set ws = worksheets ("1796" , "Feuil2" , "Feuil3"....)
ou
Set ws = worksheets ("1796") And worksheets ("Feuil2") And.....
Mais ça ne fonctionne pas.
Peut être une idée?
Merci d'avance
Private Sub CommandButton3_Click() 'Bouton AJOUTER UNE DONNEE Dim DerLig As Long With Worksheets("CourrierAppro") 'Recherche de la dernière ligne renseignée dans la colonne A DerLig = .Range("A" & .Rows.count).End(xlUp).Row 'On remplit la cellule suivante .Range("C" & DerLig).Offset(1, 0) = Me.ComboBox1.Value .Range("D" & DerLig).Offset(1, 0) = Me.ComboBox2.Value .Range("E" & DerLig).Offset(1, 0) = Me.ComboBox3.Value .Range("F" & DerLig).Offset(1, 0) = Me.ComboBox4.Value .Range("B" & DerLig).Offset(1, 0) = Me.ComboBox5.Value End With End Sub Private Sub UserForm_Initialize() 'Définit la feuille contenant les données Set Ws = Worksheets("1796") And Worksheets("ANACOLE") 'Définit le nombre de lignes dans la colonne A NbLignes = Ws.Range("A65536").End(xlUp).Row 'Remplissage du ComboBox1 Alim_Combo 1 End Sub Private Sub ComboBox1_Change() 'Remplissage Combo2 Alim_Combo 2, ComboBox1.Value End Sub Private Sub ComboBox2_Change() 'Remplissage Combo2 Alim_Combo 3, ComboBox2.Value End Sub Private Sub ComboBox3_Change() 'Remplissage Combo2 Alim_Combo 4, ComboBox3.Value End Sub Private Sub ComboBox4_Change() 'Remplissage Combo2 Alim_Combo 5, ComboBox4.Value End Sub Private Sub ComboBox5_Change() Dim J As Long 'Remplissage Combo5 'Alim_Combo 6, ComboBox5.Value With Me.ComboBox6 .Clear If Me.ComboBox5.ListIndex = -1 Then Exit Sub For J = 4 To NbLignes If CStr(Ws.Range("A" & J)) = Me.ComboBox1 And CStr(Ws.Range("B" & J)) = Me.ComboBox2 And CStr(Ws.Range("C" & J)) = Me.ComboBox3 And CStr(Ws.Range("D" & J)) = Me.ComboBox4 And CStr(Ws.Range("E" & J)) = Me.ComboBox5 Then .Value = Ws.Range("F" & J) If .ListIndex = -1 Then .AddItem Ws.Range("F" & J) End If Next J If .ListCount = 1 Then .ListIndex = 0 Else .ListIndex = -1 End With End Sub 'Procédure pour alimenter les ComboBox Private Sub Alim_Combo(CbxIndex As Integer, Optional Cible As Variant) Dim J As Integer Dim Obj As Control 'Définit le ComboBox à remplir Set Obj = Me.Controls("ComboBox" & CbxIndex) 'Supprime les anciennes données Obj.Clear 'alimente le Combobox initial (Combobox1) If CbxIndex = 1 Then 'Boucle sur les lignes de la colonne A (à partir de la 2eme ligne) For J = 4 To NbLignes Obj = Ws.Range("A" & J) 'Remplit le ComboBox sans doublons If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("A" & J) Next J Else 'Alimentation conditionnelle des autres Combobox en fonction de 'ce qui est sélectionnée dans le contrôle précédent: '(La sélection du ComboBox1 définit le contenu du ComboBox2, 'La sélection du ComboBox2 définit le contenu du ComboBox3 ?etc...) For J = 4 To NbLignes If CStr(Ws.Range("A" & J).Offset(0, CbxIndex - 2)) = Cible Then Obj = Ws.Range("A" & J).Offset(0, CbxIndex - 1) If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("A" & J).Offset(0, CbxIndex - 1) End If Next J End If 'Enlève la sélection dans le ComboBox Obj.ListIndex = -1 End Sub
A voir également:
- Alimentation ComboBox avec plusieurs feuilles
- Comment faire un livret avec des feuilles a4 - Guide
- Regrouper plusieurs feuilles excel en une seule - Guide
- Bruler des feuilles de laurier - Guide
- Connaitre son alimentation pc - Forum Matériel & Système
- Comment savoir quelle alimentation il faut pour son pc ? ✓ - Forum Alimentation PC
2 réponses
Bonjour
principe pour sélectionner ta feuille de travail
Michel
principe pour sélectionner ta feuille de travail
Option Explicit
'----------------------------
Sub xxxx()
Dim Liste, Cptr As Byte
Liste = Array("1796", "1797", "1798")
For Cptr = 0 To Ubound(Liste)
With Sheets(Liste(Cptr))
MsgBox "nous travaillons sur la feuille " & Liste(Cptr)
'..........
End With
Next
End Sub
Michel
Bonjour,
Ce n'est pas du tout la m^me question...
sans ^tre péjoratif, tu sembles te perdre dans ce que tu veux faire. donc, prend une feuille et exprime ce que tu veux faire clairement et précisément, une sorte de faux cahier des charges et reviens nous voir
en attendant
petite remarque: si tu as des centaines de feuilles peut-^tre penser après ces définitions à Access
En attendant:
Ce n'est pas du tout la m^me question...
sans ^tre péjoratif, tu sembles te perdre dans ce que tu veux faire. donc, prend une feuille et exprime ce que tu veux faire clairement et précisément, une sorte de faux cahier des charges et reviens nous voir
en attendant
petite remarque: si tu as des centaines de feuilles peut-^tre penser après ces définitions à Access
En attendant:
Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
et faire un clic coller le raccourci dans votre message
Je me torture l'esprit depuis une semaine pour adapter ce principe mais je n'y arrive pas...
En fait mon but :
Quand l'USF est ouvert, on entre dans la combo1 une valeur (exp: "1796") cette valeur indique donc que les combobox2, 3, 4 et 5 seront alimentées respectivement par les colonnes A, B, C, D de la feuille "1796"
Si la valeur de la combo1 avait été "RENAULT" elles auraient été alimenté par les colonnes A,B,C,D de la feuille "RENAULT".
J'avais bien pensé à créer des listes mais je vais avoir des centaines de feuilles avec à chaque fois les mêmes colonnes A,B,C,D. donc des des centaines de listes... l'horreur :-D