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 :

Exploitation des données de type Range


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2018
    Messages : 1
    Par défaut Exploitation des données de type Range
    bonjour , je suis nouveau sur la plate forme et je sollicite votre aide.
    En fait j'ai débuté le VBA il y a 2 jours dans le cadre d'un petit outils de travail que je souhaite mettre sur pieds.
    J'ai du mal à exploitée une donnée de type range, car mes résultats sortent sous forme de matrice (n ligne , 1 colonne)
    j'ai crée une fonction pour effectuer un calcul qui devrait me renvoyer des résultats sous forme de matrice que je dois extraire et exploiter dans une autre fonction. je n'arrive pas déjà à extraire et afficher le résultat de la dite fonction
    vous trouver mes lignes de codes ci dessous , merci d'avance pour votre aide ,cdlt


    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
     
    Function mu(ByVal x As Range, ByVal al As Single, ByVal lon As Single)
     
    'Tailles matrices
    Dim l As Long, C As Long
    Dim i As Integer
    l = x.Rows.Count
    C = x.Columns.Count
    ReDim mom(l, 1) As Range
    For i = 1 To l
        If y <= x(i) Then
        Set mom(i, 1) = (lon / 2 - x(i)) * (lon / 2 - al) / (lon)
        Else
        Set mom(i, 1) = (lon / 2 + x(i)) * (lon / 2 - al) / (lon)
        End If
    Next i
    mu = mom
    End Function

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Pour retourner un objet eb VBA il faut faire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function mu(ByVal x As Range, ByVal al As Single, ByVal lon As Single) as Range 'C'est une bonne habitude de dire au compliateur quel est le type du resultat meme si c'est Variant.
       'Ici du code de calcul
       set mu=Result: set result=nothing
    end function
    pour afficher le contenu d'une range (jamais fait avec un objet Range relie a aucune feuille) tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim cellule as range:for each cellule in TaRange.Cells
       debug.print cellule.row, cellule.column, cellule.value: doevents
    next cellule
    Affiche le contenu dans la fenetre d'execution immediate.
    Cette fenetre est accessible en appuyant sur les touches [ctrl][g] quand on est dans l'editeur de code.

    Et au niveau efficacite, generalement Excel bat VBA donc tu aurais sans doute interet a faire ton calcul dans une feuille plutot que dans du code.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    @ kgbogning : Dans ton code, tu confonds la référence de la cellule et son contenu.
    Quand on déclarer une variable de type Range, c'est juste une boite vide et sans étiquette.
    Un Set permet d'affecter un objet référence à une variable. Par exemple ici, ça permettrait de dire quelle cellule représente la variable Range.
    Ensuite, on peut utiliser cette variable pour mettre un contenu (une valeur) dans la cellule concernée. Mais pour ça on n'utilise pas de Set.

    Cela dit, dans ton cas, tu n'as pas besoin de variable Range mais d'une simple variable matrice.
    Un type Range désigne des cellules. Or, si je ne me trompe pas, tu veux renvoyer une valeur et non placer des valeur dans des cellules.

    Malheureusement, n'ayant jamais réalisé de Function VBA renvoyant une matrice de valeur, je ne peux pas t'aider plus sur ce sujet.
    Je peux juste te dire que ce genre d'acrobatie, c'est un peu osé pour débuter le VBA. Avant de faire des loopings, il faut apprendre le vol à l'horizontal.
    Il serait plus simple de faire une simple macro Sub qui, une fois déclenchée, place le résultat dans une zone de cellule définie.

    Autre petit détail : Ton "For To" indique que la variable "i" va de 1 à "l". "i" peut donc avoir la valeur de "l". Donc, si tu définit "l" de type Long, il faut aussi définir "i" de type Long (au moins).

Discussions similaires

  1. Arrondi des données de type real
    Par YOYOVbSQL dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/06/2006, 09h02
  2. [Architecture]Taille des données de type number
    Par Nick_Holmes dans le forum Oracle
    Réponses: 6
    Dernier message: 16/06/2006, 14h17
  3. Parsing XML gestion DB I/O sur des données de type CLOB
    Par stchitembo dans le forum Oracle
    Réponses: 5
    Dernier message: 22/03/2006, 11h14
  4. [Access] Enregistrer des données de type Texte RTF
    Par portu dans le forum Bases de données
    Réponses: 22
    Dernier message: 27/10/2005, 22h54
  5. Réponses: 5
    Dernier message: 13/07/2005, 10h03

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