Je suis nouveau ici et j'aimerai avoir un peu d'aide. Je m'explique
J'aimerai pouvoir choisir entre 3 feuilles, et selon mon choix ça affiche les personnes inscrites sur la feuille
-> Si je choisi "IG", seulement les personnes répertoriées sur la feuille sont listés.
Alors ça fonctionne très bien pour 1 seule feuille, mais j'en ai plusieurs donc ça ne va pas trop...
J'ai déjà essayé plein de choses mais je n'ai jamais trouvé.
/!\ Aucune données ne sont vraies, ce ne sont pas de vrais noms,...
J'espère que le fichier passe auprès de la modération.
S'il faut d'autres explications je tâcherai de les fournir.
Je répondrai le plus vite possible si des gens répondent !
bonjour le fil, bonjour chti160
re bloblob
depuis que j'ai commencé à évaluer ce classeur, le fil à évolué, malgré tout je vous poste mon interprétation
dans la solution que je vous propose, dans initialize j'ai déplacé une partie du code vers le bouton choix du nom. j'ai aussi activé la feuille choisie par le bouton choix de la section et modifié l'alimentation de la combobox.
Code:
Private Sub ME_ChoixSection_Change()
If (ME_ChoixSection.Value = "IG") Then
Worksheets("IG").Activate
Else
If (ME_ChoixSection.Value = "AD") Then
Worksheets("AD").Activate
End If
If (ME_ChoixSection.Value = "CT") Then
Worksheets("CT").Activate
End If
End If
Set f = ActiveSheet
Clé = f.Range("A3:B" &...
Je vais reformuler avec le screenshot :
Dans la combobox "Choix de la section" il y a 3 données.
Ces 3 données doivent adapter la ComboBox "Choix du nom"
-> Si je choisi "IG", ça va lister que les noms présents dans la feuille IG, si je choisi AD, ceux de la feuille AD,...
ça fonctionne très bien pour 1 feuille seulement. Peut importe ce que je choisi, ça ne liste que les données de la feuille IG.
Et je pense que ça se modifie ici. à la place de 'Sheets("IG")', je devrai avoir 'Sheet(FeuilleSelectionnée)'
J'ai déjà fait un if pour activer la feuille que je veux, maintenant je dois adapter ça pour mettre dans le code ci-dessus.. Je pense ?
J'ai essayé ce que tu as fait mais ça ne correspond pas à ce que je veux, je crois que je m'exprime mal ou je fait des bêtises, désolé
bonjour le fil, bonjour chti160
re bloblob
depuis que j'ai commencé à évaluer ce classeur, le fil à évolué, malgré tout je vous poste mon interprétation
dans la solution que je vous propose, dans initialize j'ai déplacé une partie du code vers le bouton choix du nom. j'ai aussi activé la feuille choisie par le bouton choix de la section et modifié l'alimentation de la combobox.
Code:
Private Sub ME_ChoixSection_Change()
If (ME_ChoixSection.Value = "IG") Then
Worksheets("IG").Activate
Else
If (ME_ChoixSection.Value = "AD") Then
Worksheets("AD").Activate
End If
If (ME_ChoixSection.Value = "CT") Then
Worksheets("CT").Activate
End If
End If
Set f = ActiveSheet
Clé = f.Range("A3:B" & f.[B65000].End(xlUp).Row)
'-------------avec tri---------------
Call Tri(Clé, LBound(Clé), UBound(Clé))
Me.ChoixNom.List = f.Range("A3:B" & f.[B65000].End(xlUp).Row).Value
Me.ChoixNom = ""
B_ajout_Click
End Sub
j'ai aussi remplacé le choix de la feuille en dur par le choix de la feuille active
Code:
Private Sub ChoixNom_Click()
ligneEnreg = ActiveSheet.[A:B].Find(ChoixNom, LookIn:=xlValues).Row
bonjour le fil, bonjour chti160
re bloblob
depuis que j'ai commencé à évaluer ce classeur, le fil à évolué, malgré tout je vous poste mon interprétation
dans la solution que je vous propose, dans initialize j'ai déplacé une partie du code vers le bouton choix du nom. j'ai aussi activé la feuille choisie par le bouton choix de la section et modifié l'alimentation de la combobox.
Code:
Private Sub ME_ChoixSection_Change()
If (ME_ChoixSection.Value = "IG") Then
Worksheets("IG").Activate
Else
If (ME_ChoixSection.Value = "AD") Then
Worksheets("AD").Activate
End If
If (ME_ChoixSection.Value = "CT") Then
Worksheets("CT").Activate
End If
End If
Set f = ActiveSheet
Clé = f.Range("A3:B" & f.[B65000].End(xlUp).Row)
'-------------avec tri---------------
Call Tri(Clé, LBound(Clé), UBound(Clé))
Me.ChoixNom.List = f.Range("A3:B" & f.[B65000].End(xlUp).Row).Value
Me.ChoixNom = ""
B_ajout_Click
End Sub
j'ai aussi remplacé le choix de la feuille en dur par le choix de la feuille active
Code:
Private Sub ChoixNom_Click()
ligneEnreg = ActiveSheet.[A:B].Find(ChoixNom, LookIn:=xlValues).Row
Re
Pour GALOUGALOU et afin de me rassurer Lol
Je me pose la question de savoir ce que je n'ai pas compris dans la demande de blobob #1.
j'aimerai pouvoir choisir entre 3 feuilles, et selon mon choix ça affiche les personnes inscrites sur la feuille
-> Si je choisi "IG", seulement les personnes répertoriées sur la feuille sont listées.
j'ai compris qu'il fallait récupérer les Noms en Colonne 1 (A) de la feuille dont le Nom a été sélectionné dans le Combobox "ME_ChoixSection"
Ensuite de les Lister dans le Combobox "ChoixNom"
C'est ce que j'ai cru faire dans le Fichier que j'avais joint.
J'ai effectivement supprimé quelques fioritures, Comme le Double Trait en Ligne 2 des Feuilles Source.
A oui !
J'évite aussi les Activate et Select pour ce qui est des feuilles, cellules etc etc .
On peut très bien s'en passer dans ce cas (c'est ce que l'on m'a recommandé Lol)
Je n'ai rien fait d'autre comme code sur ce Fichier Lol
J'ai supprimé le Tri via la fonction "Tri" car je trie directement les données dans la Feuille.
D'ailleurs dans le Fichier de GALOUGALOU , elle ne sert à rien , si j'ai bien compris.
Voir explications :
Code:
Set f = ActiveSheet
Clé = f.Range("A3:B" & f.[B65000].End(xlUp).Row) 'on récupère la plage à trier (sur deux Colonnes)
'-------------avec tri---------------
Call Tri(Clé, LBound(Clé), UBound(Clé)) 'et on trie "clé" soit le tableau "a" donc aucune action sur la plage Source
'et après on récupère les valeurs sans tenir compte du fait qu'il y a des doublons dans la plage "A3:A "xxx" de la feuille source ??????
Plage "A3:A"xxx non triée donc.
Me.ChoixNom.List = f.Range("A3:A" & f.[A65000].End(xlUp).Row).Value 'ici
Me.ChoixNom = ""
Ci-dessous , le Code que j'ai fourni.
VB:
Private Sub ME_ChoixSection_Change()
Dim Ws_Source As Worksheet
Set Ws_Source = Worksheets(ME_ChoixSection.Text) 'On définit la feuille selon le choix fait dans le Combobox "ME_ChoixSection"
With Ws_Source 'avec la feuille ainsi définie
derlgn = .Cells(.Rows.Count, 1).End(xlUp).Row 'on détermine la dernière ligne non vide du Tableau des Données de cette feuille
If derlgn = 1 Then Exit Sub 'si la dernière ligne est la 1 c'est qu'il n'y a pas de Données
dercol = .Cells(1, .Columns.Count).End(xlToLeft).Column 'on détermine la dernière Colonne de la plage de données de cette feuille
With .Range(.Cells(1, 1), .Cells(derlgn, dercol)) 'avec la plage ainsi définie
.Sort key1:=.Cells(2, 1), order1:=xlAscending, Header:=xlYes 'On la trie
tbl_bdd = .Value 'on récupère les valeurs de cette plage
End With
End With
With Me.ChoixNom 'avec le Combobx des Noms
.Clear
For lgn = 2 To UBound(tbl_bdd, 1) 'pour chaque Ligne du tableau des valeurs
.Text = Trim(tbl_bdd(lgn, 1)) 'on affiche cette valeur dans le Combobox
If .ListIndex = -1 Then 'si pas de Concordence
.AddItem Trim(tbl_bdd(lgn, 1)) 'On ajoute la valeur a la Liste de ce Combobox
End If
Next
.ListIndex = -1 'on initialise le Combobox pour qu'il n'affiche rien
End With
End Sub
Code:
Je joins une vidéo de ce que mon Code fait !
Pour l'exemple, j'ai affiché la feuille (pour voir le Tri) et la concordance des Noms qui sont récupérés. (ça fait la même chose si l'on choisit une autre feuille)
Enfin ce fil est clo ,mais bon.
Bonne fin de Journée
Jean marie
Re
Pour GALOUGALOU et afin de me rassurer Lol
Je me pose la question de savoir ce que je n'ai pas compris dans la demande de blobob #1.
j'ai compris qu'il fallait récupérer les Noms en Colonne 1 (A) de la feuille dont le Nom a été sélectionné dans le Combobox "ME_ChoixSection"
Ensuite de les Lister dans le Combobox "ChoixNom"
C'est ce que j'ai cru faire dans le Fichier que j'avais joint.
J'ai effectivement supprimé quelques fioritures, Comme le Double Trait en Ligne 2 des Feuilles Source.
A oui !
J'évite aussi les Activate et Select pour ce qui est des feuilles, cellules etc etc .
On peut très bien s'en passer dans ce cas (c'est ce que l'on m'a recommandé Lol)
Je n'ai rien fait d'autre comme code sur ce Fichier Lol
J'ai supprimé le Tri via la fonction "Tri" car je trie directement les données dans la Feuille.
D'ailleurs dans le Fichier de GALOUGALOU , elle ne sert à rien , si j'ai bien compris.
Voir explications :
Code:
Set f = ActiveSheet
Clé = f.Range("A3:B" & f.[B65000].End(xlUp).Row) 'on récupère la plage à trier (sur deux Colonnes)
'-------------avec tri---------------
Call Tri(Clé, LBound(Clé), UBound(Clé)) 'et on trie "clé" soit le tableau "a" donc aucune action sur la plage Source
'et après on récupère les valeurs sans tenir compte du fait qu'il y a des doublons dans la plage "A3:A "xxx" de la feuille source ??????
Plage "A3:A"xxx non triée donc.
Me.ChoixNom.List = f.Range("A3:A" & f.[A65000].End(xlUp).Row).Value 'ici
Me.ChoixNom = ""
Ci-dessous , le Code que j'ai fourni.
VB:
Private Sub ME_ChoixSection_Change()
Dim Ws_Source As Worksheet
Set Ws_Source = Worksheets(ME_ChoixSection.Text) 'On définit la feuille selon le choix fait dans le Combobox "ME_ChoixSection"
With Ws_Source 'avec la feuille ainsi définie
derlgn = .Cells(.Rows.Count, 1).End(xlUp).Row 'on détermine la dernière ligne non vide du Tableau des Données de cette feuille
If derlgn = 1 Then Exit Sub 'si la dernière ligne est la 1 c'est qu'il n'y a pas de Données
dercol = .Cells(1, .Columns.Count).End(xlToLeft).Column 'on détermine la dernière Colonne de la plage de données de cette feuille
With .Range(.Cells(1, 1), .Cells(derlgn, dercol)) 'avec la plage ainsi définie
.Sort key1:=.Cells(2, 1), order1:=xlAscending, Header:=xlYes 'On la trie
tbl_bdd = .Value 'on récupère les valeurs de cette plage
End With
End With
With Me.ChoixNom 'avec le Combobx des Noms
.Clear
For lgn = 2 To UBound(tbl_bdd, 1) 'pour chaque Ligne du tableau des valeurs
.Text = Trim(tbl_bdd(lgn, 1)) 'on affiche cette valeur dans le Combobox
If .ListIndex = -1 Then 'si pas de Concordence
.AddItem Trim(tbl_bdd(lgn, 1)) 'On ajoute la valeur a la Liste de ce Combobox
End If
Next
.ListIndex = -1 'on initialise le Combobox pour qu'il n'affiche rien
End With
End Sub
Code:
Je joins une vidéo de ce que mon Code fait !
Pour l'exemple, j'ai affiché la feuille (pour voir le Tri) et la concordance des Noms qui sont récupérés. (ça fait la même chose si l'on choisit une autre feuille)
Enfin ce fil est clo ,mais bon.
Bonne fin de Journée
Jean marie
Re
pas grave , je vais passer à autre chose Lol
y'a de quoi faire sur le Forum
pour ne pas mourir idiot
une réponse à ma question sur les doublons de Nom ?
Jean marie
re chti160
j'ai pris connaissance de la demande de bloblob hier soir, et cela m'a amusé d'essayer de trouver une solution.
perso, j'ai rapidement vu que le développement aurait dû aller plus loin que de gérer uniquement les noms dans la deuxième combobox.
J'ai supprimé le Tri via la fonction "Tri" car je trie directement les données dans la Feuille.
D'ailleurs dans le Fichier de GALOUGALOU , elle ne sert à rien , si j'ai bien compris.
Pour apporter un début de réponse, je me suis juste focalisé sur les noms sans être sûr de faire le tour de la problématique.
à l'ouverture ce matin, j'ai vu ta solution. Sans l'évaluer, j'ai posté mon début de solution qui ne gère pas la totalité de la problématique, et puis je suis allé cultiver mes fleurs et j'ai profité de cette journée en essayant d'oublier les problèmes d'actualité, ce qui ne m'empêche pas d'avoir des pensées très tristes, rapport au devenir du peuple ukrainien. Ce soir, je consulte le forum et je vois maintenant tes messages. Connaissant ta maitrise d'excel, je ne doute pas que tu ais géré avec beaucoup de pertinence. Désolé de ne pas avoir répondu plut tôt.
cdt
galougalou