Comment déterminer une plage de cellules dans une feuille cachée

did85

XLDnaute Junior
Bonsoir,
j'ai besoin de déterminer par VBA une plage de cellules dans plusieurs feuilles cachées.

Cette plage est évolutive en fonction de la feuille sélectionnée aussi bien en colonne qu'en ligne.

Je vous joins un fichier simplifié, il permet de :
- masquer 2 feuilles
- afficher les 2 feuilles masquées
- lancer un formulaire qui permet de sélectionner la feuille de la plage à afficher.

Lorsqu'on choisit une feuille, un message apparaît donnant le nombre de colonnes et le nombre de la lignes de la feuille, mais je n'arrive pas pour autant à déterminer la plage (le second message)

Code:
With Sheets(NomSheet)
        DerLig = .Range("A65536").End(xlUp).Row
        DerCol = .Range("A1").End(xlToRight).Column
        MsgBox "La Feuille " & NomSheet & " contient : " & DerLig & " Lignes et " & DerCol & " Colonnes.", , "Info"
    
        [COLOR="Red"]Set Plage = .Range("A1", .Range("C1").End(xlDown))[/COLOR]
        MsgBox "Le nombre de cellules de la plage est : " & Plage.Count
        
    End With

Ce qui me pose problème, c'est la ligne en rouge qui n'est pas évolutive en colonne. Le .Range("C1") est bloquant
Code:
 .Range("C1").End(xlDown)
Avez-vous une idée ? ou une solution ?

Merci
 

Pièces jointes

  • range_feuille_cachee.xls
    45 KB · Affichages: 109

wilfried_42

XLDnaute Barbatruc
Re : Comment déterminer une plage de cellules dans une feuille cachée

bonjour

essaye ca
Code:
Set Plage = .Range("A1:" & .Range("C1").End(xlDown).address)

Edit : Trop nul le wil, il fait le copier coller et oublie d'y appliquer la modif
 
Dernière édition:

did85

XLDnaute Junior
Re : Comment déterminer une plage de cellules dans une feuille cachée

Bonsoir,
merci à vous deux, tout ce que vous me notez fonctionne, le problème c'est que mes valeurs vont bien au delà de la colonne C.

Et c'est justement elle que je souhaite prolonger lors de la sélection, mais je ne connais jamais la dernière colonne écrite.

Si quelqu'un a une autre idée ?

Merci
 

vbacrumble

XLDnaute Accro
Re : Comment déterminer une plage de cellules dans une feuille cachée

Re

Essaye de t'inspirer de:

Code:
Msgbox ActiveSheet.UsedRange.Columns.Count

Ce qui pourrait servir à :
Code:
MsgBox Cells(65536, ActiveSheet.UsedRange.Columns.Count).End(xlUp).Address(0, 0)
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Dernière édition:

did85

XLDnaute Junior
Re : Comment déterminer une plage de cellules dans une feuille cachée

Bonsoir Boisgontier,
merci pour le calcul des lignes et des colonnes, mais je ne pense pas que ça résolve mon problème. Sauf si je n'ai pas compris ton code.

J'ai besoin de définir la plage délimitée par le nombre de lignes et de colonnes de la feuille.

Parce qu'ensuite je m'en sers dans un listview.

Merci encore, je continue à chercher.
 

nolich

XLDnaute Occasionnel
Re : Comment déterminer une plage de cellules dans une feuille cachée

Bonsoir did85, wilfried42, vbacrumble et JB, bonsoir à toutes et à tous,

wilfried42 : je pense que ton souci vient de cette ligne de calcul de plage :

Code:
[COLOR="Blue"]Set[/COLOR] Plage = .Range("A1", .Range("C1").End(xlDown))

que je remplacerai bien volontiers par :

Code:
[COLOR="blue"]Set[/COLOR] Plage = .Range("A1").CurrentRegion

qui est plus fiable que Range("XX").UsedRange ;)

@+

EDIT : Par ailleurs, je te conseille de mettre la propriété TakeFocusOnClick de tes commandButtonx à False. Ca pourra être utile si ton code évolue.
 
Dernière édition:

vbacrumble

XLDnaute Accro
Re : Comment déterminer une plage de cellules dans une feuille cachée

Re



Pourquoi qu'il est pas fiable le UsedRange ?

et pourquoi vous l'aimez pas ?

Les deux lignes ci-dessous me renvoient la meme adresse de cellule
Code:
MsgBox Cells(65536, Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Column).End(xlUp).Address(0, 0) 
MsgBox Cells(65536, Sheets(1).UsedRange.Columns.Count).End(xlUp).Address(0, 0)
 
Dernière édition:

did85

XLDnaute Junior
Re : Comment déterminer une plage de cellules dans une feuille cachée

Bonsoir à tous et à toutes,

merci de votre aide.

Nolich, ton bout de code fonctionne :
Code:
Set Plage = .Range("A1").CurrentRegion
Maintenant, il me reste à l'adapter dans mon cas, mais la plage est bien dans le Set.

Merci

Question résolue
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
402