Ne pas faire apparaître les "N/D" de ma BdD dans combobox
Résolu
jubatail
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
jubatail Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
jubatail Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
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 apparaitre dans les suggestions snap de quelqu'un - Forum Instagram
- Comment ne pas apparaître en ligne sur 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 ^^