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
Utilisateur anonyme - 30 août 2017 à 14:15
Utilisateur anonyme - 30 août 2017 à 14:15
A voir également:
- COMBOBOX change et outil de recherche dans BdD
- Changer de dns - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Télécharger outil capture d'écran ciseaux - Télécharger - Capture d'écran
- Outil de benchmark gratuit - Accueil - Utilitaires
- Recherche et remplacer word - Guide
4 réponses
Utilisateur anonyme
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