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 :

Aide débogage d'une fonction qui découpe un segment en couches et redéfinit un abscisse relatif


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Décembre 2016
    Messages : 69
    Par défaut Aide débogage d'une fonction qui découpe un segment en couches et redéfinit un abscisse relatif
    Bonjour à tous,

    Je ne sais pas si l'intitulé est assez clair mais je vais essayer d'éclaicir mon idée:
    J'ai créer une function avec comme valeurs d'entrées:
    1- longe : qui est la longueur totale de l'élément
    2- raideur(variable tableau) : qui est la hauteur des couches ainsi que leur raideur
    3- xetude: qui est l'abscisse d'etude qui est donné en fonction de longueur totale de l'élément donc en abscisse absolu.

    A partir de ces données je veux faire:
    A partir des valeurs de xetude qui sont absolues identifier dans quelle couche je suis et calcul xrel qui est l'abscisse relatif par rapport à la couche.

    Exemple: sur la base des données ci-dessous

    Nom : donnees.JPG
Affichages : 152
Taille : 16,0 Ko

    si xetude=8 je devrais avoir n°couche=1 et hcouche1=10 et xrel=8
    si xetude=11 je devrais avoir N°couche=2 et hcouche2=5 et xrel=(xetude-hcouche1)=1
    si xetude=18 je devrais avoir N°couche=3 et hcouche3=7 et xrel=(xetude-hcouche1-hcouche2)=3.
    voir le rendu de ma function actuel
    Nom : Capture.JPG
Affichages : 149
Taille : 25,3 Ko

    et le code est présenté ci-dessous:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Function decoupage(longe, raideur As Range, xetude)
    k = raideur(i, 2)
    h = raideur(i, 1)
    couche = 1
    h1 = 0
    n = 0.5 * Application.Count(raideur())
     
    For i = 1 To n
        If h1 <= xetude And xetude <= h1 + raideur(i, 1) Then
        couche = couche
        hcouche = raideur(couche, 1)
        Else
        couche = couche + 1
        h1 = h1 + raideur(i, 1)
        hcouche = raideur(couche, 1)
        End If
     
    Next i
     
    For i = 1 To n
        If couche = 1 Then
        xrel = xetude
     
        Else
        xrel = h1 - xetude
        End If
     
    Next i
     
    decoupage = Array(couche, hcouche, xrel)
     
    End Function

    Merci de vos aides

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Le paramètre longe n'intervient pas dans ta fonction!

    Sinon,
    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
    Function Decoupage(ByVal Raideur As Range, ByVal xEtude As Double)
    Dim S As Double
    Dim i As Integer
    Dim TbR()
     
    TbR = Raideur.Value
    TbR(1, 2) = TbR(1, 1)                    'J'utilise la colonne 2 comme cumul des hCouches
    For i = 2 To UBound(TbR)
        TbR(i, 2) = TbR(i - 1, 2) + TbR(i, 1)
    Next i
     
    For i = 1 To UBound(TbR)
        If TbR(i, 2) >= xEtude Then Exit For
    Next i
     
    If i > 1 Then S = TbR(i - 1, 2)
     
    Decoupage = Array(i, TbR(i, 1), xEtude - S)
    End Function

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Décembre 2016
    Messages : 69
    Par défaut
    Bonjour Mercatog,

    merci pour ta proposition qui fonctionne parfaitement.
    je n'utilise pas encore ma variable longe mais elle sert dans la suite. C'est vrai que je peux la déduire en faisant la somme des hcouches comme ça j'aurai une variable d'entrée en moins.

    j'essaie de comprendre ta méthode et compare avec la mienne pour voir ce qui n'allait dans le mien.

    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 23/05/2016, 20h44
  2. [Python 3.X] Besoin urgent d'aide sur une fonction qui me semble pourtant simple à créer.
    Par Mrflop124 dans le forum Général Python
    Réponses: 7
    Dernier message: 25/04/2015, 17h13
  3. Réponses: 4
    Dernier message: 21/04/2011, 20h05
  4. Réponses: 2
    Dernier message: 13/06/2006, 20h47
  5. Réponses: 15
    Dernier message: 26/03/2006, 12h10

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