Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ligne code vers fonction

10 réponses
Avatar
milloche
Bonjour
Je voudrais remplacer une macro d'une seule ligne par une fonction à mettre en W1
Je patauge
Range("$W$1")=Range("W65536").End(Xlup).value
Eh oui, c'est tout.
Merci

10 réponses

Avatar
FFO
Salut à toi

Dans un module standard mets ce code :

Function Calcule(Cellule As Range)
Calcule = Range(Cells(65536, Cellule.Column).Address).End(xlUp).Value
End Function

En W1 insert cette fonction en la choisissant comme cellule

La valeur de W1 prendra la valeur de la première cellule non vide de la
colonne W en partant du bas

Celà devrait convenir
Dis moi !!!!
Avatar
milloche
Salut FFO
J'ai un peu chiotté pour l'insertion, quand je me suis apercu que ta fonction apparait maintenant
dans les fonctions excel. C'est donc règlé de ce coté.
Mais si je modifie mes données, ma W1 ne change pas de valeur, alors que la dernière cellule de la
colonne W change, elle (c'est une formule) alors cà va pas. Un recalcul par F9 ne change rien.
<]:o))

"FFO" a écrit dans le message de news:

Salut à toi

Dans un module standard mets ce code :

Function Calcule(Cellule As Range)
Calcule = Range(Cells(65536, Cellule.Column).Address).End(xlUp).Value
End Function

En W1 insert cette fonction en la choisissant comme cellule

La valeur de W1 prendra la valeur de la première cellule non vide de la
colonne W en partant du bas

Celà devrait convenir
Dis moi !!!!



Avatar
FFO
Rebonjour à toi

J'ai fais une petite erreur dans l'utilisation de cette fonction

Dans la cellule W1 quand tu inserres cette fonction comme choix de cellules
prends la colonne entière

J'ai fais des essais
Même si elle possède une formule la valeur de la dernière cellule de cette
colonne est bien rapportée en W1

Fais des essais et dis moi !!!!!
Avatar
MichDenis
Si ta colonne contient des données numériques :

=RECHERCHE(9^9;W:W)
Évidemment, cela suppose que tu as au moins une donnée
dans ta colonne pour ne pas avoir une référence circulaire

Si ta colonne contient de l'alphanumérique :
Une formule de Daniel Maher
=RECHERCHE(2;1/NON((Plage="")+ESTNUM(Plage));Plage)




"milloche" a écrit dans le message de groupe de discussion :
u$
Bonjour
Je voudrais remplacer une macro d'une seule ligne par une fonction à mettre en W1
Je patauge
Range("$W$1")=Range("W65536").End(Xlup).value
Eh oui, c'est tout.
Merci
Avatar
isabelle
bonjour Ffo,

Function Calcule(Cellule As Range)
Application.Volatile
Calcule = Range(Cells(65536, Cellule.Column).Address).End(xlUp).Value
End Function

isabelle

FFO a écrit :
Rebonjour à toi

J'ai fais une petite erreur dans l'utilisation de cette fonction

Dans la cellule W1 quand tu inserres cette fonction comme choix de cellules
prends la colonne entière

J'ai fais des essais
Même si elle possède une formule la valeur de la dernière cellule de cette
colonne est bien rapportée en W1

Fais des essais et dis moi !!!!!




Avatar
Jacky
Bonjour,
....remplacer une macro d'une seule ligne par une fonction ....


'-----------------
Function Calcule()
Application.Volatile
If Range("w" & Cells(Rows.Count, "w").End(3).Row).Address = "$W$1" Then Exit
Function
Calcule = Range("w" & Cells(Rows.Count, "w").End(3).Row).Value
End Function
'----------------
Dans une cellule
Êlcule()

--
Salutations
JJ


"milloche" a écrit dans le message de news:
u$
Bonjour
Je voudrais remplacer une macro d'une seule ligne par une fonction à
mettre en W1
Je patauge
Range("$W$1")=Range("W65536").End(Xlup).value
Eh oui, c'est tout.
Merci



Avatar
FFO
Bonjour isabelle
Sympa ta suggestion !!!!
Tous les jours j'apprends
Ma solution effectivement nécessitait pour son fonctionnement d'attribuer
toute la colonne à la variable Cellule
La tienne évite cet inconvénient et de n'attribuer qu'une cellule de la
colonne
A t'elle d'autres avantages ????
Juste pour profiter au maximum de tes connaissances en ce domaine

Merci

"isabelle" wrote:

bonjour Ffo,

Function Calcule(Cellule As Range)
Application.Volatile
Calcule = Range(Cells(65536, Cellule.Column).Address).End(xlUp).Value
End Function

isabelle

FFO a écrit :
> Rebonjour à toi
>
> J'ai fais une petite erreur dans l'utilisation de cette fonction
>
> Dans la cellule W1 quand tu inserres cette fonction comme choix de cellules
> prends la colonne entière
>
> J'ai fais des essais
> Même si elle possède une formule la valeur de la dernière cellule de cette
> colonne est bien rapportée en W1
>
> Fais des essais et dis moi !!!!!
>
>



