Fonction personalisé

Bonjour,

Je suis en train de développer une application pour une competition d'escalade.

J'essaye de récuperer des coordoné de cellules de la manière suivante.

Function NBreussi(bloc1 As String, bloc2, bloc3 As String, bloc4 As String, bloc5 As String, Optional bloc6 As String, Optional bloc7 As String, Optional bloc8 As String)

    Application.Volatile

i = 6
j = 0

    For i = 6 To Range("B" & Rows.Count).End(xlUp).Row

      Range(bloc1.Column & i).Select

        If ActiveCell = ok Then

            j = j + 1

        End If

    Next

End Function

Et je n'arrive pas a trouver la valeur de la colonne avec ces instustions : "Range(bloc1.Column & i).Select"

Quelqu'un a une idée de la meilleure manière de récupérer ces paramètre ?

2 --> est t'il possible de décomposer les arguements déclarer au début de la fonction, par exemple:

bloc1 réussir a incrémenter le 1 pour pouvoir utiliser tous les bloc* dans une boucle for avec une incrémentation du nombre ?

Meilleures salutations

et bon dimanche

DRIDRI

Bonjour,

Afin de pouvoir te répondre au mieux, peux-tu joindre un fichier exemple, exempt de toutes données confidentielles, mais possédant la structure exacte de ton fichier réel?

@ te relire

voili voilou

Pour l'instant dans la feuille "calcul blocs" je cherche a lister le nombre de "Ok" présent par colonne ...

13compet-blocs.xlsm (25.77 Ko)

Re-,

Juste une petite question :

Est-ce qu'une simple formule (NB.SI) ne suffirait pas?

Faut-il obligatoirement une fonction perso?

Re

Par la suite je souhaite calculer et renvoyer pas mal d'info dans pas mal d'endroit sur ce classeur.

un fonction perso me parait tout indiqué.

Re-,

Par exemple, dans l'onglet "Valeur des blocs", cellule E6, tu mets cette formule :

=NB.SI(DECALER('Calcul blocs'!$B$5;1;$B6;NBVAL('Calcul blocs'!B:B));"ok")

Et tu incrémentes vers le bas.

Ta solution parait intéressante.

Mais il ne s'agit pas de l'info que je recherche …. surtout pour la suite du projet….

Je cherche a récuperer la valeur de la colonne (C'D'E……) depuis le bloc1,le bloc2, etc, déclarer au début de la fonction ?

As tu une idée de la syntaxe ?

Euh, tu cherches bien le nombre de "ok" dans les blocs?

Sinon, une fonction dans le fichier

si ce n'est pas ça, mets les valeurs que tu souhaites obtenir dans un autre fichier

J'ai pas reussi à retranscrire ce que tu a écrit dans l'exemple que je t'ai envoyé.

Tu aurais une idée de comment le retranscrire ?

(Pas juste dans un gros bloc ilisible pour un néofite comme moi ^^)

Merci d'avance

Re-,

Comme tu as vu, la fonction s'inscrit ainsi dans la cellule H6 de l'onglet "Valeur des blocs" :

=NBreussi('Calcul blocs'!$C$6:$G$15;$B6)

Il faut donc que tu écrives dans cette cellule :

=NBreussi(

puis tu sélectionnes toute la plage de données de l'onglet "Calcul blocs", c'est à dire que tu vas sur l'onglet, et tu sélectionnes de C6 à G15.

Tu cliques au milieu des adresses de cellules (par exemple entre C et 6), et tu appuies sur F4, pour rendre l'adresse en absolue (les $ se mettent tout seul)

Tu entres ensuite le point virgule, et tu tapes $B6, qui représente le numéro de bloc.

Si tu n'y arrives pas, joins un autre fichier, au plus près de ton fichier réel.

Bon courage

Re

Autant pour moi j'ai pas été assez clair,

Je parlais du code VBA ^^

Réecrire ceci

"

Function NbReussi(Plg As Range, Col As Byte)

NbReussi = Application.CountIf(Plg(Col).Resize(Plg.Rows.Count), "ok")

End Function

"

Dans le style que j'ai commencé …

Re-,

DRIDRI a écrit :

Dans le style que j'ai commencé …

Justement, comme ça ne veut rien dire....

Pour info, une Function ne peut en aucun cas sélectionner une cellule, elle ne peut que renvoyer une valeur....

Donc, au risque de me répéter, explique clairement ce que tu veux, et où tu veux utiliser cette donnée...

Re

la dernière info que tu m'a donnée m'a été très util

" Pour info, une Function ne peut en aucun cas sélectionner une cellule, elle ne peut que renvoyer une valeur…."

A partir de là j'ai trouver mon erreur et je l'ai remplacer par celà

If Cells(i, bloc1.Column).Value = "ok" Then

et au final ma fonction fonctionne ^^

Merci bcp

Rechercher des sujets similaires à "fonction personalise"