Plage nommée scindée et navigation dans une plage nommée

Bonjour à tous,

J'ai une question par rapport à mon fichier Test en pièce jointe. Ma plage nommée est scindée en deux, une plage de 11 lignes et une plage de 5 lignes, quand je fais un Lignes = [Plage].Rows.Count il me compte 5 lignes, soit le nombre de la première table cochée (Celle du bas). On ne peux pas travailler sur une plage scindée ? Il faut forcément passer par deux plages ?

Le but du fichier est de compter derrière le nombre de cellules non vides dans chaque colonne de la plage. Hors j'ai du mal à naviguer sur le tableau, habituellement je commence le tableau en A1 ce qui facilite le compte. Mais ici pas le choix.

Si je fais ce type de code:

For i = 1 To nbLignes
            If Cells(i, j) = vbNullString Then ...

Il va compter à partir de la ligne une, il faut que je bidouille en faisant For i = 10 To nbLignes + 10. Y-a-t'il une astuce pour naviguer dans une plage en réinitialisant les cordonnées de cette dernière ?

Merci à tous.

7test.xlsm (15.54 Ko)

bonjour, il faut traiter les 2 sous-plages comme des "areas", attention, dans votre définition de "plage" de 2eme plage est la première.

Sub m_plage()
     With Range("plage")
     MsgBox .Address
          For i = 1 To .Areas.Count
               Set ar = .Areas(i)            'on traite les 2 séparémant
               For j = 1 To ar.Rows.Count
                    MsgBox j & "   " & ar.Cells(j, 1).Value & vbLf & ar.Cells(j, 1).Address & vbLf & ar.Address
               Next
          Next
     End With
End Sub

Re

Super les aires, je ne connaissait pas mais c'est exactement la solution que je cherchais. J'ai implanté ton bout de code dans le miens et cette partie là fonctionne bien. Par contre j'ai encore du mal à situer mes recherches dans les aires, je pensais avoir bien fait mais il semble faire n'importe quoi (Enfin j'ai codé de façon à ce qu'il le fasse)

En gros, dans chaque aire je vérifie chaque ligne de la colonne B, et si elle n'est pas vide je fais un +1 sur un Integer. J'ai l'impression avec les MsgBox que mes données sont bonne et pourtant le compte tourne pas rond...

1test.xlsm (17.80 Ko)

re, vous avez oublié le "Aire." en face, sans cela vous regardez sur la feuille et ne pas dans la plage, il faut penser relatif.

par exemple avec j=2 >>> cells(j,2) comme vous l'avez écrit, c'était la cellule B2 de la feuille

avec Aire = B10:D20 >>>> Aire.cells(j,2) sera C11

             If Aire.Cells(j, 2).Value = "" Then 'Si colonne Non-conforme est vide

En effet je l'ai vu il y a 2 minutes... Coder fatigué n'est pas une bonne solution... Un grand merci pour votre aide en tout cas

re, attention un "area" est toujours un rectangle. Donc si vous 2 sous-plages de votre "plage" sont plutôt irrégulier, excel le divisera en plusieurs "rectangles".

Donc jouer avec ceci ....Je pensais 6 aires, mais il dit 7 !!! Vous n'êtes pas toujours sûr comment il divise ses aires, donc dangeureux.

Sub Aires()
     MsgBox Range("Plage").Areas.Count
End Sub
2test-84.xlsm (19.33 Ko)

J'ai capté en allant sur internet en lire plus sur les aires mais merci pour le conseil. En tout cas c'est une fois de plus une belle découverte sur le forum

Rechercher des sujets similaires à "plage nommee scindee navigation"