Definir la derniere ligne non vide

Le
Apitos
Bonjour à tous,

J'ai une plage de cellules A1:A10 qui contiennent des formules.


Supposons que seulement les cinq premières formules qui retourneront un r=
ésultat non vide. les cinq dernières lignes seront vides mais toujours =
avec des formules dedans.

Comment éviter d'avoir la 10ème ligne comme dernière ligne au lieu de=
la 5ème sur cette ligne de code :

'
MsgBox Range("A" & Rows.Count).End(xlUp).Row
'

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #26382537
bonjour Apitos,

voici un exemple extrait des functions de AV, que je salut au passage:

Sub Macro1()
MsgBox Fct_Eva(Range("A1:A10"))
End Sub

Function Fct_Eva(Plage As Range)
Fct_Eva = Evaluate("MAX(IF(" & [Plage].Address & "<>"""",ROW(" &
[Plage].Address & ")))")
End Function

isabelle

Le 2015-12-29 18:30, Apitos a écrit :
Bonjour à tous,

J'ai une plage de cellules A1:A10 qui contiennent des formules.


Supposons que seulement les cinq premières formules qui retourneront un
résultat non vide. les cinq dernières lignes seront vides mais toujours avec
des formules dedans.

Comment éviter d'avoir la 10ème ligne comme dernière ligne au lieu de la 5ème
sur cette ligne de code :

'------------ MsgBox Range("A" & Rows.Count).End(xlUp).Row '------------

Merci.

MichD
Le #26382570
Bonjour,

Une autre alternative :

2 Fonctions, l'une retourne la dernière ligne et l'autre la dernière colonne
incluant les cellules qui comportent des formules qui ne retournent rien ("")

Pour obtenir seulement la dernière ligne d'une plage de cellules limitée seulement
aux valeurs affichées par les cellules sans tenir compte des formules qui
ne retournent rien (""), il s'agit de remplacer dans chacune de ces fonctions
le paramètre "XlFormulas" de la méthode "Find" par "XlValues".

Pour appeler ces fonctions, il s'agit d'utiliser une de ces syntaxes dans une feuille de calcul.

ÞrLig("Feuil1";"A:A")

ÞrCol("Feuil1";"1:3")

On peut modifier l'écriture de ces fonctions pour les adapter à un besoin précis...

Copier les fonctions dans un module standard :

'---------------------------------------------------------------------
Function DerLig(Sh As String, Rg As String)
On Error Resume Next
With Worksheets(Sh)
DerLig = .Range(Rg).Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
On Error GoTo 0
End With
End Function
'---------------------------------------------------------------------

Function DerCol(Sh As String, Rg As String)
On Error Resume Next
With Worksheets(Sh)
DerCol = .Range(Rg).Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
On Error GoTo 0
End With
End Function
'---------------------------------------------------------------------




"Apitos" a écrit dans le message de groupe de discussion :


Bonjour à tous,

J'ai une plage de cellules A1:A10 qui contiennent des formules.


Supposons que seulement les cinq premières formules qui retourneront un résultat non vide. les cinq
dernières lignes seront vides mais toujours avec des formules dedans.

Comment éviter d'avoir la 10ème ligne comme dernière ligne au lieu de la 5ème sur cette ligne de
code :

'------------
MsgBox Range("A" & Rows.Count).End(xlUp).Row
'------------

Merci.
MichD
Le #26382573
Un petit bémol,

De la manière dont sont passés les paramètres, j'ai omis une ligne de code :
Application.Volatile en début de chaque fonction.

Afin de contourner cela, on adapte les 2 fonctions comme ceci et dans la cellule
on modifie légèrement l'appel de ces fonctions:

(On ne fait qu'enlever les parenthèses pour les plages de cellules.
ÞrLig("Feuil1";A:A)

ÞrCol("Feuil1";1:3)


'---------------------------------------------------------------------
Function DerLig(Sh As String, Rg As Range)
On Error Resume Next
With Worksheets(Sh)
DerLig = .Range(Rg.Address).Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
On Error GoTo 0
End With
End Function
'---------------------------------------------------------------------

Function DerCol(Sh As String, Rg As Range)
On Error Resume Next
With Worksheets(Sh)
DerCol = .Range(Rg.Address).Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
On Error GoTo 0
End With
End Function
'---------------------------------------------------------------------
Apitos
Le #26382628
Bonjour Isabelle, MichD,

Merci pour vos réponses :)
Publicité
Poster une réponse
Anonyme