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 :

Formule dans Userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut Formule dans Userform
    Rebonjour le forum,

    Je vous sollicite maintenant pour un problème de formule dans un Userform.

    Je souhaite adapter dans un Userform une formule qui fonctionne très bien dans un classeuir Excel et je rencontre des difficultés de syntaxe.

    En l'occurrence, j'ai créé une formule qui dit que si, après avoir déterminé l'âge du salarié à partir de son numéro de sécu, on constate qu'il a plus de 58 ans, la case retraite met "oui ?".

    Ma formule est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ANNEE(AUJOURDHUI())-(CNUM("19"&(STXT(RECHERCHE($B$7;Liste_Agents;BD!$E$2:$E$8);2;2))))>=58;"Oui ?";)
    $B$7 est la cellule dans laquelle le nom de l'agent apparaît, au moyen d'une liste déroulante. Dans le userform, il s'agit de la Combobox11.

    En convertissant en VBA, j'ai obtenu ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox9.Value = Application.WorksheetFunction.IF(YEAR(TODAY())-(VALUE("19"&(MID(LOOKUP(Combobox11.Value,Liste_Agents,BD!R2C5:R8C5),2,2))))>=58,"Oui ?"
    J'ai aussi essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.FormulaR1C1 = 'IF(YEAR(TODAY())-(VALUE(""19""&(MID(LOOKUP(Combobox11.Value,Liste_Agents,'BD'!R2C5:R8C5),2,2))))>=58 Then
    TextBox9.Value = "Oui ?"

    Cela ne fonctionne pas ! Quelqu'un pourrait-il m'aider ?

    Merci d'avance.

    Cordialement.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Par défaut
    Re,

    N'étant pas trop à l'aise avec l’intégration de formule excel dans vba, je coderai plutôt comme ça

    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
    Private Sub ComboBox11_Change()
        Dim AnneSecu As Integer
     
        AnneSecu = Mid(Worksheets("Feuil3").Cells(2, 2).Value, 2, 2)
        MsgBox AnneSecu
     
        If 2014 - (1900 + AnneSecu) >= 58 Then
            TextBox9.Value = "Oui"
        Else
            TextBox9.Value = "Non"
        End If
     
    'Ton Code précédent
    ''ActiveCell.FormulaR1C1 =_
    ''IF(YEAR(TODAY())-(VALUE(""19""&(MID(LOOKUP(R7C2,Liste_Agents,'Base Agents'!R5C3:R278C3),2,2))))>=58 Then
    'TextBox9.Value = Application.WorksheetFunction.IF(YEAR(TODAY())-(VALUE("19"&(MID(LOOKUP(Combobox11.Value,Liste_Agents,BD!R2C5:R8C5),2,2))))>=58,"Oui ?"
     
    End Sub
    C'est juste une piste à adapter, mais dans l'esprit ça doit revenir au même que ce que tu avais écris.
    Pour moi c'est juste plus compréhensible pour quelqu'un qui relit le code ensuite

    Adapte le 2014 avec ta focntion TODAY

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AnneSecu = Mid(Worksheets("Feuil3").Cells(2, 2).Value, 2, 2)
    Adapte cette ligne en fonction du nom choisit dans la combobox pour qu'il aille lire la bonne cellule (Cells(ligne, colonne))

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour;
    La méthode IF de l'objet WorksheetFunction n'existe pas . Seule les formules d'excel n'ayant pas leur équivalent dans le VBA sont disponibles avec cet objet.
    Passe plutôt pas EVALUATE en lieu et place de WorkSheetFunction ce qui sera plus facile à mettre en place dans ton cas.
    Exemple avec DateDif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Evaluate("=IF(DATEDIF(A2,TODAY(),""y"")>25,""Oui"","""")")
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    Rebonjour Gofio
    Bonjour Philippe,


    J'ai essayé la solution de Philippe et j'obtiens ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox10.Value = Evaluate(".if(year(today())-(value("19"&(MID(LOOKUP(R7C2,Liste_Agents,BD!R5C3:R278C3),2,2))))>=58,"Oui ?")
    Cela ne fonctionne pas ! Je ne sais pas ce qui pêche : désolé, je ne suis pas très familiarisé avec les formules dans les userform. Je voudrais cependant apprendre précisément comment ça marche, car je transforme un fichier Excel plein de formules compliquées en userform.

    Merci d'avance pour votre aide.


    Cordialement.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je n'ai pas regardé ta formule complète mais il te manque le "=" en début de chaîne de caractères où tu as mis "." pourquoi ce point devant le IF ?
    EVALUATE évalue une formule donc tu dois placer dans ta chaîne la formule complète le caractère d'égalité (=) également.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [VBA-E] insertion de formule dans cellule
    Par jeff37 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/05/2006, 13h53
  2. PRoblème de formule dans Excel
    Par jbidou88 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/05/2006, 09h35
  3. saisie de formule dans la rubrique "validation rule&quo
    Par rosacatic dans le forum Access
    Réponses: 4
    Dernier message: 31/01/2006, 19h37
  4. Tri selon formule dans modification d'un état...
    Par JeremieT dans le forum Access
    Réponses: 3
    Dernier message: 26/09/2005, 13h36
  5. [D7-EXCEL2000] Formule dans cellule Excel qui ne se calcule pas
    Par Albertolino dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 09/09/2003, 14h18

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