Ne pas faire apparaître les "N/D" de ma BdD dans combobox
Résolu/Fermé
jubatail
Messages postés
37
Date d'inscription
lundi 31 juillet 2017
Statut
Membre
Dernière intervention
14 septembre 2017
-
29 août 2017 à 16:09
jubatail Messages postés 37 Date d'inscription lundi 31 juillet 2017 Statut Membre Dernière intervention 14 septembre 2017 - 31 août 2017 à 15:49
jubatail Messages postés 37 Date d'inscription lundi 31 juillet 2017 Statut Membre Dernière intervention 14 septembre 2017 - 31 août 2017 à 15:49
A voir également:
- Ne pas faire apparaître les "N/D" de ma BdD dans combobox
- Apparaitre hors ligne instagram - Guide
- Comment apparaitre dans les suggestions snap de quelqu'un - Forum Snapchat
- Comment apparaitre dans les suggestions facebook de quelqu'un - Forum Facebook
- Comment ne pas apparaître en ligne sur whatsapp - Guide
- Suggestions d'amis - Forum Instagram
4 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
31 août 2017 à 12:19
31 août 2017 à 12:19
Bonjour,
Essayez comme ceci :
Essayez comme ceci :
Dim DL As Long For inc = 1 To NbColonne 'nommage des labels Set obj = Me.Controls("Label" & inc) obj.Caption = NomColonne(inc - 1) 'remplissage des boxs Set obj = Me.Controls("ComboBox_CAT_" & inc) DL = Sheets(NomFeuille).Cells.Find("*", , LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row For i = 4 To DL 'évite de répeter deux fois la même donnée If Sheets(NomFeuille).Cells(i, inc + 3).Text <> "N/D" Then obj.Value = Sheets(NomFeuille).Cells(i, inc + 3).Text If obj.ListIndex = -1 Then obj.AddItem Sheets(NomFeuille).Cells(i, inc + 3).Text End If Next i 'on met des boxs vides à l'ouverture de la fenêtre obj.ListIndex = -1 Next
fabien25000
Messages postés
673
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
28 juillet 2022
59
Modifié le 31 août 2017 à 11:34
Modifié le 31 août 2017 à 11:34
Bonjour,
Je ne sais pas sur quel progamme vous travaillez mais si vous êtes sur excel avez vous essayé avant la ligne 12 un
Je ne sais pas sur quel progamme vous travaillez mais si vous êtes sur excel avez vous essayé avant la ligne 12 un
if not (obj.value = "N/D") thenpuis le reste de votre code?
jubatail
Messages postés
37
Date d'inscription
lundi 31 juillet 2017
Statut
Membre
Dernière intervention
14 septembre 2017
31 août 2017 à 11:50
31 août 2017 à 11:50
je viens d'essayer seulement que ca bug au niveau de next i ligne 13
jubatail
Messages postés
37
Date d'inscription
lundi 31 juillet 2017
Statut
Membre
Dernière intervention
14 septembre 2017
31 août 2017 à 14:09
31 août 2017 à 14:09
super merci beaucoup cela fonctionne à merveille
jubatail
Messages postés
37
Date d'inscription
lundi 31 juillet 2017
Statut
Membre
Dernière intervention
14 septembre 2017
31 août 2017 à 14:11
31 août 2017 à 14:11
je peux vous demandez autre chose car ca bloque au meme endroit ??
IL faudrait que le client ne puisse pas écrire dans les combobox car sinon sa peut créer des bug.
j'ai essayer diffèrente façon
d'abord en changeant la propriété style de la box et aussi en tapant un bout de code mais pas moyen !!
IL faudrait que le client ne puisse pas écrire dans les combobox car sinon sa peut créer des bug.
j'ai essayer diffèrente façon
d'abord en changeant la propriété style de la box et aussi en tapant un bout de code mais pas moyen !!
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
31 août 2017 à 15:14
31 août 2017 à 15:14
La propriété Style sert pourtant à cela :
Dim DL As Long For inc = 1 To NbColonne 'nommage des labels Set obj = Me.Controls("Label" & inc) obj.Caption = NomColonne(inc - 1) 'remplissage des boxs Set obj = Me.Controls("ComboBox_CAT_" & inc) obj.Style = 0 DL = Sheets(NomFeuille).Cells.Find("*", , LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row For i = 4 To DL 'évite de répeter deux fois la même donnée If Sheets(NomFeuille).Cells(i, inc + 3).Text <> "N/D" Then obj.Value = Sheets(NomFeuille).Cells(i, inc + 3).Text If obj.ListIndex = -1 Then obj.AddItem Sheets(NomFeuille).Cells(i, inc + 3).Text End If Next i obj.Style = 2 'on met des boxs vides à l'ouverture de la fenêtre obj.ListIndex = -1 Next
jubatail
Messages postés
37
Date d'inscription
lundi 31 juillet 2017
Statut
Membre
Dernière intervention
14 septembre 2017
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
31 août 2017 à 15:49
31 août 2017 à 15:49
obj.style = 2fonctionne pas il fait buger ma procedure que j'ai mis ci-dessous et la ligne qui n'est pas en forme de code correspond à la ligne qui bloque !!
Voici le code qui permet d'actualiser les combobox lors d'un changement (une selection) dans l'une des combo
Private Sub actualiserBoxes() Dim inc As Integer, i As Integer Dim obj As Object Dim Ligne As Range Dim num As String, nom As String eventFlag = True ' on active le flag évènement pour ne pas appeler indéfiniment l'évènement "change" If Me.Visible = True Then ' si la userform a déjà été initialisée alors... Set obj = Me.ActiveControl num = Right(obj.Name, 1) ' on active le filtre concerné worksheets(NomFeuille).Range("$A$3:$AW$1000").AutoFilter Field:=num + 3, Criteria1:=obj.Value For inc = 1 To NbColonne Set obj = Me.Controls("ComboBox_CAT_" & inc) If "ComboBox_CAT_" & inc <> Me.ActiveControl.Name Then ' Si ce n'est pas la boxe sélectionnée alors... nom = obj.Value obj.Clear ' pour chaque ligne filtrée on récupère la valeur de la cellule concernée For Each Ligne In worksheets(NomFeuille).AutoFilter.Range.Columns(inc + 3).SpecialCells(xlCellTypeVisible).Cells obj.Value = Ligne.Text If obj.ListIndex = -1 And Ligne.Text <> sheets(NomFeuille).Cells(3, inc + 3).Text Then obj.AddItem Ligne.Text Next Else ' sinon on récupère juste la valeur active et on vide le contenu de la boxe sélectionnée nom = obj.Value obj.Clear End If
obj.Value = nom ' puis on replace la valeur initiale de la boxe (vide ou valeur qui avait été choisie par l'utilisateur)
Next End If ' libération mémoire et flag évènement Set obj = Nothing eventFlag = False
Ce code ressemble fortement a l'initialisation de la boxe et j'ai remarque que lors de l'initialisation il rentre dans cette procédure lors du remplissage des box car il considère qu'il y a un changement !! dommage lol
Merci pour vos réponse ultra rapide :)
31 août 2017 à 13:44
31 août 2017 à 14:00
en gros souvent quand je rajoute une ligne de code sa bug au même endroit ^^
31 août 2017 à 14:02