Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

recuperer colonne dans onglet en combobox.Additem

  • Initiateur de la discussion Initiateur de la discussion bruno66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bruno66

XLDnaute Occasionnel
bonjour j'ai un code comme cela dans une boite de dialogue


Private Sub UserForm_Initialize()
ComboBox1.AddItem ("nom1")
ComboBox1.AddItem ("nom2")
ComboBox1.AddItem ("nom3")
ComboBox1.AddItem ("nom4")
ComboBox1.AddItem ("nom5")
End Sub

j'aimerais pour l'adapter afin de voir tous les noms présent dans un fichier"commande" la liste des noms est dans
dans la plage a3...a500
merci de votre aide
j'ai pas trouve le filtre deroulant faisant cela suivant une plage donnée
merci d'avance
 
Re : recuperer colonne dans onglet en combobox.Additem

bonsoir,

voir selon cet exemple:

Code:
'RemplirComboBox
'1'Selection de la première cellule
   Sheets(NomFeuil).Cells(Lig, Col).Select
'2'Remplir le combo avec les éléments de la première cellule à la fin du tableau
   ComboBox1.List = Range(Selection, Selection.End(xlDown)).Value
 
Re : recuperer colonne dans onglet en combobox.Additem

Bonjour,

Une autre façon de faire :

A ) Si tu n'as pas aucune donnée en A:A, cela va planter, il faudrait
Modifier légèrement le code
B ) Tu adaptes le nom de la feuille où sont tes données.


'----------------------------------
Private Sub UserForm_Initialize()
With Worksheets("Feuil1")
Me.Combobox1.List = .Range("A1:A" & _
.Range("A65536").End(xlUp).Row).Value
End With
End Sub
'----------------------------------
 
Re : recuperer colonne dans onglet en combobox.Additem

bonsoir Michd
je viens d'adapter ton code dans mon fichier ... par contre comment faire pour n'avoir qu'une seule fois le nom ecrit et ne pas avoir les noms identiques en double... dans la saisie semi automatique
sinon le code fonctionne
merci d'avance
 
Re : recuperer colonne dans onglet en combobox.Additem

| par contre comment faire pour n'avoir qu'une seule fois le nom ecrit et ne
| pas avoir les noms identiques en double... dans la saisie semi automatique

Ma question : Comment faire pour que le demandeur pense à ce qu'il veut et qu'il
prenne le temps nécessaire pour formuler sa question? Tu as une idée?????????



Sans doublon et par ordre alphabétique.
'----------------------------------
Private Sub UserForm_Initialize()
Dim Rg As Range

Application.ScreenUpdating = False
Set Rg = Worksheets.Add.Range("A1")

With ThisWorkbook.Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter xlFilterCopy, , Rg, True
End With
With Rg.CurrentRegion
.Sort Key1:=.Cells(2, 1), order1:=xlAscending, Header:=xlYes
Me.ComboBox1.Clear
Me.ComboBox1.List = .Offset(1).Resize(.Rows.Count - 1).Value
End With
End With
Application.DisplayAlerts = False
Sheets(Rg.Parent.Name).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
'----------------------------------
 
Re : recuperer colonne dans onglet en combobox.Additem

bonjour le code fonctionne à merveille concernant le filtrage sur une feuille en colonne "1 " et à partir de la ligne 3 avec la Me.Combox.1
ayant une autre combox dans ce fichiers je souhaite rajouter le meme code en dessous mais avec une combox.3
par contre, la selection de la feuille est la meme, sauf les données à recuperer en colonne 5 et a partir de la ligne 3
defaut signalé dans le code ci dessous en rouge et code en bleu le morceau qui doit être en défaut

Private Sub UserForm_Initialize()
Dim Rg As Range

Application.ScreenUpdating = False
Set Rg = Worksheets.Add.Range("A1")

