Calculer le nombre de lignes d'un entête figé par volets

oracle7

XLDnaute Nouveau
Bonjour à tous,

Je cherche à déterminer automatiquement le nombre de lignes de l'entête d'un tableau qui sont accessoirement figées / protégées par un volet.

La solution de facilité serait de coder en "dur" la valeur en question mais justement mon entête étant dynamique, j'ai besoin de récupérer le nombre de lignes qu'il occupe pour limiter la saisie par ailleurs dans le tableau sans avoir à revenir modifier directement le code.
Cela me permettrait aussi :
- d'agrandir dynamiquement le volet (mais là je ne sais pas encore si c'est possible ?),
- de définir de façon dynamique des plages nommées qui ont pour origine une cellule de la ligne immédiatement supérieure à la dernière ligne occupée par l'entête.​

Qq'un a-t-il une idée de trame pour coder une telle fonction qui me ramènerait ce nombre de lignes ?

Merci d'avance de votre aide.
Cordialement
oracle7 :):):)
 
G

Guest

Guest
Re : Calculer le nombre de lignes d'un entête figé par volets

Bonjour Oracle,

Si tes lignes d'entête commence en A1 et que ta première cellule de données en A contient "Datas":

Code:
=LIGNES(INDIRECT("$A$1:$A$" & EQUIV("Datas";$A$1:$A$100;0)))-1
Prévu pour 100 lignes d'entête
A+
 

oracle7

XLDnaute Nouveau
Re : Calculer le nombre de lignes d'un entête figé par volets

@ Hasco

MERCI pour votre réponse rapide.

C'est bien pour une version type formules Excel, et comment fait-on la même chose en code VBA ?

Désolé de "pousser le bouchon" plus avant ...

Cordialement
oracle7 :):):)
 
G

Guest

Guest
Re : Calculer le nombre de lignes d'un entête figé par volets

Re,

Code:
Function nbLignesEntete() As Long
    Dim idx As Variant
    idx = Application.Match("[B]Datas[/B]", [A1:A100], 0)
    If Not IsError(idx) Then nbLignesEntete = Range("A1:A" & idx - 1).Rows.Count
End Function

A+
 

oracle7

XLDnaute Nouveau
[Résolu] : Calculer le nombre de lignes d'un entête figé par volets

@ Hasco

MERCI beaucoup !

C'est exactement ce dont j'avais besoin.
J'ai juste retiré le "-1" dans
Code:
Range("A1:A" & idx - 1).Rows.Count
pour obtenir le nombre exact de lignes concernées.

Cordialement
oracle7 :):):)
 

oracle7

XLDnaute Nouveau
Re : Calculer le nombre de lignes d'un entête figé par volets

Bonsoir à tous,

Eh bien j'ai crié victoire trop vite le problème n'est pas résolu.
En effet la solution proposée par Hasco marche certes, mais pas dans le cas où la cellule "Datas" est une cellule "fusionnée".

Je m'explique :
Si l'entête du tableau occupe réellement 3 lignes (A1:... à A3:...) et que le libellé "Datas" soit initialement en $A$3 mais que l'on ait fusionné les cellules $A$1 à $A$3 en une seule alors la fonction renvoie la valeur 1 pour la taille de l'entête en nb de lignes. Ce qui est manifestement faux !

Je reviens donc vers vous pour m'aider à résoudre ce problème.
Merci d'avance de votre coopération.

Cordialement
oracle7 :):):)
 

jeanpierre

Nous a quitté
Repose en paix
Re : Calculer le nombre de lignes d'un entête figé par volets

Bonsoir oracle7, Hasco,

Au risque de déplaire, les cellules fusionnées sont un truc de secrétaire pour faire Zouli.... Si l'on réfléchi bien, on en a pas besoin pour le même résultat.

Donc, on vire les cellules fusionnées et l'on travaille sérieusement.

A méditer.

Bonne soirée.

Jean-Pierre
 
G

Guest

Guest
Re : Calculer le nombre de lignes d'un entête figé par volets

Re,

Voici la fonction transformé.
Elle cherche "Datas" et retourne le numéro de ligne -1, mais il faut que ta première ligne d'entête soit la ligne 1

Code:
Function nbLignesEntete() As Long
    Dim idx As Variant
    idx = Application.Match("Datas", [A1:A100], 0)
    If Not IsError(idx) Then nbLignesEntete = Idx-1
End Function
A+
 
G

Guest

Guest
Re : Calculer le nombre de lignes d'un entête figé par volets

Re Oracle,

Ce qu'il faut chercher c'est la première valeur de tes données. Dans l'exemple joint : 'a':

Code:
Function nbLignesEntete() As Long
    Dim idx As Variant
    idx = Application.Match("a", [A1:A100], 0)
    If Not IsError(idx) Then nbLignesEntete = idx - 1
End Function

Je me disais bien aussi....

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 491
Messages
2 088 889
Membres
103 982
dernier inscrit
krakencolas