[VBA] Problème de selection
Résolu/Fermé
mat67000
Messages postés
400
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
-
4 mai 2007 à 15:02
mat67000 Messages postés 400 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 10 décembre 2019 - 9 mai 2007 à 16:00
mat67000 Messages postés 400 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 10 décembre 2019 - 9 mai 2007 à 16:00
A voir également:
- [VBA] Problème de selection
- Excel compter cellule couleur sans vba - Guide
- Find vba - Astuces et Solutions
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Inverser selection excel - Forum Excel
- Vba attendre 1 seconde ✓ - Forum VB / VBA
10 réponses
blux
Messages postés
26824
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
5 mai 2025
3 337
4 mai 2007 à 15:53
4 mai 2007 à 15:53
Salut,
Donne-nous la codification des switches, comment ils sont nommés et quels sont ceux que tu veux et dans quel cas...
Donne-nous la codification des switches, comment ils sont nommés et quels sont ceux que tu veux et dans quel cas...
mat67000
Messages postés
400
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
4 mai 2007 à 16:08
4 mai 2007 à 16:08
Jai oublier de préciser une chose :
les switchs d'etage ont la nomenclature suivante => RSSTAE23 (avec le 2 ki représente l'etage)
les switchs d'imprimante ont la nomenclature suivante => RSSTAG03 mais le 0 ne représente pas l'etage car les switchs d'imprimante ne dépendent pas d'un etage
les switchs d'etage ont la nomenclature suivante => RSSTAE23 (avec le 2 ki représente l'etage)
les switchs d'imprimante ont la nomenclature suivante => RSSTAG03 mais le 0 ne représente pas l'etage car les switchs d'imprimante ne dépendent pas d'un etage
mat67000
Messages postés
400
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
4 mai 2007 à 16:12
4 mai 2007 à 16:12
Ah tien bonjour blux... heureux de te revoir, jespère que tes congés se sont bien passés :-)
Ba en fait je veux selectionner les switchs en fonction des etages, donc ça c'est bons (rappel switchs etages = RSSTAE..)
Et je veux quand je clic sur le bouton du groupe d'options "Imprimante" qu'il m'affiche juste les imprimantes, cela marche aussi (rappel. switchs d'imprimantes = RSSTAG..)
Mon seul souci réside dans le fait que mon code cherche les switchs en fonction du 7e caractère du nom de switch (cf. le code de mon 1er commentaire) et quand on est au RDC le 7e caractère est 0 ce qui est aussi le cas des switcsh d'imprimantes. Donc quand je choisi le RDC j'ai le choix entre les switchs du RDC mais aussi des Imprimantes.
Ba en fait je veux selectionner les switchs en fonction des etages, donc ça c'est bons (rappel switchs etages = RSSTAE..)
Et je veux quand je clic sur le bouton du groupe d'options "Imprimante" qu'il m'affiche juste les imprimantes, cela marche aussi (rappel. switchs d'imprimantes = RSSTAG..)
Mon seul souci réside dans le fait que mon code cherche les switchs en fonction du 7e caractère du nom de switch (cf. le code de mon 1er commentaire) et quand on est au RDC le 7e caractère est 0 ce qui est aussi le cas des switcsh d'imprimantes. Donc quand je choisi le RDC j'ai le choix entre les switchs du RDC mais aussi des Imprimantes.
blux
Messages postés
26824
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
5 mai 2025
3 337
4 mai 2007 à 16:12
4 mai 2007 à 16:12
Si j'ai bien compris :
quand on appuie le bouton 7, on doit faire la recherche sur les switches dont le 6ième car est G, et pour les autres cas, on recherche ceux qui ont E+valeur bouton en 6ième et 7ième car ?
quand on appuie le bouton 7, on doit faire la recherche sur les switches dont le 6ième car est G, et pour les autres cas, on recherche ceux qui ont E+valeur bouton en 6ième et 7ième car ?
mat67000
Messages postés
400
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
4 mai 2007 à 16:18
4 mai 2007 à 16:18
Je te met les valeurs de mon groupe d'options :
RDC = 0
1er etage = 1
...
...
6e et 7e etage = 6 (car les switchs du 7e etage sont au 6e)
Imprimantes = 7
donc oui quand on clic sur le 6e car (qui est le G pour les imprimantes et E pr les swtichs d'etages).
Et pour les autres cas , oui, on cherche ceeux qui ont E + valeur du 7e caractère pour connaitre l'etage.
Jusque là j'ai toujours utilisé que le 7e caractère qui représentait l'etage vu que les switchs ne dependent pas de ceux ci.
RDC = 0
1er etage = 1
...
...
6e et 7e etage = 6 (car les switchs du 7e etage sont au 6e)
Imprimantes = 7
donc oui quand on clic sur le 6e car (qui est le G pour les imprimantes et E pr les swtichs d'etages).
Et pour les autres cas , oui, on cherche ceeux qui ont E + valeur du 7e caractère pour connaitre l'etage.
Jusque là j'ai toujours utilisé que le 7e caractère qui représentait l'etage vu que les switchs ne dependent pas de ceux ci.
blux
Messages postés
26824
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
5 mai 2025
3 337
4 mai 2007 à 16:28
4 mai 2007 à 16:28
Bon ben, ça y est, alors ?
Plus qu'à SQLer tout ça...
Plus qu'à SQLer tout ça...
mat67000
Messages postés
400
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
>
blux
Messages postés
26824
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
5 mai 2025
4 mai 2007 à 16:31
4 mai 2007 à 16:31
Oui sauf que je n'ai pas trouvé comment mettre deux conditions au code SQL.
Avec juste le 7e caractère OK mais avec le 6e ET le 7e...... j'ai pas trouver la bonne syntaxe
Avec juste le 7e caractère OK mais avec le 6e ET le 7e...... j'ai pas trouver la bonne syntaxe
dam68
>
blux
Messages postés
26824
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
5 mai 2025
4 mai 2007 à 16:35
4 mai 2007 à 16:35
BLUX c'est pas bien c'que ta fait
(desoler de te couper mat67000)
(desoler de te couper mat67000)
blux
Messages postés
26824
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
5 mai 2025
3 337
>
dam68
4 mai 2007 à 16:41
4 mai 2007 à 16:41
Quel est ton problème ?
Tu demandes comment pirater Canal, je te coupe la chique et ça ne te plait pas ?
Regarde la charte du forum et reviens-y... Si ce n'est pas moi qui ferme, ce sera un(e) autre.
Tu demandes comment pirater Canal, je te coupe la chique et ça ne te plait pas ?
Regarde la charte du forum et reviens-y... Si ce n'est pas moi qui ferme, ce sera un(e) autre.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mat67000
Messages postés
400
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
4 mai 2007 à 17:01
4 mai 2007 à 17:01
Merci blux, je regarderais ta solution dès que j'aurai le temps car là j'ai d'autres taches à faire avant la fin de la journée, je te tiens au courant.
Par contre j'ai pas compris votre stress ???!!!
Par contre j'ai pas compris votre stress ???!!!
mat67000
Messages postés
400
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
4 mai 2007 à 17:03
4 mai 2007 à 17:03
mouai apriori vous avez un contentieux entre vous :-)
Pas de haine svp, on en vois déjà assez chez Mr S............ :p
Pas de haine svp, on en vois déjà assez chez Mr S............ :p
blux
Messages postés
26824
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
5 mai 2025
3 337
4 mai 2007 à 17:13
4 mai 2007 à 17:13
Pas de contentieux, je fais respecter la charte du site, en tant que modérateur...
codec canal
Je n'apprécie juste pas le fait que l'on vienne chasser sur d'autres terres que celles qui vous sont allouées... et je ne parle pas de la politesse...
Il peut se plaindre au webmaster, mettre un message dans le forum 'suggestions', ou plein d'autres choses, mais pas venir foutre le caillon dans une discussion technique. POINT.
codec canal
Je n'apprécie juste pas le fait que l'on vienne chasser sur d'autres terres que celles qui vous sont allouées... et je ne parle pas de la politesse...
Il peut se plaindre au webmaster, mettre un message dans le forum 'suggestions', ou plein d'autres choses, mais pas venir foutre le caillon dans une discussion technique. POINT.
mat67000
Messages postés
400
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
7 mai 2007 à 10:34
7 mai 2007 à 10:34
Bonjour
Bon j'ai testé ta solution Blux, somme toute logique.
J'ai donc fait ceci :
voilà avec ce code, lors du choix du RDC, les switchs selectionnables sont ceux de la précdente recherche (ex. je cherche les infos sur les switch du 2e etage puis ceux du RDC, la liste déroulante des switchs du RDC reste les switch du 2e etage...)
je cherche une autre solution
Bon j'ai testé ta solution Blux, somme toute logique.
J'ai donc fait ceci :
Private Sub Cadre_Etage_AfterUpdate() test = Me.Cadre_Etage.Value Dim First Dim toto toto = "E" 'Caractère qui différencie switch etage et imp. If test = "0" Then '(RDC = 0) First = "SELECT [N° Switch] FROM R_AJOUT_PRISE WHERE (mid([N° Switch],6,1) = " & toto & ") AND (mid([N° Switch],7,1) = " & test & "" Else If test = "7" Then '(Imp = 7) StrSql = "SELECT [N° Switch] FROM R_AJOUT_PRISE WHERE [LC_Type] = " & "'Imprimante'" & ";" Else StrSql = "SELECT [N° Switch] FROM R_AJOUT_PRISE WHERE (mid([N° Switch],7,1) = " & test & ") " End If End If Me.liste_switch.RowSource = StrSql End Sub
voilà avec ce code, lors du choix du RDC, les switchs selectionnables sont ceux de la précdente recherche (ex. je cherche les infos sur les switch du 2e etage puis ceux du RDC, la liste déroulante des switchs du RDC reste les switch du 2e etage...)
je cherche une autre solution
blux
Messages postés
26824
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
5 mai 2025
3 337
9 mai 2007 à 09:58
9 mai 2007 à 09:58
Oui mais là, tu enchaines les tests alors qu'un seul suffit !
Quel est l'intérêt de rajouter un test avec 'imprimante', on peut le déduire avec le 6ième car ?
Quel est l'intérêt de rajouter un test avec 'imprimante', on peut le déduire avec le 6ième car ?
mat67000
Messages postés
400
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
9 mai 2007 à 11:58
9 mai 2007 à 11:58
Bonjour Blux
J'avoue que je ne comprend pas trop ce que tu appelles "enchainer les tests" car j'interprete le code comme ceci, et je ne vois pas ce qui est superflu :
If test = "0" Then
First = "SELECT [N° Switch] FROM R_AJOUT_PRISE WHERE (mid([N° Switch],6,1) = " & toto & ") AND (mid([N° Switch],7,1) = " & test & ""
Else
=> Si test = RDC alors on selectionne le N° de switch où le 6e caractère est un E et où le 7e caractère est egal a test (donc à l'etage
If test = "7" Then '(Imp = 7)
StrSql = "SELECT [N° Switch] FROM R_AJOUT_PRISE WHERE [LC_Type] = " & "'Imprimante'" & ";"
Else
StrSql = "SELECT [N° Switch] FROM R_AJOUT_PRISE WHERE (mid([N° Switch],7,1) = " & test & ") "
=> Si test = Imprimante alors on selectionne le N° de switch dont le type est Imprimante. Sinon on selectionne le N° Switch où le 7e caractère est egale à Test càd à l'etage.
Tout ça me semble logique donc désolé de mon ignorance, mais je ne vois pas ce qu'il y a en trop...
J'avoue que je ne comprend pas trop ce que tu appelles "enchainer les tests" car j'interprete le code comme ceci, et je ne vois pas ce qui est superflu :
If test = "0" Then
First = "SELECT [N° Switch] FROM R_AJOUT_PRISE WHERE (mid([N° Switch],6,1) = " & toto & ") AND (mid([N° Switch],7,1) = " & test & ""
Else
=> Si test = RDC alors on selectionne le N° de switch où le 6e caractère est un E et où le 7e caractère est egal a test (donc à l'etage
If test = "7" Then '(Imp = 7)
StrSql = "SELECT [N° Switch] FROM R_AJOUT_PRISE WHERE [LC_Type] = " & "'Imprimante'" & ";"
Else
StrSql = "SELECT [N° Switch] FROM R_AJOUT_PRISE WHERE (mid([N° Switch],7,1) = " & test & ") "
=> Si test = Imprimante alors on selectionne le N° de switch dont le type est Imprimante. Sinon on selectionne le N° Switch où le 7e caractère est egale à Test càd à l'etage.
Tout ça me semble logique donc désolé de mon ignorance, mais je ne vois pas ce qu'il y a en trop...
blux
Messages postés
26824
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
5 mai 2025
3 337
9 mai 2007 à 12:52
9 mai 2007 à 12:52
Pour moi, il n'y a que deux cas à prévoir :
If test = 7 then 'imprimante StrSql = "SELECT DISTINCT [N° Switch] FROM R_AJOUT_PRISE WHERE (mid([N° Switch],6,1) = 'G') " else StrSql = "SELECT DISTINCT [N° Switch] FROM R_AJOUT_PRISE WHERE (mid([N° Switch],7,1) = '" & test & "') and (mid([N° Switch],6,1) = 'E')" end ifCa va mieux comme ça ?
mat67000
Messages postés
400
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
9 mai 2007 à 14:00
9 mai 2007 à 14:00
Tu es magique Blux :-)
Non en fait, j'avais déjà testé cette solution sauf que moi j'avais mis :
Dans le sens où je pensais, qu'un caractère se mettait obligatoirement avec des " " et non juste des ' '
Donc dans mon cas, le caractère se mettait en commentaire.... lol
Merci en tous cas, j'ai bientot fini mon projet, il me reste juste à apprendre à faire une boucle pour la création d'un switch...
En tous cas, j'apprécie l'aide que tu m'apporte depuis deux mois :-)
Non en fait, j'avais déjà testé cette solution sauf que moi j'avais mis :
StrSql = "SELECT DISTINCT [N° Switch] FROM R_AJOUT_PRISE WHERE (mid([N° Switch],6,1) = "'G'") "
Dans le sens où je pensais, qu'un caractère se mettait obligatoirement avec des " " et non juste des ' '
Donc dans mon cas, le caractère se mettait en commentaire.... lol
Merci en tous cas, j'ai bientot fini mon projet, il me reste juste à apprendre à faire une boucle pour la création d'un switch...
En tous cas, j'apprécie l'aide que tu m'apporte depuis deux mois :-)
blux
Messages postés
26824
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
5 mai 2025
3 337
9 mai 2007 à 14:25
9 mai 2007 à 14:25
On n'enquote les données que si elles sont de type texte. Les valeurs numériques ne sont pas à enquoter sous peine de se voir retourner des erreurs de type.
Pour ce qui est d'enquoter on peut prendre la double-quote (guillemet, en français) ou la simple-quote (apostrophe, en français).
Personnellement, je recommande la simple-quote, qui permet, dans du VBA, d'éviter les doublages de guillemets lors que la construction de chaines...
Pour ce qui est d'enquoter on peut prendre la double-quote (guillemet, en français) ou la simple-quote (apostrophe, en français).
Personnellement, je recommande la simple-quote, qui permet, dans du VBA, d'éviter les doublages de guillemets lors que la construction de chaines...
mat67000
Messages postés
400
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
10 décembre 2019
13
9 mai 2007 à 16:00
9 mai 2007 à 16:00
Ok Blux merci pour l'explication, j'en prend bien note :-)
Je peux clore le topic vu que mon souci est résolu...
Merci encore...
Je peux clore le topic vu que mon souci est résolu...
Merci encore...