afficher lignes selon codes dans spreadsheet

D

daniel

Guest
Bonjour !

Voilà mon problème...
Dans une feuille, en colonne A, j'ai une série de codes uniques.
Dans un userform, je saisis dans un spreadsheet les codes que j'aimerais afficher dans ma feuille active. Voilà mon code (où [listeoptions] est la plage nommée de ma feuille active et sp le nom de ma spreadsheet):

Sub Affciher ()
Dim c As Range
Dim j As Integer
[listeoptions].Select
Selection.EntireRow.Hidden = True
j = 1
For Each c In [listeoptions]

If sp.Cells(j, 1) = c.Text Then
c.Rows.Hidden = False
j = j + 1
End If

Next c
End sub

Ce code marche très bien...si les codes saisis le sont dans leur ordre d'affichage de la feuille active. C'est à dire, si dans ma feuille active, j'ai (dans l'ordre) code1, code2, code3, code4 et code 5 et que je saisis dans ma spreadsheet code2 et code 3 ==> pas de problème (les deux codes sont affcihés)

MAIS

si je saisis code3, code2, code4, par exemple, seul le premier code sera affiché. Pourquoi ?

Merci pour votre aide... et bon après midi, le forum

Daniel
 

Hervé

XLDnaute Barbatruc
Bonjou daniel

Il te manque une boucle. tu boucles bien sur tes cellules de ta plage, mais pas sur celle de la sp. essaye comme ceci :


Sub Affciher()
Dim c As Range
Dim j As Integer
[listeoptions].EntireRow.Hidden = True

For Each c In [listeoptions]
For j = 1 To sp.Cells(65536, 1).End(xlUp).Row
If sp.Cells(j, 1) = c.Text Then
c.Rows.Hidden = False
End If
Next c
End Sub

J'ai pas fait d'essai, c'est surement à améliorer, mais le principe est là.

salut
 
D

daniel

Guest
bonjour hervé

merci pour ta réponse. Malheureusement, la ligne de ton code

For j = 1 To sp.Cells(65536, 1).End(xlUp).Row

n'est pas acceptée pour la spreadsheet. Ce qui m'étone, c'est que le code semble bien boucler sur la spreadsheet si les codes saisis sont dans le même ordre que dans la feuille. C'est quand ils sont dans un ordre différent que ça ne va plus...

Aurais tu une autre idée (ou peut être me suis je -encore ! - planté, lol )

En tout cas, merci de ton aide (ça fait plusieurs fois que tu me sors une épine du pied, d'ailleurs :)

Daniel
 
D

daniel

Guest
re hervé

il manquait un next j dans le code. J'ai essayé le code suivant :

Dim c As Range
Dim j As Integer
[listeoptions].EntireRow.Hidden = True

For Each c In [listeoptions]
For j = 1 To 10 ' j'ai bouclé sur 10 éléments
If sp.Cells(j, 1) = c.Text Then
c.Rows.Hidden = False
End If
Next j
Next c
End Sub

ça a marché. Le seul problème est que je ne peux pas 'récupérer' le nombre d'éléments de ma spreadsheet pour boucler dessus.

Si quelqu'un a une idée...

bon après midi à toutes et tous

Daniel
 

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko