IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA - Problème lors de la création d'une nouvelle fonction [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut VBA - Problème lors de la création d'une nouvelle fonction
    Bonjour à toutes et à tous,

    nouvellement employé au sein d'une association en tant qu'administrateur de bases de données, mon premier axe de travail concerne l'harmonisation des méthodes de travail de mes collègues.

    Dans ce cadre, et afin de leur rendre mes "exigences" plus faciles à digérer, je planche sur la création d'une nouvelle fonction à intégrer dans leurs travaux pour être sûr du bon remplissage d'un champs (pour moi) et leur éviter une charge de travail supplémentaire.

    Novice en matière de programmation VBA, j'ai suivi plusieurs tutoriels trouvés sur ce site et d'autres afin de mettre au point ma fonction et de m'assurer de pouvoir la partager (passage par le .xla, ...).

    Venons en à mon problème :

    Ma fonction doit récupérer pour chaque entrée trois valeurs de champs grâce au code "ActiveSheet.UsedRange.Cells(x, x)".

    Ensuite, ces trois valeurs sont comparées à des "seuils" propres à chacune à l'aide d'un code de comparaison basique "If / Then / Elseif / ...".

    Quand le bon critère est rempli, je demande à la fonction d'attribuer un code à la cellule active, de A à F suivant le critère rempli avec le code "ActiveCell.Value = "x" ".

    Lors de l'utilisation de la formule sur un classeur "test", aucun message d'erreur ne m'est renvoyé mais la cellule se remplit invariablement d'un "0". Je n'ai donc pas fait d'erreur en codant, mais ma formule ne fonctionne pas.

    Pour moi, le problème peut venir de deux points :

    - la récupération des valeurs ne fonctionne pas en raison d'un mauvais choix de code

    - l'écriture du code attribué pose problème, mais là je ne vois pas pourquoi.

    Une troisième possibilité serait que l'erreur soit dans mes comparaisons, mais je n'ai utilisé que du "=" ou du ">=", donc je ne pense pas que le problème vienne de là.

    Voilà, je tiens à vous remercier d'avance de vous intéresser à mon petit problème et vous souhaite une bonne journée à tous.

    Simon

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonjour,

    le bouton : au dessus de la zone d'édition du forum devrais te permettre de mettre entre balise de code : [Code] [/Code] la petite partie de ton code concernant ton problème et que tu vas rajouté à la suite de cette discussion ...

    sinon pour le peu de code que tu as poster dans la plupart des cas mieux vaux spécifié explicitement la feuille concernée qu'utiliser l'objet ActiveSheet suivant source de bug..(car dépendant des manipulations de l'opérateur)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut
    Merci bbil de cette réponse rapide.

    Concernant le code, voilà je pense la source du problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function Classif(stot1, stot2, stot2)
     
    stot1 = ActiveSheet.UsedRange.Cells(2, 6)
    stot2 = ActiveSheet.UsedRange.Cells(2, 13)
    stot3 = ActiveSheet.UsedRange.Cells(2, 17)
    Je ne sais pas si je peux changer le "ActiveSheet" du fait justement que le principe est de mettre à disposition cette fonction des autres utilisateurs et que je ne suis malheureusement pas à l'abri qu'un(e) collègue ait nommé sa feuille de façon totalement extravagante. Néanmoins, je teste ça de suite sur mon propre poste au moins pour être fixé.

    Je ne savais pas si mettre mon petit code en entier ici pouvait être intéressant, mais apparemment oui donc le voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Function Classif(stot1, stot2, stot2)
     
    stot1 = ActiveSheet.UsedRange.Cells(2, 6)
    stot2 = ActiveSheet.UsedRange.Cells(2, 13)
    stot3 = ActiveSheet.UsedRange.Cells(2, 17)
     
    If stot1 >= 5 and (stot2>=5 or (4>=stot2>=2 and stot3>=2)) Then
    		ActiveCell.Value = "A"
    	Elseif stot1>=5 and (1>=stot2 or (4>=stot2>=2 and 1>=stot3)) Then
    		ActiveCell.Value = "B"
    	Elseif 4 >= stot1 >= 2 and (stot2>=5 or (4>=stot2>=2 and stot3>=2)) Then
    		ActiveCell.Value = "C"
    	Elseif 4 >= stot1 >= 2 and (1>=stot2 or (4>=stot2>=2 and 1>=stot3)) Then
    		ActiveCell.Value = "D"
    	Elseif 1 >= stot1 and (stot2>=5 or (4>=stot2>=2 and stot3>=2)) Then
    		ActiveCell.Value = "E"
    	Elseif 1 >= stot1 and (1>=stot2 or (4>=stot2>=2 and 1>=stot3)) Then
    		ActiveCell.Value = "F"
    End If
     
    End Function

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Toujours, pas clair ..

    c'est quoi ces paramètres ?

    tu définit 3 paramètres à ta fonction mais tu les modifies dés la première ligne de code ..!!!

    comment appelle tu ta fonction ? montre la ligne de code VBA ou la formule ?

  5. #5
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut problème lors de la création d'une nouvelle fonction
    bonjour Bbil,

    c'est la première fois que je vois la formulation ci-dessous dans Excel.
    Pour ma gouverne : VBA est-il vraiment capable de l'interpréter ?

    cordialement.

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par nibledispo Voir le message
    bonjour Bbil,

    c'est la première fois que je vois la formulation ci-dessous dans Excel.
    Pour ma gouverne : VBA est-il vraiment capable de l'interpréter ?

    cordialement.
    non ... cela s'écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (4 >= stot1) And (stot1 >= 2)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/04/2010, 19h15
  2. Réponses: 11
    Dernier message: 05/08/2009, 12h30
  3. Problème lors de la création d'une table
    Par xoum89 dans le forum SQL
    Réponses: 8
    Dernier message: 20/04/2009, 22h29
  4. Problème lors de la création d'une DLL?
    Par zuzuu dans le forum Windows
    Réponses: 6
    Dernier message: 04/10/2007, 10h26
  5. Réponses: 4
    Dernier message: 04/06/2007, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo