Programmation VBA Recherche et sélection par Find
JujuGa33
Messages postés
3
Statut
Membre
-
JujuGa33 Messages postés 3 Statut Membre -
JujuGa33 Messages postés 3 Statut Membre -
Bonjour le forum,
Je suis débutant sur VBA, aussi vais-je sûrement poser une question idiote. Voici mon problème : j'ai une liste de document (A15 à A88) avec la liste des personne qui s'y réfèrent, répartie sur 6 colonne (J15 à O88). Toutes ces cellules sont remplies par un type de personne (OP1 à OP6 ou par Non si la personne n'y a pas accès). Je souhaite pouvoir faire apparaître uniquement celles que je souhaite en utilisant une variable nommée OPX et une fonction générique (pour simplifier les macro RechercheOP1, RechercheOP2, etc.). De plus je ne souhaite pas "figer" les lignes (Range("J15:O88")) au cas où j'en rajouterais. Voici mon programme et cela ne marche pas, je n'arrive pas à configurer le find pour cela. Si quelqu'un peut m'éclairer merci!
Option Explicit
Public OPX As String
Sub RechercheOPX()
Cells(15, 10).Select
Do Until ActiveCell.Value = ""
If Range(ActiveCell, ActiveCell.Offset(0, 5)).Find(OPX, LookIn:=xlValues) Is Nothing Then
Rows(ActiveCell.Row).Select
Selection.EntireRow.Hidden = True
Else
Rows(ActiveCell.Row).Select
Selection.EntireRow.Hidden = False
End If
ActiveCell.Offset(1, 0).Activate
Loop
End Sub
Et pour ma fonction d'appel de l'OP1
Sub RechercheOP1
OPX = "OP1"
Call RechercheOPX
End Sub
Je suis débutant sur VBA, aussi vais-je sûrement poser une question idiote. Voici mon problème : j'ai une liste de document (A15 à A88) avec la liste des personne qui s'y réfèrent, répartie sur 6 colonne (J15 à O88). Toutes ces cellules sont remplies par un type de personne (OP1 à OP6 ou par Non si la personne n'y a pas accès). Je souhaite pouvoir faire apparaître uniquement celles que je souhaite en utilisant une variable nommée OPX et une fonction générique (pour simplifier les macro RechercheOP1, RechercheOP2, etc.). De plus je ne souhaite pas "figer" les lignes (Range("J15:O88")) au cas où j'en rajouterais. Voici mon programme et cela ne marche pas, je n'arrive pas à configurer le find pour cela. Si quelqu'un peut m'éclairer merci!
Option Explicit
Public OPX As String
Sub RechercheOPX()
Cells(15, 10).Select
Do Until ActiveCell.Value = ""
If Range(ActiveCell, ActiveCell.Offset(0, 5)).Find(OPX, LookIn:=xlValues) Is Nothing Then
Rows(ActiveCell.Row).Select
Selection.EntireRow.Hidden = True
Else
Rows(ActiveCell.Row).Select
Selection.EntireRow.Hidden = False
End If
ActiveCell.Offset(1, 0).Activate
Loop
End Sub
Et pour ma fonction d'appel de l'OP1
Sub RechercheOP1
OPX = "OP1"
Call RechercheOPX
End Sub
A voir également:
- Programmation VBA Recherche et sélection par Find
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche par image - Guide
- Find and mount - Télécharger - Récupération de données
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Application de programmation - Guide
4 réponses
Bonjour,
Déposer le fichier xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.
eric
Déposer le fichier xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.
eric
Bonjour eriiic
je te remercie de ta réponse. Voici le lien demandé :
https://www.cjoint.com/?3JxmMqkT1lR
J'ai réussi à faire ce que je voulais mais avec Rows(ActiveCell.Row).Find(etc...)
Je ne comprends pas pourquoi celà ne marche pas avec Range, étant donné que je peux faire un Range(ActiveCell, ActiveCell;Offset(0,5)).Select
ou alors je ne peux tout simplement pas le faire comme ça. En tout cas merci encore!
Salutations.
JujuGa
je te remercie de ta réponse. Voici le lien demandé :
https://www.cjoint.com/?3JxmMqkT1lR
J'ai réussi à faire ce que je voulais mais avec Rows(ActiveCell.Row).Find(etc...)
Je ne comprends pas pourquoi celà ne marche pas avec Range, étant donné que je peux faire un Range(ActiveCell, ActiveCell;Offset(0,5)).Select
ou alors je ne peux tout simplement pas le faire comme ça. En tout cas merci encore!
Salutations.
JujuGa
Bonjour,
une proposition :
https://www.cjoint.com/?BJxnBrBJMMp
eric
une proposition :
Sub masquerLignesOPX()
Dim derlig As Long, lig As Long, c As Range
Const col1 As Long = 10
Const nbOp As Long = 6
derlig = Cells(Rows.Count, 9).End(xlUp).Row
For lig = 15 To derlig
Set c = Cells(lig, col1).Resize(1, nbOp).Find(OPX, LookIn:=xlValues, lookat:=xlWhole)
Rows(lig).EntireRow.Hidden = c Is Nothing
Next lig
End Sub
https://www.cjoint.com/?BJxnBrBJMMp
eric