Creer une fonction personalisé

Bonjour à tous en ce vendredi ensoleillé à Aix en Provence

J'ai créé (avec votre aide) la ligne de code suivante

Sub aa()
Dim i As Integer

With Sheets("Catalogue Unités Ext")
    For i = 7 To .Range("I" & Rows.Count).End(xlUp).Row
        If .Range("I" & i) >= Range("D6") Then
            Range("O4") = .Range("B" & i)
            Exit Sub
        End If
    Next i
End With

End Sub

Mais ce que je voudrai faire c'est créer une fonction personnalisé sur excel que je pourrai réutiliser en choisissant les cellules avec lesquelles le calcul se ferai.

Je m'explique, ici j'utilise la colonne I, la case D6, et la colonne B mais pour pouvoir la réutiliséer sur d'autre feuilles, je voudrai pouvoir taper dans n'importe quelle cellule d'une feuille excelMAFONCTION(colonneX;colonneY;celluleZ).

Pensez vous que cela est possible à partir du code ci dessus?

Merci

Flo

Tu 'expliques mal..

EngueEngue a écrit :

Tu 'expliques mal..

Désolé le post a été envoyé avant que j'ai fini de l'écrire... je l'ai édité.

function mafonction(x as range, y as range,cellule as range)
Dim i As Integer

With activesheet
    For i = 7 To .cells(Rows.Count,x.column).End(xlUp).Row
        If .cells(i,x.column) >= cellule Then
            mafonction = .cells(i,y.column)
            Exit function
        End If
    Next i
End With

end function

Pöur imiter ton sub tu vas tapper dans O4

=mafonction(I1;B1;D6)

ou

=mafonction(I256;B1784;D6)

EngueEngue a écrit :
function mafonction(x as range, y as range,cellule as range)
Dim i As Integer

With activesheet
    For i = 7 To .cells(Rows.Count,x.column).End(xlUp).Row
        If .cells(i,x.column) >= cellule Then
            mafonction = .cells(i,y.column)
            Exit function
        End If
    Next i
End With

end function

Pöur imiter ton sub tu vas tapper dans O4

=mafonction(I1;B1;D6)

ou

=mafonction(I256;B1784;D6)

Merci de ta réponse rapide.

Cependant, lorsque je j'utilise la fonction avec les même cellules que pour le sub, excel m'affiche la valeur 0 alors qu 'il devrait m'afficher la valeur de l'une des cellules de la colonne B, en l’occurrence B7 (dans ce cas là)..

Pas possible


Je n'avais peut être pas bien compris la structure de ton fichier

function mafonction(x as range, y as range,cellule as range)
Dim i As Integer

With Sheets("Catalogue Unités Ext")
    For i = 7 To .cells(.Rows.Count,x.column).End(xlUp).Row
        If .cells(i,x.column) >= cellule Then
            mafonction = .cells(i,y.column)
            Exit function
        End If
    Next i
End With

end function
EngueEngue a écrit :

Pas possible

quand je tape la formule dans la cellule 04, les arguments à rentrer sont bien trois cellules =mafonction(I7;B7;D6) ? et non =mafonction(I7:I9;B7:B9;D6) ?

Le problème peut il venir du fait que I7,B7 et D9 ne sont pas sur la même feuille de calcul bien que je les ai séléctionné dans leur feuille de calcul respective ?

C'est pareil...

Non. Reesaie avec le code que je t'ai filé, cela devrait marcher

EngueEngue a écrit :

Pas possible


Je n'avais peut être pas bien compris la structure de ton fichier

function mafonction(x as range, y as range,cellule as range)
Dim i As Integer

With Sheets("Catalogue Unités Ext")
    For i = 7 To .cells(.Rows.Count,x.column).End(xlUp).Row
        If .cells(i,x.column) >= cellule Then
            mafonction = .cells(i,y.column)
            Exit function
        End If
    Next i
End With

end function

c'est exactement ce que je voulais,

merci EngueEngue

Rechercher des sujets similaires à "creer fonction personalise"