Affichage de lignes par VBA

gilou57metz

XLDnaute Nouveau
Bonjour tout le monde,
j'ai un tableau excel 2003 avec 6 colonnes et 200 lignes. Les NOMS des personnes se trouvent en colonne A.
Toutes les lignes sont masquées à l'ouverture du fichier par la macro :
SUB masquetout ()
Rows("4:200").Select
Selection.EntireRow.Hidden = True
EN SUB
Mon problème est le suivant :
dans Userform1 le NOM de la personne est saisi dans une textbox .
J'aimerais afficher UNIQUEMENT la ligne correspondant au NOM SAISI.
Je n'arrive pas à trouver la commande appropriée.
Quelqu'un peut-il me venir en aide ?
Merci d'avance et bonne journée à vous.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Affichage de lignes par VBA

Bonjour Gilou, bonjour le forum,

je te propose ce code sur le bouton de validation de ton Userform :

Code:
Private Sub CommandButton1_Click()
Dim x As ineger 'déclare la variable x
 
For x = 4 To 200 'boucle sur les lignes 4 à 200
    'condition : si la valeur de la cellule de la colonne A est égale à la TextBox1
    If Cells(x, 1).Value = TextBox1.Value Then
        Rows(x).Hidden = False 'affiche la ligne
        Exit For 'sort de la boucle
    End If 'fi de la condition
Next x 'prochaine ligne de la boucle
Unload Me 'masque l'Userform
End Sub
 

gilou57metz

XLDnaute Nouveau
Re : Affichage de lignes par VBA

Bonjour Gilou, bonjour le forum,

je te propose ce code sur le bouton de validation de ton Userform :

Code:
Private Sub CommandButton1_Click()
Dim x As ineger 'déclare la variable x
 
For x = 4 To 200 'boucle sur les lignes 4 à 200
    'condition : si la valeur de la cellule de la colonne A est égale à la TextBox1
    If Cells(x, 1).Value = TextBox1.Value Then
        Rows(x).Hidden = False 'affiche la ligne
        Exit For 'sort de la boucle
    End If 'fi de la condition
Next x 'prochaine ligne de la boucle
Unload Me 'masque l'Userform
End Sub
Merci Robert,
j'ai mis ta macro en application mais le débogage me sort toujours cette erreur à la ligne Rows(x).Hidden = False.
J'ai essayé d'insérer Rows(x).select juste avant, mettre entire.Rows(x).Hidden = False,
RIEN DU TOUT. Toujours la même erreur.
Si tu vois pourquoi ? Merci d'avance.
 

gilou57metz

XLDnaute Nouveau
Re : Affichage de lignes par VBA

Bonjour Gilou, bonjour le forum,

je te propose ce code sur le bouton de validation de ton Userform :

Code:
Private Sub CommandButton1_Click()
Dim x As ineger 'déclare la variable x
 
For x = 4 To 200 'boucle sur les lignes 4 à 200
    'condition : si la valeur de la cellule de la colonne A est égale à la TextBox1
    If Cells(x, 1).Value = TextBox1.Value Then
        Rows(x).Hidden = False 'affiche la ligne
        Exit For 'sort de la boucle
    End If 'fi de la condition
Next x 'prochaine ligne de la boucle
Unload Me 'masque l'Userform
End Sub
Merci Robert,
j'ai mis ta macro en exécution mais le débogage me sort toujours la même erreur.
à la ligne Rows(x).Hidden = False.
J'ai inséré Rows(x).select juste avant mais toujours la même erreur "Impossible de définir la propriété hidden de la classe range".
Vois-tu pourquoi ?
Merci beaucoup d'avance.
 

hbenalia

XLDnaute Occasionnel
Re : Affichage de lignes par VBA

Bonjour à tous

Le code marche à merveille, une toute petite erreur dans la déclaration de x c'est écrit "ineger" (erreur de frappe) et ajouter au code présenté les deux lignes :
Rows("4:200").Select
Selection.EntireRow.Hidden = True
Et le code sera:

Private Sub CommandButton1_Click()
Dim x As Integer 'déclare la variable x

Rows("4:200").Select
Selection.EntireRow.Hidden = True

For x = 4 To 200 'boucle sur les lignes 4 à 200
'condition : si la valeur de la cellule de la colonne A est égale à la TextBox1
If Cells(x, 1).Value = TextBox1.Value Then
Rows(x).Hidden = False 'affiche la ligne
Exit For 'sort de la boucle
End If 'fin de la condition
Next x 'prochaine ligne de la boucle
Unload Me 'masque l'Userform
End Sub
 

gilou57metz

XLDnaute Nouveau
Re : Affichage de lignes par VBA

Bonjour tout le monde,
je reviens avec mon affichage de lignes masquées.
Dans mon tableau j'ai parfois 2 noms identiques. Or s'il me trouve bien le premier, si je réponds "NON" la boucle FOR...NEXT s'arrête et ne me donne pas le 2ème voir le 3ème.
Quelqu'un peut-il (elle) me dire où j'ai commis l'erreur ?
Voici mon code (tout est bien déclaré, pas d'erreur là dessus) :

Private Sub CommandButton2_Click()
'bouton VALIDEZ le nom saison dans la Textbox de la Userform
nom = ""
prenom = ""
pass = ""
dprot ' déprotection de la feuille
Rows("4:80").Select
Selection.EntireRow.Hidden = True

For x = 4 To 70
' Met le NOM en majuscules
nom = UCase(TextBox4.Value)
prenom = Cells(x, 2)
pass = Cells(x, 8).Value
'condition : si la valeur de colonne C = nom
If Cells(x, 3).Value = nom Then
rep = MsgBox("Ce sont bien vos Prénom et NOM ? " & prenom & " " & nom & " ", vbQuestion + vbYesNo)
If rep = vbYes Then
UserForm2.Show
If password = pass Or password = "ossu503" Then
Rows(x).Hidden = False
Cells(x, 2).Select
prot ' protection de la feuille
Else
admin 'Le mot de passe est mauvais
End If
End If
Exit For
End If

Next x
Unload UserForm1 ' Userform de saisie du nom
End Sub

Merci à tous pour votre aide et bonne journée.
 

skoobi

XLDnaute Barbatruc
Re : Affichage de lignes par VBA

Bonjour le fil,

je dirais que Exit For est mal placé:

Code:
If rep = vbYes Then
UserForm2.Show
If password = pass Or password = "ossu503" Then
Rows(x).Hidden = False
Cells(x, 2).Select
prot ' protection de la feuille
Else
admin 'Le mot de passe est mauvais
End If
[B][COLOR=#0000ff]Exit For[/COLOR][/B]
End If
 
End If
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 414
Messages
2 088 213
Membres
103 772
dernier inscrit
clemgi