[VBA] Condition SI dans une macro

Résolu
oylan Messages postés 8 Statut Membre -  
oylan Messages postés 8 Statut Membre -
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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    pourquoi VB.NET ?

    Michel
    0
  2. oylan Messages postés 8 Statut Membre
     
    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 ?
    0
  3. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Vous dites : Mais maintenant j'obtiens un "#VALEUR?"
    A quel endroit !

    0
    1. oylan Messages postés 8 Statut Membre
       
      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 !)
      0
  4. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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 !

    0
    1. oylan Messages postés 8 Statut Membre
       
      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.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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.

    0
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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.
    0
  8. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    0
    1. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      Merci michel_m,
      Je le prends comme exemple.
      Salutations
      Le Pingou
      0
    2. oylan
       
      Merci beaucoup, cela est parfait ! J'étais arrivé à peut pret à sa :) Mais la... c'est totalement parfait ! Merci michel !
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      J'étais arrivé à peut pret à sa :)

      :-D ben voyons! manque pas d'air le newbie !!!!
      0
    4. oylan Messages postés 8 Statut Membre
       
      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:
      0