Boucle for each uniquement dans les celulles visibles

altefqhatre

XLDnaute Junior
Bonjour a tous :)

voila ma question: est il possible de "scanner" toutes les lignes avec une boucle for each mais uniquement dans les celulles visibles?

Mon problème est que je le fais mais sur toutes les lignes d'une sheet (environ 20000) alors qu seules les visibles m'interessent lol...

D'avance merci beaucoup!!!

Bon après-midi

a+
 

Épaf

XLDnaute Occasionnel
Re : Boucle for each uniquement dans les celulles visibles

Manuellement, c'est Menu édition -> Atteindre -> Cellules visibles après avoir sélectionné toutes les cellules.
Pa macro, je crois que c'est un des rares cas où la sélection est indispensable
Code:
    Cells.Select
    Selection.SpecialCells(xlCellTypeVisible).Select
Tu dis
A+
 

Pierrot93

XLDnaute Barbatruc
Re : Boucle for each uniquement dans les celulles visibles

Bonjour altefqhatre ,Epaf

chez moi pas besoin de selection (excel 2003), le code ci-dessous fonctionne, attention au moins une cellule doit être visible sinon message d'erreur, pour y remédier faire précéder le code d'un "On Error Resume Next"
Code:
On Error Resume Next
Dim c As Range
For Each c In Range("A1:A10").SpecialCells(xlCellTypeVisible)
    MsgBox c.Address
Next c

bon après midi
@+
 

Épaf

XLDnaute Occasionnel
Re : Boucle for each uniquement dans les celulles visibles

Désolé, j'ai (encore) mal lu :eek: je pensais à une sélection destinée à copier uniquement les cellules visibles..., auquel cas la sélection est nécessaire...
Sinon, bien sûr, l'ami Pierrot a raison :mad:
A+

Edit
J'ai rien dit, la prochaine fois je testerai :rolleyes:
 
Dernière édition:

altefqhatre

XLDnaute Junior
Re : Boucle for each uniquement dans les celulles visibles

Merci pour vos réponses :)

Par contre je suis pas très sûr d'avoir compris... :-S

J'ai peut-être mal formulé ma question :p

Alors, aujourd'hui j'exécute le code suivant:

Code:
Dim Ligne as Long

For Ligne = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
[.......]
Next Ligne

De cette façon il va aller contrôler toutes les lignes de la feuille, même les masquées... (c'est enfait des sous-totaux)

Est-il possible d'adapter ça en y mettant SpecialCells(xlCellTypeVisible)?

J'espère que c'est plus clair :p

Merci!!!
 

Pierrot93

XLDnaute Barbatruc
Re : Boucle for each uniquement dans les celulles visibles

Re,

tu parlais dans ton 1er post d'une boucle "for each", dans l'exemple que tu donnes maintenant il s'agit d'une boucle "for"... De plus, à priori sur des sous totaux... Le plus simple pour bien comprendre ton problème, serait que tu postes une toute petite partie de ton fichier, sans données confidentielles, avec code utilisé et résultat attendu...
 

altefqhatre

XLDnaute Junior
Re : Boucle for each uniquement dans les celulles visibles

Autant pour moi...

Code:
Dim Ligne as Long

For Ligne = ActiveSheet.UsedRange.Rows.Count To 1 Step -1

if Cells(Ligne,"A").Value = "Total Test1" or Cells(Ligne,"A").Value = "Total Test 2" Then

Cells(Ligne, "B").Value = "OK" 


End if

Next Ligne

Ce dernier s'exécute donc sur une feuille dans laquelle est affichée le niveau d'arborescence "2" des sous-totaux :)

Merci!!
 

Épaf

XLDnaute Occasionnel
Re : Boucle for each uniquement dans les celulles visibles

Avec ton code, tu peux vérifier si la ligne est visible
Code:
Dim Ligne As Long
    For Ligne = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
        If (Not Rows(Ligne).Hidden) And (Cells(Ligne, "A").Value = "Total Test1" Or _
            Cells(Ligne, "A").Value = "Total Test 2") Then _
            Cells(Ligne, "B").Value = "OK"
    Next Ligne
Teste ça tel quel.
Avec le code de Pierrot, (pisk je l'ai pas vu...)
Code:
Dim c As Range
For Each c In Range("A1:A" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible)
    if c.Value = "Total Test1" or c.Value = "Total Test 2" Then _
      c.offset(0,1) = "OK" 
Next c
Toujours pas testé ;)
Tu dis
A+
 
Dernière édition:

altefqhatre

XLDnaute Junior
Re : Boucle for each uniquement dans les celulles visibles

Merci à tous pour vos précieuses réponses :)

Je teste tout ça dans l'après-midi :D

++

EDIT: alors testé, ça marche parfaitement bien ce dernier code!

Merci beaucoup!!

a++
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
154

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87