J'ai une plage de cellules A1:A10 qui contiennent des formules.
Supposons que seulement les cinq premi=E8res formules qui retourneront un r=
=E9sultat non vide. les cinq derni=E8res lignes seront vides mais toujours =
avec des formules dedans.
Comment =E9viter d'avoir la 10=E8me ligne comme derni=E8re ligne au lieu de=
la 5=E8me sur cette ligne de code :
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
isabelle
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 :
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 :
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 :
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 :
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 :
c52d285a-7b9d-4687-b953-49379be4a298@googlegroups.com...
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 :
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 :
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 '---------------------------------------------------------------------
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
'---------------------------------------------------------------------
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 '---------------------------------------------------------------------