Avatar
milloche
Ya du monde dans le train !
Voici ce que j'ai trouvé, je jure Isabelle que j'ai pas copié !
Il me faut simplement à moi plus de temps qu'a vous.
Voici mon bidouillage sur la fonction de FFO

Function Calcule() '(Cellule As Range) Inclu la fonction dans la liste Excel, pas besoin
Application.Volatile ' Appris de Denis il y a quelques temps déjà
'Calcule = Range(Cells(65536, Cellule.Column).Address).End(xlUp).Value (De FFO)
'Si je comprend bien, cette ligne rend la fonction valable qu'importe la colonne ou elle est.
Calcule = Range("W65536").End(xlUp).Value ' Bidouillage perso de la fonction de FFO
End Function

<]:o))

"Jacky" a écrit dans le message de news:
Bonjour,
....remplacer une macro d'une seule ligne par une fonction ....


'-----------------
Function Calcule()
Application.Volatile
If Range("w" & Cells(Rows.Count, "w").End(3).Row).Address = "$W$1" Then Exit Function
Calcule = Range("w" & Cells(Rows.Count, "w").End(3).Row).Value
End Function
'----------------
Dans une cellule
Êlcule()

--
Salutations
JJ


"milloche" a écrit dans le message de news:
u$
Bonjour
Je voudrais remplacer une macro d'une seule ligne par une fonction à mettre en W1
Je patauge
Range("$W$1")=Range("W65536").End(Xlup).value
Eh oui, c'est tout.
Merci







Avatar
isabelle
bonjour Ffo,

cette méthode sert uniquement au recalcule de la function, chaque fois
qu'un calcul est effectué dans une cellule quelconque de la feuille de
calcul
si on omet cette méthode le reclacul s'effectue uniquement au changement
d'une des variables d'entrée de la formule ou à l'édition de cette formule

isabelle

FFO a écrit :
Bonjour isabelle
Sympa ta suggestion !!!!
Tous les jours j'apprends
Ma solution effectivement nécessitait pour son fonctionnement d'attribuer
toute la colonne à la variable Cellule
La tienne évite cet inconvénient et de n'attribuer qu'une cellule de la
colonne
A t'elle d'autres avantages ????
Juste pour profiter au maximum de tes connaissances en ce domaine

Merci

"isabelle" wrote:


bonjour Ffo,

Function Calcule(Cellule As Range)
Application.Volatile
Calcule = Range(Cells(65536, Cellule.Column).Address).End(xlUp).Value
End Function

isabelle

FFO a écrit :

Rebonjour à toi

J'ai fais une petite erreur dans l'utilisation de cette fonction

Dans la cellule W1 quand tu inserres cette fonction comme choix de cellules
prends la colonne entière

J'ai fais des essais
Même si elle possède une formule la valeur de la dernière cellule de cette
colonne est bien rapportée en W1

Fais des essais et dis moi !!!!!









Avatar
Jacky
Re..
Ceci est valable pour obtenir le résultat de n'importe quelle colonne dans
n'importe quelle cellule et pour xl2007 (non limité à 65536)
'---------
Function Calcule(col As Range)
Application.Volatile
If Cells(Rows.Count, col.Column).End(3).Row = 1 Then Exit Function
Calcule = Cells(Cells(Rows.Count, col.Column).End(3).Row, col.Column).Value
End Function
'----------
dans une cellule
Êlcule(X:X)
ou juste la selection d'une cellule de la colonne
Êlcule(W1)

--
Salutations
JJ


"milloche" a écrit dans le message de news:
u0%
Ya du monde dans le train !
Voici ce que j'ai trouvé, je jure Isabelle que j'ai pas copié !
Il me faut simplement à moi plus de temps qu'a vous.
Voici mon bidouillage sur la fonction de FFO

Function Calcule() '(Cellule As Range) Inclu la fonction dans la liste
Excel, pas besoin
Application.Volatile ' Appris de Denis il y a quelques temps déjà
'Calcule = Range(Cells(65536, Cellule.Column).Address).End(xlUp).Value (De
FFO)
'Si je comprend bien, cette ligne rend la fonction valable qu'importe la
colonne ou elle est.
Calcule = Range("W65536").End(xlUp).Value ' Bidouillage perso de la
fonction de FFO
End Function

<]:o))

"Jacky" a écrit dans le message de news:

Bonjour,
....remplacer une macro d'une seule ligne par une fonction ....


'-----------------
Function Calcule()
Application.Volatile
If Range("w" & Cells(Rows.Count, "w").End(3).Row).Address = "$W$1" Then
Exit Function
Calcule = Range("w" & Cells(Rows.Count, "w").End(3).Row).Value
End Function
'----------------
Dans une cellule
Êlcule()

--
Salutations
JJ


"milloche" a écrit dans le message de news:
u$
Bonjour
Je voudrais remplacer une macro d'une seule ligne par une fonction à
mettre en W1
Je patauge
Range("$W$1")=Range("W65536").End(Xlup).value
Eh oui, c'est tout.
Merci