VBA : recherche valeur par combobox ET masquer colonnes
Résolu/Fermé
J0K0
Messages postés
163
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
19 juillet 2019
-
Modifié par J0K0 le 25/04/2014 à 01:41
J0K0 Messages postés 163 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 19 juillet 2019 - 27 avril 2014 à 11:46
J0K0 Messages postés 163 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 19 juillet 2019 - 27 avril 2014 à 11:46
A voir également:
- VBA : recherche valeur par combobox ET masquer colonnes
- Recherche par image - Guide
- Recherche musique - Guide
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Vba rechercher une valeur dans une colonne ✓ - Forum VB / VBA
- Erreur 1004 vba ✓ - Forum VB / VBA
14 réponses
J0K0
Messages postés
163
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
19 juillet 2019
17
25 avril 2014 à 11:18
25 avril 2014 à 11:18
Salut à toutes et tous !
A nouveau dans mes recherches, je progresse un peu mais je n'arrive pas trop à comprendre le résultat. Partie de code composé de ce que j'ai trouvé sur le net et mis pour mon besoin. Le résultat est 3. Je ne sais pas si je travail dans la bonne direction mais au moins on a un début.
Merci pour votre aide (si elle arrive ?? :p)
A nouveau dans mes recherches, je progresse un peu mais je n'arrive pas trop à comprendre le résultat. Partie de code composé de ce que j'ai trouvé sur le net et mis pour mon besoin. Le résultat est 3. Je ne sais pas si je travail dans la bonne direction mais au moins on a un début.
Sub rechercherEquipe()
Dim equipe As Variant
Dim recherche As Range
equipe = UserForm1.ComboBox1.Value
Set recherche = Range("B4:LX4").Find(equipe, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=True)
If recherche Is Nothing Then
MsgBox ("Equipe non trouvée (ou non renseignée).")
Else
MsgBox ("Equipe trouvé en colonne") & recherche.Column
End If
Unload UserForm1
End Sub
Merci pour votre aide (si elle arrive ?? :p)
J0K0
Messages postés
163
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
19 juillet 2019
17
25 avril 2014 à 17:24
25 avril 2014 à 17:24
Hello petit UP au passage ...
Je bloque toujours sur la recherche et la phase où il faut cacher les colonnes ou afficher les colonnes.
Merci !
Je bloque toujours sur la recherche et la phase où il faut cacher les colonnes ou afficher les colonnes.
Merci !
Sub rechercherEquipe()
Dim equipe As Variant
Dim recherche As Range
equipe = UserForm1.ComboBox1.Value
Set recherche = Range("B5:LX5").Find(equipe, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=True)
If recherche Is Nothing Then
MsgBox ("Equipe non trouvée (ou non renseignée).")
Else
recherche.Columns.Select
End If
Unload UserForm1
End Sub
J0K0
Messages postés
163
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
19 juillet 2019
17
25 avril 2014 à 23:03
25 avril 2014 à 23:03
bonsoir,
je poursuis d'alimenter mon sujet .... j'espère qu'il y aura des réponses un jour ...?
J'ai trouvé un code sur le net que j'ai mis à mon problème (à priori assez identique , pas de l'écriture mais dans le résultat qui ne me permet pas d'avancer mais légèrement de progresser et de cibler le problème ...). J'ai juste fais pour afficher dans un msgbox le résultat de la recherche.
Or je m'aperçois que la recherche sur la ligne complète s'arrête dès qu'il a trouvé 1 fois la valeur de la combobox, s'il y en a d'autres il ne les cherche pas .... des idées pour poursuivre la recherche au range défini ???
Voici le code :
Voici le fichier :
https://www.cjoint.com/c/DDzxdcsXzwQ
Merci
je poursuis d'alimenter mon sujet .... j'espère qu'il y aura des réponses un jour ...?
J'ai trouvé un code sur le net que j'ai mis à mon problème (à priori assez identique , pas de l'écriture mais dans le résultat qui ne me permet pas d'avancer mais légèrement de progresser et de cibler le problème ...). J'ai juste fais pour afficher dans un msgbox le résultat de la recherche.
Or je m'aperçois que la recherche sur la ligne complète s'arrête dès qu'il a trouvé 1 fois la valeur de la combobox, s'il y en a d'autres il ne les cherche pas .... des idées pour poursuivre la recherche au range défini ???
Voici le code :
Sub rechercherEquipe()
'déclaration des variables :
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String
'********* à adapter ***********
'affectation de valeurs aux variables :
'on cherche le mot "Trouve"
''REMPLACER''Valeur_Cherchee = "Trouve"
Valeur_Cherchee = UserForm1.ComboBox1.Value
'dans la première colonne de la feuille active
''REMPLACER''Set PlageDeRecherche = ActiveSheet.Columns(1)
Set PlageDeRecherche = Sheets("Année").Range("B5:LX5")
'*******************************
'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve Is Nothing Then
'ici, traitement pour le cas où la valeur n'est pas trouvée
AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
Else
'ici, traitement pour le cas où la valeur est trouvée
AdresseTrouvee = Trouve.Address
End If
MsgBox AdresseTrouvee
'AdresseTrouvee.Columns.Select
'vidage des variables
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
End Sub
Voici le fichier :
https://www.cjoint.com/c/DDzxdcsXzwQ
Merci
f894009
Messages postés
16906
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 mars 2023
1 680
Modifié par f894009 le 26/04/2014 à 09:02
Modifié par f894009 le 26/04/2014 à 09:02
Bonjour,
votre fichier modifie pour recherche multiples:
https://www.cjoint.com/c/DDAjbl2a0bi
code qui m'a servi de reference:
https://www.commentcamarche.net/faq/18696-vba-recherche-find-avec-retour-multiple
votre fichier modifie pour recherche multiples:
https://www.cjoint.com/c/DDAjbl2a0bi
code qui m'a servi de reference:
https://www.commentcamarche.net/faq/18696-vba-recherche-find-avec-retour-multiple
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J0K0
Messages postés
163
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
19 juillet 2019
17
26 avril 2014 à 13:14
26 avril 2014 à 13:14
Bonjour,
Il en vallait la peine d'attendre le résultat.
Un énorme merci, j'avais bien été sur cette page, mais comme je disais, ça dépassait un peu beaucoup mes compétences. J'avais des erreurs que je ne comprenais pas ... débutant ! ;)
Encore merci je vais poursuivre mon fichier cet après midi, ça m'a donné un coup de boost.
Si à l'occasion tu peux m'expliquer quelques petites choses ....
> je ne comprends pas où tu mets la plage de recherche voulue ?! idem pour feuille ....
> qu'est ce qu'un xla ?
J'en aurais d'autres comme la fonction function mais là c'est de la documentation que je dois faire .... m'enfin !!
M E R C I
Il en vallait la peine d'attendre le résultat.
Un énorme merci, j'avais bien été sur cette page, mais comme je disais, ça dépassait un peu beaucoup mes compétences. J'avais des erreurs que je ne comprenais pas ... débutant ! ;)
Encore merci je vais poursuivre mon fichier cet après midi, ça m'a donné un coup de boost.
Si à l'occasion tu peux m'expliquer quelques petites choses ....
> je ne comprends pas où tu mets la plage de recherche voulue ?! idem pour feuille ....
> qu'est ce qu'un xla ?
J'en aurais d'autres comme la fonction function mais là c'est de la documentation que je dois faire .... m'enfin !!
M E R C I
J0K0
Messages postés
163
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
19 juillet 2019
17
26 avril 2014 à 13:42
26 avril 2014 à 13:42
Bon je confirme bien ... ne rien comprendre au code si tu pouvais m'expliquer ?
> module public ?
> je ne trouve pas la phase où s'il ne trouve pas l'équipe il fait le msgbox
> idem s'il trouve ....
> déclarer les plages (oui car là je dois faire pareil pour B7:LX7 et B9:LX9), le nom de la feuille, du classeur ...
>> du coup je ne peux pas poursuivre ... Eh oui je cherche à cacher les colonnes dont l'équipe ne correspond pas à la recherche et ne laisser que l'équipe recherchée ...
merci pour les explications futures ...!!!!
> module public ?
> je ne trouve pas la phase où s'il ne trouve pas l'équipe il fait le msgbox
> idem s'il trouve ....
> déclarer les plages (oui car là je dois faire pareil pour B7:LX7 et B9:LX9), le nom de la feuille, du classeur ...
>> du coup je ne peux pas poursuivre ... Eh oui je cherche à cacher les colonnes dont l'équipe ne correspond pas à la recherche et ne laisser que l'équipe recherchée ...
merci pour les explications futures ...!!!!
f894009
Messages postés
16906
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 mars 2023
1 680
Modifié par f894009 le 26/04/2014 à 14:31
Modifié par f894009 le 26/04/2014 à 14:31
Re,
> je ne trouve pas la phase où s'il ne trouve pas l'équipe il fait le msgbox----> Module1: Sub rechercherEquipe() (comme avant)
du coup je ne peux pas poursuivre ... Pourquoi pas !!!!
- ne garder d'afficher QUE les colonnes où la valeur est détecter Petit probleme, je ne saisie pas la chose, si E5=A et E7=B, equipe recherchee B
plage B5:LX5------>Colonne E sera cachee puisque A
plage B7:LX7-------> Comment faire pour afficher E7=B
A+
> je ne trouve pas la phase où s'il ne trouve pas l'équipe il fait le msgbox----> Module1: Sub rechercherEquipe() (comme avant)
du coup je ne peux pas poursuivre ... Pourquoi pas !!!!
- ne garder d'afficher QUE les colonnes où la valeur est détecter Petit probleme, je ne saisie pas la chose, si E5=A et E7=B, equipe recherchee B
plage B5:LX5------>Colonne E sera cachee puisque A
plage B7:LX7-------> Comment faire pour afficher E7=B
A+
J0K0
Messages postés
163
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
19 juillet 2019
17
26 avril 2014 à 16:43
26 avril 2014 à 16:43
Ouiiiiiii j'ai trouvé ! j'ai dû tout reprendre et comprendre que le code est "coupé" en deux partie, une avec un sub et la seconde avec une function .... je me documentais sur ces parties en ayant enfin trouvé pour déterminer le range ou le reste puis coup de fatigue (effet des postes et du travail de nuit donc sieste car au boulot ce soir .....).
L'idée finale est simplement de chercher à voir ce que l'équipe recherchée à fait.
Donc si je veux voir l'équipe B, ça recherche dans les 3 lignes et si B apparait la colonne entière s'affiche, sinon les colonnes se cachent.
Ah mais en te marquant ça je me rends compte qu'on va se confronter au problème que si dans la ligne 5 il y a B ça voudra rester afficher, mais qu'en ligne 7 et 9 ça sera forcément pas B, donc ça voudra s'effacer ....
Aïe aïe aïe ...
L'idée finale est simplement de chercher à voir ce que l'équipe recherchée à fait.
Donc si je veux voir l'équipe B, ça recherche dans les 3 lignes et si B apparait la colonne entière s'affiche, sinon les colonnes se cachent.
Ah mais en te marquant ça je me rends compte qu'on va se confronter au problème que si dans la ligne 5 il y a B ça voudra rester afficher, mais qu'en ligne 7 et 9 ça sera forcément pas B, donc ça voudra s'effacer ....
Aïe aïe aïe ...
J0K0
Messages postés
163
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
19 juillet 2019
17
26 avril 2014 à 18:32
26 avril 2014 à 18:32
je pense qu'en fait il faut faire une recherche par colonne et donc se dire que s'il trouve l'équipe dans la colonne il l'affiche, sinon il la masque ...
je vais me pencher sur la question cette nuit ...
On doit donc agir sur le range pour le remplacer par columns ou quelque chose dans le genre ...
merci
je vais me pencher sur la question cette nuit ...
On doit donc agir sur le range pour le remplacer par columns ou quelque chose dans le genre ...
merci
f894009
Messages postés
16906
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 mars 2023
1 680
26 avril 2014 à 19:04
26 avril 2014 à 19:04
Re,
C'est vous qui voyez.
C'est vous qui voyez.
J0K0
Messages postés
163
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
19 juillet 2019
17
26 avril 2014 à 23:59
26 avril 2014 à 23:59
RE !
Bon en fait modification du tableau ... donc mise à jour du code que vous m'aviez fait, jusque là rien d'extraordinaire, je tente de comprendre la manière dont c'est codé mais en vain ....
Je cherche à supprimer le msgbox et mettre à la place que si l'équipe recherchée est trouvée elle affiche la colonne entière sinon si ce n'est pas trouvé ça cache la colonne entière.
Nouveau fichier : https://www.cjoint.com/?DDAx4nXkAAa
Merci pour l'aide !
Bon en fait modification du tableau ... donc mise à jour du code que vous m'aviez fait, jusque là rien d'extraordinaire, je tente de comprendre la manière dont c'est codé mais en vain ....
Je cherche à supprimer le msgbox et mettre à la place que si l'équipe recherchée est trouvée elle affiche la colonne entière sinon si ce n'est pas trouvé ça cache la colonne entière.
Nouveau fichier : https://www.cjoint.com/?DDAx4nXkAAa
Merci pour l'aide !
J0K0
Messages postés
163
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
19 juillet 2019
17
27 avril 2014 à 04:32
27 avril 2014 à 04:32
Hello !
Peu à peu en train de comprendre comment ce code est fait, je suis arrivé à modifier deux petites choses pour tenter d'arriver au final : cacher les colonnes dont la recherche ne correspond pas.
Par contre dans un premier temps pour arriver à mes fins, je tente de cacher la colonne recherchée, mais si vous trouvez comment cacher celles qu'on ne recherche pas, tant mieux !!!!!
Cependant ça plante après le 1: (voir commentaires) ... si explications !!
Merci !
Peu à peu en train de comprendre comment ce code est fait, je suis arrivé à modifier deux petites choses pour tenter d'arriver au final : cacher les colonnes dont la recherche ne correspond pas.
Par contre dans un premier temps pour arriver à mes fins, je tente de cacher la colonne recherchée, mais si vous trouvez comment cacher celles qu'on ne recherche pas, tant mieux !!!!!
Cependant ça plante après le 1: (voir commentaires) ... si explications !!
Merci !
Sub rechercherEquipe()
'déclaration des variables :
Dim Trouve As Integer, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤ modif recherche multiples
Dim Tb() 'Adresse(s) de retour si trouvee(s)
Dim i As Integer
'affectation de valeurs aux variables :
Valeur_Cherchee = UserForm1.ComboBox1.Value
Set PlageDeRecherche = Sheets("Année").Range("B5:LX5")
'appelle de la fonction recherche multiples
Trouve = RechFind(Valeur_Cherchee, ThisWorkbook.Name, "Année", PlageDeRecherche.Address, Tb())
'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve > 0 Then
'ici, traitement pour le cas valeur(s) trouvée(s)
For i = 0 To UBound(Tb)
' AdresseTrouvee = AdresseTrouvee & "-" & Tb(i)
AdresseTrouvee = AdresseTrouvee & Tb(i)
Next i
GoTo 1: 'trouvée
Else
'ici, traitement pour le cas où la valeur n'est pas trouvée
' AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
GoTo 2:
End If
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
'MsgBox AdresseTrouvee
'trouvée
1:
'Columns(AdresseTrouvee).Hidden = True 'plante : affiche "$D$5$B$5"
'MsgBox AdresseTrouvee '>MARCHE
'nouvat = Replace(AdresseTrouvee, "$", "") ''>MARCHE
'MsgBox ("Trouvé dans ") & nouvat ''>MARCHE
Unload UserForm1
Exit Sub
'non trouvée
2:
MsgBox ("Equipe non trouvée ou non renseignée.")
Unload UserForm1
Exit Sub
'vidage des variables
Set PlageDeRecherche = Nothing
End Sub
f894009
Messages postés
16906
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 mars 2023
1 680
27 avril 2014 à 11:09
27 avril 2014 à 11:09
Bonjour,
regardez ceci:
https://www.cjoint.com/?DDBljqd9cRL
Affichage/masquage colonne(s) en fonction du choix
regardez ceci:
https://www.cjoint.com/?DDBljqd9cRL
Affichage/masquage colonne(s) en fonction du choix
J0K0
Messages postés
163
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
19 juillet 2019
17
27 avril 2014 à 11:46
27 avril 2014 à 11:46
f84009 :
Vous êtes la seule personne ayant répondu, sûrement que le sujet ne convenait pas aux autres .... ;)
Un énorme merci car je n'aurais pas pu le faire tout seul !!!!!!
C'est fantastique, je vais y plonger le nez dedans et voir pour poursuivre.
[RESOLU]
Vous êtes la seule personne ayant répondu, sûrement que le sujet ne convenait pas aux autres .... ;)
Un énorme merci car je n'aurais pas pu le faire tout seul !!!!!!
C'est fantastique, je vais y plonger le nez dedans et voir pour poursuivre.
[RESOLU]