[VBA] Condition SI dans une macro

Résolu
Bonjour à tous,

Me revoila... (Oh non, pas encore lui) :p

Je me disais, que je pourrais avoir peut-être de l'aide sur cette fonction, qui as pour but de tester la valeur dans la cellule, et de retourner une autre valeur si cette valeur est égale à datecreation, auteurs, titres... etc... :

Cependant, il me retourne toujours (dans la cellule) "#NOM?!" ... Donc, si vous pouviez m'aider !

J'espère avoir été asser explicite

Merci beaucoup !!!!

Code : VB.NET

Option Explicit
Dim valeur As String
Dim datecreation As String
Dim auteurs As String
Dim Titres As String
Sub get_wss_properties(valeur)
If valeur = datecreation Then GoTo date_creation
Else
If valeur = auteurs Then GoTo auteur
Else
If valeur = Titres Then GoTo Titres
Else
ActiveCell.Value = "Inserez autre chose"
End Sub
Sub date_creation()
ActiveCell = ActiveWorkbook.BuiltinDocumentProperties("creation date")
ActiveCell.NumberFormat = "dd/mm/yyyy"
End Sub
Sub auteur()
ActiveCell = ActiveWorkbook.BuiltinDocumentProperties("author")
End Sub
Sub Titre()
ActiveCell = ActiveWorkbook.BuiltinDocumentProperties("Title")
End Sub



--
Dylan ''oylan'' Reymond
Quand je le fais, au moin, je le fais bien! :D

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. Voila, j'ai modifier mon code comme ceci :

    Option Explicit
    Dim A As String
    Dim datecreation As String
    Dim auteurs As String
    Dim Titr As String
    Function get_wss_properties(A)
    If A = "datecreation" Then
    date_creation
    ElseIf A = "auteurs" Then
    auteur
    ElseIf A = "Titr" Then
    Titre
    End If
    ActiveCell.Value = "coucou"
    End Function
    Sub date_creation()
    ActiveCell = ActiveWorkbook.BuiltinDocumentProperties("creation date")
    ActiveCell.NumberFormat = "dd/mm/yyyy"
    End Sub
    Sub auteur()
    ActiveCell = ActiveWorkbook.BuiltinDocumentProperties("author")
    End Sub
    Sub Titre()
    ActiveCell = ActiveWorkbook.BuiltinDocumentProperties("Title")
    End Sub

    Mais maintenant j'obtiens un "#VALEUR?"

    Que faire ?
    1. Bonjour,
      Vous dites : Mais maintenant j'obtiens un "#VALEUR?"
      A quel endroit !

      1. Bonjour !,

        Dans la cellule désirée... mais, je croit que c'est parce que cela doit me faire une réfèrence circulaire...

        Vu qu'il modifie à double sa valeur (mais vu qu'il y a un test... ca tourne en boucle !)
    2. Bonjour,
      C'est vraiment étonnant, si vous appliquez exactement la réponse obtenu (MichD-11.sept.2012) (pas de michel_m .... Salutations) sur [Codes-Sources] vous récupérez les informations désirez.
      Ou il y a un autre problème !

      1. Bonjour,

        Je ne sais absolument pas pourquoi cela ne marche pas :/

        Je vais esseyer de modifier avec selement des SI et non des GoTo, cela vien probablement de la.
    3. Bonjour,
      Une chose est sûre, le code telsque vous l'avez posté, je l'ai testé et il ne fonctionne pas du tout, il donne erreur sur erreur .... !
      Par contre je répète que le code proposé sur Codes-Sources est OK.
      La suite sans moi.

      1. Contributeur
        Bonjour,

        Dim A As String
        Si ta cellule contient une date au format excel ou un nombre tu auras #VALEUR!

        Et pourquoi faire des sub ?
        Autant mettre la ligne de code dans le if et les elseif

        eric

        Jamais tu ne répondras à un mp non sollicité...
        Bon, ça c'est fait.
        1. Contributeur
          Bonjour

          fonction personnalisée

          Function get_wss_properties(propriete As String) As String
           With ActiveWorkbook
               Select Case propriete
                    Case "date création"
                         get_wss_properties = Format(.BuiltinDocumentProperties("creation date"), "dd/mm/yy")
                    Case "auteur"
                         get_wss_properties = .BuiltinDocumentProperties("author")
                    Case "titre"
                         get_wss_properties = .BuiltinDocumentProperties("Title")
                    Case Else
                         get_wss_properties = "??????"
               End Select
          End With
          End Function


          Michel
          1. Merci michel_m,
            Je le prends comme exemple.
            Salutations
            Le Pingou
          2. Merci beaucoup, cela est parfait ! J'étais arrivé à peut pret à sa :) Mais la... c'est totalement parfait ! Merci michel !
          3. Contributeur
            J'étais arrivé à peut pret à sa :)

            :-D ben voyons! manque pas d'air le newbie !!!!
          4. hahaha :)

            J'arrivais au même données, mais sans les case :) J'avoue que ta solution m'épate ! :D

            Et, je suis pas un newbie! J'ai déja fait plein d'instance (BWAHAHAHAHA) :-D

            :okjesort: