Code VBA Boucle - formule personalisée pour chaque cellule d'une colonne

rcan7412

XLDnaute Occasionnel
Bonjour,

Je souhaite appliquer une fonction personnalisée (module vba) à toute valeur introduite pour chaque cellule d'une colonne précise.

Comment réaliser une boucle pour que le code VBA de la fonction personnalisée soit exécuté à chaque entrée données dans la cellule ?

Voici le code de la fonction :

Code:
Public Function MEF_Iban(Cellule As String) As String
Dim tmp As String
    If Cellule = "" Then Exit Function
    Dim nbCar As Byte, i As Byte
    tmp = ""
    nbCar = Len(Cellule)
    For i = 1 To nbCar Step 4
        tmp = tmp + Mid(Cellule, i, 4) & " "
    Next i
    MEF_Iban = tmp
End Function

Merci pour l'aide.
 

Papou-net

XLDnaute Barbatruc
Re : Code VBA Boucle - formule personalisée pour chaque cellule d'une colonne

Bonsoir rcan7412,

Pas facile d'être concis sans pièce jointe.

Toutefois, il me semble que tu fais une confusion entre fonction et procédure. Une fonction s'appelle directement depuis une cellule de feuille de calcul, donc il n'y a pas besoin de boucle. Si, par exemplme, tu entres une valeur en A1 et que désires obtenir la valeur renvoyée par la fonction en B1, alors tu écris cette formule en B1:

Code:
=MEF_Iban(A1)
Mais le plus simple ne serait-il pas de préciser ta demande dans une copie de ton fichier (sans données confidentielles bien sûr)?

A +

Cordialement.
 

rcan7412

XLDnaute Occasionnel
Re : Code VBA Boucle - formule personalisée pour chaque cellule d'une colonne

Bonsoir Papou-net,

Merci pour ta réponse.

En annexe le fichier de travail.

Effectivement la fonction "marche" dans la cellule (voir F24).

Mais j'aimerais que le formatage de la cellule fonctionne directement à l'encodage (F2).

Ceci pour contourner le problème du format personnalisé impossible avec des lettres dans xl dans le cas suivant :

Format : BE42 3101 3475 8954 > groupe de 4 chiffres ou lettres.

Compte IBAN

a+

Rodolphe
 

Pièces jointes

  • Gestion Client2015.xlsm
    46.7 KB · Affichages: 105

Papou-net

XLDnaute Barbatruc
Re : Code VBA Boucle - formule personalisée pour chaque cellule d'une colonne

RE

Ci-joint ton fichier modifié.

J'ai transformé la fonction MEF_Iban en procédure et je la déclenche la l'événement Change de la feuille Prs. J'ai dû également déclarer la variable tmp en Public, en début du Module1.

Espérant avoir solutionné le problème.

Cordialement.
 

Pièces jointes

  • Gestion Client2015-2.xlsm
    44.9 KB · Affichages: 38

rcan7412

XLDnaute Occasionnel
Re : Code VBA Boucle - formule personalisée pour chaque cellule d'une colonne

Bonjour Papou-Net,

Un grand merci (tardif mais absent hier) pour tes adaptations.
Effectivement cela fonctionne.
Ah que j'aimerais avoir tes capacités de travailler sur le code.

Peut-être un bonus ?

Sur la colonne, j'ai appliqué une mise en forme conditionnelle :

=ControleIban(F3)=FAUX

Si le compte IBAN encodé est faux, la cellule est mise en rouge.

Pourrait-on envisager de réaliser cette opération à l'intérieur de la procédure vba en faisant apparaître une textbox "compte invalide" ?

Excellent réveillon et bonne année 2015 !
 

Papou-net

XLDnaute Barbatruc
Re : Code VBA Boucle - formule personalisée pour chaque cellule d'une colonne

Bonjour rcan7412,

Bien que je n'y connaisse rien en matière d'Iban, je t'adresse une proposition qui me semble répondre à ta demande.

En te souhaitant également un bon réveillon ainsi qu'une bonne année 2015.

Cordialement.

PS: j'ai supprimé le format conditionnel de la colonne F
 

Pièces jointes

  • Gestion Client2015-3.xlsm
    46.3 KB · Affichages: 37

rcan7412

XLDnaute Occasionnel
Re : Code VBA Boucle - formule personalisée pour chaque cellule d'une colonne

Re,

Merci pour ta réponse ultra-rapide.

Mais en testant, il y a un problème, il transforme la saisie en ôtant le BE du compte et en ajoutant des chiffres à ce compte.

Le test peut être effectué avec ce compte fictif :
BE10 0000 0000 0404 ou
BE96 0000 0000 0505

?
 

Papou-net

XLDnaute Barbatruc
Re : Code VBA Boucle - formule personalisée pour chaque cellule d'une colonne

RE:

Bien reçu le message, mais je n'ai plus le temps de regarder le problème pour cette année.

Un peu de patience donc, et à l'année prochaine (c'est-à-dire à très bientôt).

Cordialement.
 

rcan7412

XLDnaute Occasionnel
Re : Code VBA Boucle - formule personalisée pour chaque cellule d'une colonne

Bonjour et bonne année 2015 à tous les xlnautes !

J'ai un peu avancé sur mon projet. Mais je bute encore sur certains points.

Une première remarque est que lorsque j'ouvre le fichier, toutes les données n'apparaissent pas automatiquement.
En faisant "PgDn" et "PgUp", les données reviennent ? Je ne comprends pas pourquoi.

Dans la colonne A, je souhaite utiliser une clé primaire de type alphanumérique. Une procédure vérifie les doublons, efface le doublon et le signale avec une MsgBox. Là pas de souci, cela fonctionne.

Dans la colonne E, une fonction contrôle le numéro encodé et renvoie une message box pour signaler si l'argument est vrai ou faux et donc à corriger.
J'aurais souhaité que la donnée fausse soit mise en rouge (soit la cellule, soit le numéro) en plus du message et non effacer la donnée comme en colonne A pour la clé (avec doublon).

Enfin pour la colonne G, pour le compte iban, il faudrait que l'affichage du numéro se fasse par groupe de 4 caractères (pour améliorer la visibilité) comme avec la fonction personnelle =MEF_Iban().

D'avance merci pour l'aide.
 

Pièces jointes

  • Gestion Client2015essai.xlsm
    50.6 KB · Affichages: 58

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 097
Membres
103 116
dernier inscrit
kutobi87