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
- Comment ne pas apparaître en ligne sur whatsapp - Guide
- Apparaitre hors ligne instagram - Guide
- Ne pas apparaitre dans les suggestions instagram - Forum Messagerie
- Comment apparaitre dans les suggestions facebook de quelqu'un - Forum Facebook
- Comment ne pas apparaître en ligne sur facebook - Guide
4 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
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
15 mars 2023
2 712
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
15 mars 2023
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