Ne pas faire apparaître les "N/D" de ma BdD dans combobox
Résolu
jubatail
Messages postés
39
Statut
Membre
-
jubatail Messages postés 39 Statut Membre -
jubatail Messages postés 39 Statut Membre -
Bonjour,
J'ai déjà essayé avec
bien-sur ça ne marche pas !!!
Merci d'avance de votre aide
cordialement
Julie
J'ai déjà essayé avec
comboBox1.Items.Remove("N/D") en le mettant a la fin de mon programme ci-dessous :
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)
For i = 4 To Sheets(NomFeuille).Cells.Find("*", , LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'évite de répeter deux fois la même donnée
obj.Value = Sheets(NomFeuille).Cells(i, inc + 3).Text
If obj.ListIndex = -1 Then obj.AddItem Sheets(NomFeuille).Cells(i, inc + 3).Text
Next i
'on met des boxs vides à l'ouverture de la fenêtre
obj.Value = ""
Next
bien-sur ça ne marche pas !!!
Merci d'avance de votre aide
cordialement
Julie
A voir également:
- Ne pas faire apparaître les "N/D" de ma BdD dans combobox
- Apparaitre hors ligne instagram - Guide
- Comment faire apparaître la tabulation sur word - Guide
- Comment ne pas apparaître en ligne sur facebook - Guide
- Comment faire apparaître le curseur sans souris - Guide
- Apparaitre hors ligne whatsapp - Guide
4 réponses
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
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?
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 !!
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
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 :)
en gros souvent quand je rajoute une ligne de code sa bug au même endroit ^^