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 excel function ou sub ?


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 2
    Par défaut VBA excel function ou sub ?
    Bonjour ,

    Je souhaite réaliser une sub ou function du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    workline(x) = Trim(Worksheets("feuil1").Cells(matchligne, x)
    (matchline étant une variable récupérée via une autre sub )

    ensuite appeler workline dans une autre procédure
    en faisant par valeur1 = workline(7).value

    et valeur 2 = workline(10).value
    etc ... ( il n y pas de suite logique donc pas de boucle possible)

    le pb est que je n'arrive pas à faire l'association , je me mélange (debutant)
    avec les sub , function et objet etc ..

    Merci de votre aide

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    J'ai absolument rien compris

    Ça dépend de ce que doit retourner tes fonctions (ou procédures) pour savoir si comme macro tu dois utiliser un sub ou une function
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 2
    Par défaut
    En fait je dois en utilisant
    une formule recurrente allégé mon code par une fonction :
    je m'explique :
    j'ai ds une sub x fois la formule

    truc1 = Trim(Worksheets("feuil1").Cells(5, 10).Value)
    truc2 = Trim(Worksheets("feuil1").Cells(5, 12).Value)
    truc3 =Trim(Worksheets("feuil1").Cells(5, 17).Value)
    |
    |
    |
    |
    etc .....
    les valeurs 10,12,17,.... (colonnes ne pouvant etre determinés via une boucle logique)

    Je souhaite donc créer une formule type :
    formule(x)= trim(Worksheets("feuil1").Cells(5, x).Value)
    mais je ne sais pas comment faire en pratique ..
    En espérant etre + clair

    Merci encore

  4. #4
    Membre émérite
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Par défaut
    Dans ce cas, tu dois utiliser un tableau. Je ne sais pas ce que contiennent les cellules que tu veux injecter dans le tableau. Cela influe sur la nature du tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'Déclaration d'un tableau de 11 élements
    Public MesValeurs(10) As String
     
    Public Sub InstancierTableau() 
        MesValeurs(0) = Trim(Worksheets("feuil1").Cells(5, 10).Value)
        MesValeurs(1) = Trim(Worksheets("feuil1").Cells(5, 12).Value)
        MesValeurs(2) = Trim(Worksheets("feuil1").Cells(5, 17).Value)
    End Sub
    Maintenant, tu peux utiliser les éléments du tableau en faisant référence aux tableau MesValeurs.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox "Deuxième élément : " & MesValeurs(1)

  5. #5
    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
    bon si j'ai tout bien compris, utilise une fonction... et pour l'appel supprime le .value.. :

    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
     
    '
    ' La fonction
    '
    Function workline(x) As String
      workline = Trim(Worksheets("feuil1").Cells(5, x))
    End Function
    '
    'l'appel dans les autre porcedure
    '
    Sub test()
      Valeur1 = workline(7)
      Valeur2 = workline(10)
      Debug.Print Valeur1
      Debug.Print Valeur2
     End Sub
    PS : Pense aussi que le 1° paramétre de Cells est la ligne le second, la colonne..

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/02/2013, 21h25
  2. [VBA-E]function sub declaration
    Par trach.sam dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/08/2006, 20h14
  3. [VBa-E] Function ou Sub comment choisir?
    Par gootsu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2006, 15h20
  4. [VBA EXCEL] Réduire/Agrandir UserForms
    Par Fench dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/11/2003, 16h02
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

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