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 :

Affecter une plage de cellules à une variable tableau par passage de paramétre à une fonction


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 51
    Points
    51
    Par défaut Affecter une plage de cellules à une variable tableau par passage de paramétre à une fonction
    Bonjour,
    Je cherche à affecter une plage de cellule à une variable.
    J'ai une fonction que j'appelle dans Excel
    Dans ma fonction toto je veux mettre dans un tableau à une dimension les valeur de ma plage (A2:E2) = 5 valeurs d'entier
    A B C D E F
    1 40 30 16 5 28 =toto(A1:E1)
    2 40 37 1 6 27 =toto(A2:E2)
    Ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Function toto(plage As Range) 
    Dim Tablo
    Tablo = plage
     
    ' Traitement à définir
    toto=Plage(0)
    End Function
    Excel me retourne une injure : #VALEUR!. Je suis bloqué car je n'arrive pas a récupérer ma plage dans un tableau.
    Merci.


    Que faire ? Merci.

  2. #2
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonjour,

    C'est normal, lorsque tu mets ta plage dans un tableau il faut écrire si tu veux la première valeur.
    ou bien

  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
    12 772
    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 : 12 772
    Points : 28 633
    Points
    28 633
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour obtenir le résultat attendu et d'après tes explication, il n'y a aucunement besoin d'une fonction personnalisée et donc de VBA.
    La fonction native d'excel te donnera le même résultat
    Si tu veux connaître le Xème élément de la plage, il suffit de lui passer comme 2ème argument l'indice
    Ci-dessous la fonction te renverra la valeur du 4ème élément de la plage A1:E1 soit la valeur de la cellule D1 soit 5
    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
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Exemple :
    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
    Function toto(plage As Range)
    Dim valeurs As Variant
    Dim formules As Variant
    Dim valeur As Variant
    Dim formule As String
    Dim ligne As Long
    Dim colonne As Long
     
      'Tableau des valeurs
      valeurs = plage.Value
      'Tableau des formules locales (en français)
      formules = plage.FormulaLocal
      'Valeur d'une cellule
      ligne = 1
      colonne = 2
      valeur = plage(ligne, colonne)
      'Résultat de la fonction
      toto = "La formule " & formules(ligne, colonne) & " donne : " & valeur
     
    End Function
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  5. #5
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 51
    Points
    51
    Par défaut
    Bonjour,
    Merci pour vos réponses,
    Mais je veux récupérè la plage complète dans un tableau car ensuite je vais faire un tri sur le tableau et d'autre traitement avant d'envoyer le résultat.

    Le retour provisoire de ma fonction c'était juste pour montrer que le tableau était vide.
    et que le résultat ne retournait rien.
    #VALEUR!
    Quand j'aurais mon tableau je pourrais continuer ma fonction.
    Merci.

  6. #6
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 51
    Points
    51
    Par défaut
    désolé ma fonction est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function toto(plage As Range)
    Dim Tablo As Variant
     
    Tablo = plage.Value
     
    ' Traitement à réaliser sur le Tablo récupéré issue de la plage
     
    ' Test du tableau
    toto = Tablo(3)
     
    ' Résultat quand la fonction sera fini
    ' toto = A définir
     
    End Function

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 772
    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 : 12 772
    Points : 28 633
    Points
    28 633
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si tu utilises une variable tableau pour charger une plage de données celle-ci est est toujours à deux dimensions. Je te conseille la lecture de ces deux tutoriels
    1. Utiliser les variables tableaux en VBA Excel
    2. Conceptualisation des variables tableau en VBA et Application à l'optimisation du code sous Excel
    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. XL2003 charger rapidement une plage de cellules dans un tableau vba -
    Par martindwi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/09/2014, 15h41
  2. Affecter une plage de cellules à une variable tableau
    Par bilou_12 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2013, 09h19
  3. [XL-2007] Passer en paramètre une plage de cellules selectionnée par l'utilisateur !
    Par mermar dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 05/10/2011, 20h55
  4. [VBA-E] Affecter un tableau à une plage de cellules, serait-ce possible ?
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/02/2007, 12h59
  5. Réponses: 2
    Dernier message: 17/12/2006, 18h17

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