Probleme propriété RowSource ComboBox

Bonjour

je viens de crée un simple userform qui me permet d'afficher les informations de mon tableau sur un userform, le principe c'est je fais la recherche par ID de la colonne A (cela je le gére par une ComboBox) une fois que l'id est trouvé il m'affiche toute la ligne de tableau dans mon userform.

le probleme c'est que le nom de ma feuil excel là ou y a mon tableau à des caractères spéciaux et le Row source qui me permet d'alimenter ma ComboBox n'accepte pas que la feuil a des caractères spéciaux

je cherche de l'aide svp .

merci d'avance

voici en PJ mon ficher et une capture du problème.

capture

Bonjour,

Quel est le nom de ta feuille avec des caractères spéciaux?

Sinon, nomme la autrement...

le nom de ma feuil c'est : $2.2-RFQ_package

en faite je peux pas changer car c'est prédéfinie par mon client, du coup je dois trouver une sollution pour gerer cela, tu a une idée stp ?

Bonjour le forum

Bonjour Damien, pijaku

Essaie ceci après suppression des valeurs dans ton RowSource du Cbo1

Private Sub UserForm_Initialize()
ComboBox1.List = Feuil1.Range("A2:A" & Feuil1.[A65000].End(xlUp).Row).Value
End Sub

Et retourne voir ma réponse dans ton autre post. Comme l'a expliqué Xmenpl, on peut aisément supprimer la valeur "F-" contenue dans le TextBox2. Il y a une solution mais si celle donnée jusqu'à présent te convient....

Bonjour le forum

Bonjour Damien, pijaku

Essaie ceci après suppression des valeurs dans ton RowSource du Cbo1

Private Sub UserForm_Initialize()
ComboBox1.List = Feuil1.Range("A2:A" & Feuil1.[A65000].End(xlUp).Row).Value
End Sub

Et retourne voir ma réponse dans ton autre post. Comme l'a expliqué Xmenpl, on peut aisément supprimer la valeur "F-" contenue dans le TextBox2. Il y a une solution mais si celle donnée jusqu'à présent te convient....

ça ne marche pas car je veux que ma feuil s'appel $2.2-RFQ_package et pas Feuil1, il veut pas accepter les caractères spéciaux

Re le fil,

Oupssss, j'avais mal lu la question ....

Essai ceci

Private Sub UserForm_Initialize()
ComboBox1.List = Sheets(1).Range("A2:A" & Sheets(1).[A65000].End(xlUp).Row).Value
End Sub

Renomme la feuille uniquement pendant la durée de vie de l'userform :

Private Sub UserForm_Initialize()
    Sheets("$2.2-RFQ_package").Name = "Feuille321"
    ComboBox1.RowSource = "Feuille321!A2:A22"
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Sheets("Feuille321").Name = "$2.2-RFQ_package"
End Sub

ou :

Utilise la propriété List pour remplir ta combobox...

Bonjour le fil, bonjour le forum,

Damien, teste avant de parler ! Ça marche puisque ne ce n'est plus le nom de l'onglet que tu as donné mais le nom générique (CodeName) qu'Ericcool te propose. Tu peux aussi adapter avec :

Private Sub UserForm_Initialize()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)

Set O = Worksheets("$2.2-RFQ_package") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
ComboBox1.List = O.Range("A3:A" & DL).Value 'alimente la ComboBox1
End Sub

Perso, j'évite toujours la méthode RowSource que je trouve peu fiable...

[Édition]

Ooops Pijaku, nos posts se sont croisé

Bonjour

voila un test qui liste uniquement les "ID" car ton tableaux est pas terrible

A voir

Bonjour le fil,

Bonjour ThauThème, archer

Vite fait avant le repas. Pour enlever les blancs (pas joli) de ton Cbo

Private Sub UserForm_Initialize()
Dim cel As Range
ComboBox1.Clear

 For Each cel In Sheets(1).Range("A2:A22")   ' <== A adapter à la plage
If cel.Value <> "" Then ComboBox1.AddItem cel.Value
Next cel
'ComboBox1.List = Sheets(1).Range("A2:A" & Sheets(1).[A65000].End(xlUp).Row).Value
End Sub

Bonjour le fil, bonjour le forum,

Ta méthode, Ericcool, n'est pas valable car le bouton aller à utilise la propriété ListIndex de la ComboBox1 et donc ne va plus coïncider à partir de ID17. Dans ce cas j'aurais plutôt utiliser la méthode d'Archer, avec une ComboBox à deux colonnes ou l'une, masquée, récupère le numéro de ligne.

J'avais commencé à coder un code très similaire à celui d'Archer mais j'ai abandonné quand j'ai vu que ID100 était répétés 3 fois avec exactement les même valeurs (ListBox ou pas pour affichier les ID identiques ou Dictionary). Puis quand j'ai vu ça :

Private Sub TextBox4_change()
With Me.TextBox4
.SetFocus
.Text = "F-"
.MaxLength = 100     'A adapter - Dans le présent cas, tu peux entrer 6 caractères donc F- et 4 chiffres
End With
End Sub

J'ai pensé c'est quoi ce b***el et j'ai laissé tombé. Tout à fait d'accord avec Archer, vraiment pas terrible ton tableau. Si tu veux utiliser VBA il te faux mieux structurer tes données...

@tous,

Je pense que le tableau transmis est un exemple réalisé à "la va-vite".

Le vrai tableau, lui (en tout cas je l'espère) ne doit comporter que des ID(s) unique...

C'est le principe d'un ID...

Si ce n'est pas le cas, je rejoins les copains du forum... Le tableau structuré comme ça, c'est du caca...

Le plus simple étant, ici, de transformer le tableau en tableau structuré (menu Insertion >> Tableau) nommé Tableau1.

Le code devient alors :

Private Sub UserForm_Activate()
    ComboBox1.RowSource = "=Tableau1[Doc_ID]"
End Sub

Ou "en dur" : dans la propriété RowSource, saisir : Tableau1[Doc_ID]

super super super ça marche bien vos proposition merci beaucoup

Rechercher des sujets similaires à "probleme propriete rowsource combobox"