COMBOBOX change et outil de recherche dans BdD
Fermé
jubatail
Messages postés
37
Date d'inscription
lundi 31 juillet 2017
Statut
Membre
Dernière intervention
14 septembre 2017
-
30 août 2017 à 10:27
Whismeril Messages postés 18279 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 mars 2023 - 30 août 2017 à 14:15
Whismeril Messages postés 18279 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 mars 2023 - 30 août 2017 à 14:15
A voir également:
- COMBOBOX change et outil de recherche dans BdD
- Recherche musique - Guide
- Recherche par image - Guide
- Télécharger outil capture d'écran ciseaux - Télécharger - Capture d'écran
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Excel
- Copiez la ligne indiquant aux moteurs de recherche de ne pas référencer la page. ✓ - Forum Référencement
4 réponses
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
30 août 2017 à 13:42
30 août 2017 à 13:42
Bonjour
la balise de code invalide la balise de gras, mais bon on voit écrit <gras>...</gras> dans ton code.
VBA, c'est pas mon fort, mais à vue de nez, ici
Et là
Une solution simple est de mettre un booléen global, avant toutes ces boucles tu le passes à True, et après tu le remets False.
Dans l'événement, tu agis seulement quand ce booléen vaut False.
la balise de code invalide la balise de gras, mais bon on voit écrit <gras>...</gras> dans ton code.
VBA, c'est pas mon fort, mais à vue de nez, ici
Set obj = Me.Controls("ComboBox_CAT_" & inc) obj est un comboxbox.
Et là
obj.Value = Sheets(NomFeuille).Cells(i, inc + 3).Texttu changes sa valeur, donc l'évèment changed est déclenché.
Une solution simple est de mettre un booléen global, avant toutes ces boucles tu le passes à True, et après tu le remets False.
Dans l'événement, tu agis seulement quand ce booléen vaut False.
jubatail
Messages postés
37
Date d'inscription
lundi 31 juillet 2017
Statut
Membre
Dernière intervention
14 septembre 2017
30 août 2017 à 14:01
30 août 2017 à 14:01
merci pour ta réponse qui m'a permis de comprendre :)
je te montre la procédure actualiser boxe ou justement la j'ai mis un booléen global!! est ce que je dois faire pareil pour l'initialisation de la userform du coup ?
je te montre la procédure actualiser boxe ou justement la j'ai mis un booléen global!! est ce que je dois faire pareil pour l'initialisation de la userform du coup ?
jubatail
Messages postés
37
Date d'inscription
lundi 31 juillet 2017
Statut
Membre
Dernière intervention
14 septembre 2017
30 août 2017 à 14:01
30 août 2017 à 14:01
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
End Sub
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
30 août 2017 à 14:15
30 août 2017 à 14:15
Dans ce cas utilise eventFlag qui existe déjà.