With ThisWorkbook.Worksheets("Vos commande")
With .Range("A3:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter xlFilterCopy, , Rg, True
End With
With Rg.CurrentRegion
.Sort Key1:=.Cells(3, 1), order1:=xlAscending, Header:=xlYes
Me.ComboBox1.Clear
Me.ComboBox1.List = .Offset(1).Resize(.Rows.Count - 1).Value
End With
End With
Application.DisplayAlerts = False
Sheets(Rg.Parent.Name).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
'me signale erreur de compilation déclaration inexistante dans la portée en cours
Dim Rg As Range 'Dim Rg As Range 'juste ce morceau en bleu

Application.ScreenUpdating = False
Set Rg = Worksheets.Add.Range("A1")

With ThisWorkbook.Worksheets("Vos commande")
With .Range("e3:A" & .Range("e65536").End(xlUp).Row)
.AdvancedFilter xlFilterCopy, , Rg, True
End With
With Rg.CurrentRegion
.Sort Key1:=.Cells(3, 5), order1:=xlAscending, Header:=xlYes
Me.ComboBox3.Clear
Me.ComboBox3.List = .Offset(1).Resize(.Rows.Count - 1).Value
End With
End With
Application.DisplayAlerts = False
Sheets(Rg.Parent.Name).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub


merci de votre aide précieuse...encore une fois
 
Dernière édition:
Re : recuperer colonne dans onglet en combobox.Additem

Bonjour Bruno66 le forum
Bruno66, 252 posts à ton actif et tu ne sais toujours pas respecter tes interlocuteurs?
Tu ne sais toujours pas sélectionner le code et cliquer sur la balise de code # pour rendre tes messages plus lisibles
enfin voilà la prochaine fois au moins essayes.
Pour ta demande, tu penses que de déclarer rg plusieurs fois sert à quelque chose?
a+
Papou😱
 
Re : recuperer colonne dans onglet en combobox.Additem

bonjour le forum et merci Paritec de la remarque en passant oublié de ma part ... désolé
je reviens parmi vous avec une petite modification que je dois apporter au premier code que j'ai eu par la bonté de Michd il fonctionne a merveille pas de souci elle est en place dans mon fichier
mon souci , j'ai une autre combox a ajouter a la première
dans la première combox, je récupère le contenu de la première colonne 1 et à partir de la ligne 3 jusque la dernière ligne sans doublon..
avec ma combox.3 je souhaite arrivé au même résultat .. mais en prenant la colonne E a partir de la ligne 3 jusque dernière ligne présente et sans doublon

Code:
Private Sub UserForm_Initialize()
Dim Rg As Range

Application.ScreenUpdating = False
Set Rg = Worksheets.Add.Range("A1")

With ThisWorkbook.Worksheets("Vos commande")
With .Range("A3:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter xlFilterCopy, , Rg, True
End With
With Rg.CurrentRegion
.Sort Key1:=.Cells(3, 1), order1:=xlAscending, Header:=xlYes
Me.ComboBox1.Clear
Me.ComboBox1.List = .Offset(1).Resize(.Rows.Count - 1).Value
End With
End With
Application.DisplayAlerts = False
Sheets(Rg.Parent.Name).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True

'me signale erreur de compilation déclaration inexistante dans la portée en courset dans le code"Rg As Range  encadré bleu 

Dim Rg As Range 
Application.ScreenUpdating = False
Set Rg = Worksheets.Add.Range("A1")

With ThisWorkbook.Worksheets("Vos commande")
With .Range("e3:A" & .Range("e65536").End(xlUp).Row)
.AdvancedFilter xlFilterCopy, , Rg, True
End With
With Rg.CurrentRegion
.Sort Key1:=.Cells(3, 5), order1:=xlAscending, Header:=xlYes
Me.ComboBox3.Clear
Me.ComboBox3.List = .Offset(1).Resize(.Rows.Count - 1).Value
End With
End With
Application.DisplayAlerts = False
Sheets(Rg.Parent.Name).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub


merci de votre aide précieuse...encore une fois
 
Re : recuperer colonne dans onglet en combobox.Additem

Si j'ai compris ta demande, ça pourrait donner ceci :

VB:
Private Sub UserForm_Initialize()
Dim Rg As Range, Rng As Range

Application.ScreenUpdating = False
Set Rg = Worksheets.Add.Range("A1")
Set Rng = Rg.Offset(, 1)

With ThisWorkbook.Worksheets("Vos commande")
    With .Range("A3:A" & .Range("A65536").End(xlUp).Row)
        .AdvancedFilter xlFilterCopy, , Rg, True
    End With
    With .Range("E3:E" & .Range("E65536").End(xlUp).Row)
        .AdvancedFilter xlFilterCopy, , Rng, True
    End With
    With Rg.CurrentRegion
        .Sort Key1:=.Cells(3, 1), order1:=xlAscending, Header:=xlYes
        Me.ComboBox1.Clear
        Me.ComboBox1.List = .Offset(1).Resize(.Rows.Count - 1).Value
    
        .Sort Key1:=.Cells(3, 2), order1:=xlAscending, Header:=xlYes
        Me.ComboBox2.Clear
        Me.ComboBox2.List = .Offset(1, 1).Resize(.Rows.Count - 1).Value
    End With
 End With
Application.DisplayAlerts = False
Sheets(Rg.Parent.Name).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
 
Dernière édition:
Re : recuperer colonne dans onglet en combobox.Additem

Re- bonjour le forum et forumeurs
je reviens avec un morceau de fichier concernant ma demande initiale.... qui a bien évolué depuis
j'ai réussi partiellement a adapté le code sur 2 colonne juste un petit souci dans le choix automatique du client me prend pas la colonne E
j'ai épuré au maximum le fichier, (bouton onglet etc.... )je réadapterais ensuite dans mon fichier finale... et même éventuellement pouvoir rajouter une autre combox...par la suite
je vous mets le fichier joint .. en attendant je continue ma recherche de mon coté merci de votre aide
vous devrez activez le contenu pas de problème dedans un seul onglet
 
Dernière édition:
Re : recuperer colonne dans onglet en combobox.Additem

ca a l'aire de fonctionner , sauf que c'était la combox.3 et non 2 qu'il fallait dans le code je regarde tout cela et je ferais un petit fichier .. par contre , pourrait tu me mettre l'explication exact du code ... merci encore du coup de main( plus remue méninge )
Merci Michd
je t'envoie en message prive une demande concernant la modification d'un fichier excel sous un mode non transformable ...
 
Dernière édition:
Re : recuperer colonne dans onglet en combobox.Additem

| je t'envoie en message prive une demande concernant la modification d'un fichier excel sous un mode non transformable ...

Désolé de te décevoir, mais je ne cherche pas du boulot. J'interviens sur ce groupe seulement
pour mon bon plaisir. À moins que je demande (c'est très rare) à un usager de me faire
parvenir des infos. par courriels, je ne fais pas suite aux messages que je reçois en privé
pour la création ou correction de code. Tu peux poser toutes les questions que tu désires
sur ce forum ou d'autres, et, après l'apprentissage dépend, je suppose, des efforts que tu y
mets.

'Déclaration de 2 variables de type "Range"
Dim Rg As Range, Rng As Range

'empêche le rafraichissement de l'écran durant la procédure
Application.ScreenUpdating = False

'Création d'une nouvelle feuille.
La variable Rg pointe sur la cellule A1 de la nouvelle feuille
Set Rg = Worksheets.Add.Range("A1")

La variable Rng pointe sur la colonne B1 de la nouvelle feuille
Ceci est réalisé grâce à la propriété "Offset de l'objet range
Set Rng = Rg.Offset(, 1)

Avec la feuille "Vos commande" du classeur où se retrouve le code
'Attention à la faute de français ... il manque un "s" à commande
With ThisWorkbook.Worksheets("Vos commande")

Avec la plage A3:A et la dernière cellule occupée de cette colonne de la feuille "Vos commande"
With .Range("A3:A" & .Range("A65536").End(xlUp).Row)

Application d'un filtre élaboré sans doublon qui est copié vers la cellule Rg
Voir l'aide VBA de la méthode sur AdvancedFilter pour comprendre les paramètres
.AdvancedFilter xlFilterCopy, , Rg, True
End With

Le même traitement est fait à la colonne E3:Ex de la feuille "Mes commande"
With .Range("E3:E" & .Range("E65536").End(xlUp).Row)
.AdvancedFilter xlFilterCopy, , Rng, True
End With

Avec les données sur la feuille ajoutée,
With Rg.CurrentRegion
'un tri est fait sur la première colonne A:A
.Sort Key1:=.Cells(3, 1), order1:=xlAscending, Header:=xlYes
'On s'assure que le contenu du combobox est vide
Me.ComboBox1.Clear

'La propriété "List" (qui est en fait un tableau (array)) du combobox est utilisé pour remplir le combobox
'La combinaison du "Offset" et de "Resize" fait un boulot similaire à la commande "Decaler" de la feuille de calcul
Me.ComboBox1.List = .Offset(1).Resize(.Rows.Count - 1).Value

Même traitement, mais cette fois pour la colonne B:B des données de la feuille ajoutée.
.Sort Key1:=.Cells(3, 2), order1:=xlAscending, Header:=xlYes
Me.ComboBox2.Clear
Me.ComboBox2.List = .Offset(1, 1).Resize(.Rows.Count - 1).Value
End With
End With

'Afin d'éviter d'avoir un message de demande de confirmation pour
'la suppression de la feuille
Application.DisplayAlerts = False

'Suppression de la feuille ajoutée
Sheets(Rg.Parent.Name).Delete

'remise en place de l'alerte pour les éventuels messages émit par Excel
Application.DisplayAlerts = True

'Provoque le rafraichissement de l'écran et affiche le résultat.
Application.ScreenUpdating = True
End Sub
 
Re : recuperer colonne dans onglet en combobox.Additem

Bonjour Bruno66 le forum
@ Bruno66 merci pour la modification Bruno66 avoue que c'est plus lisible comme cela.
@ MIChD tu peux aussi apprendre à te servir des balises de code, si après 157 posts tu ne sais pas faire cela !!!!!!
lis au moins les recommandations plus bas post 7
a+
Papou😱
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…