Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

13 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

Aide boucle for

 
n°18798
lapomme23
Profil : Jeune recrue
Posté le 13-07-2007 à 10:37:03  profilanswer
 

Bonjour je suis débutant en vba, besoin d'aide sur une boucle
Mon tableau est à double entrée, société en colonne, produits en ligne
J'ai une page principale et plusieurs feuilles qui correspondent à tous les produits (8 produits en tout)
Je demande le nom de la société à l'utilisateur, le nom du produit. Ca ouvre la feuille du produit correspondant, et ca fait une boucle qui analyse la premiere colonne ou se situe le nom des sociétés et trouve la ligne de la société demandé. Ensuite il masque toutes les lignes des autres sociétés.
Mais bon ca marche po!
Merci pour votre aide
ps: je rappel je suis newbie!  
 
 
Sub recherche()
 
Message1 = "Entrer le nom d'un produit"
Title1 = "Recherche d'un produit"
MyValue1 = InputBox(Message1, Title1, Default)
If MyValue1 = "" Then Exit Sub
Message2 = "Entrer le nom de la société"
Title2 = "Recherche d'une société"
MyValue2 = InputBox(Message2, Title2, Default)
Sheets(MyValue1).Select
Dim i, Lne As Integer
    For i = 3 To 250
    If Range("A" & i).Value = MyValue2 Then Lne = i
Next i
Rows("3:Lne-1,Lne+1:8" ).Select
Selection.EntireRow.Hidden = True
 
End Sub

n°18800
lapomme23
Profil : Jeune recrue
Posté le 13-07-2007 à 10:46:12  profilanswer
 

Enfait c ca la derniere version de mon programme,
Il me dit que le problème se situe à la ligne 13 et qu'il s'agit d'une incompatibilité de type.
Est ce que MyValue2 n'est pas un string?
 
Sub recherche()
 
Message1 = "Entrer le nom d'un produit"
Title1 = "Recherche d'un produit"
MyValue1 = InputBox(Message1, Title1, Default)
If MyValue1 = "" Then Exit Sub
Message2 = "Entrer le nom de la société"
Title2 = "Recherche d'une société"
MyValue2 = InputBox(Message2, Title2, Default)
Sheets(MyValue1).Select
Dim i, Lne As Integer
Set Cel = Range("A1" )
    For i = 3 To 250
    If Cel.Offset(i) = MyValue2 Then
 Exit For
    End If
Next i
Rows("3:i-1,i+1:8" ).Select
Selection.EntireRow.Hidden = True
 
End Sub

n°18802
galopin01
Profil : Membre
Posté le 13-07-2007 à 17:06:05  profilanswer
 

bonjour,
tu pourrais faire un truc comme ça :
 

Code :
  1. For i = 3 To 250
  2.   Rows(i).Hidden = True
  3. Next
  4. Rows(Lne).Hidden = False


 
PS : il est préférable d'éviter les offset dans des boucles !
Cette version est très préférable :
 

Code :
  1. If Range("A" & i).Value = MyValue2 Then
  2.   Lne = i
  3.   Exit For
  4. End if


 
A+


---------------
Je ne répondrai pas aux messages privés non sollicités. Merci de poser vos questions sur le forum.
n°18803
lapomme23
Profil : Jeune recrue
Posté le 13-07-2007 à 17:48:53  profilanswer
 

merci pour ton message ca a l'air de marcher.
La seule chose c'est que ca ne masque pas ce qu'il y a après la ligne. Je vais continuer à chercher un de mon côté. Merci pour ton aide en tout cas


Aller à :
Ajouter une réponse