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 sur somme des éléments d'un tableau et définition boucle complexe sous VBA


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    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
    Points : 32
    Points
    32
    Par défaut Aide sur somme des éléments d'un tableau et définition boucle complexe sous VBA
    Bonjour à tout le monde,

    Alors j'aurai besoin d'un coup de pouce sur une function et je suis entrain de faire depuis un moment.
    voila j'ai des données à entrées sous forme de tableau afin de limiter mes nombres de variables. Ensuite je cherche la somme de ces variables mais bon pour l'instant je calcul les valeurs déja après la somme c'est simple à faire.
    1er point: la somme des valeurs de ma variable longueurs ne s'arrête pas après la limite atteinte.
    2ieme point le calcul de rg est fait en augmentant longueur ?
    comme un schéma vaut meiux que 1000 mots alors voici un schéma pour étayer ma logique
    Nom : explication.jpg
Affichages : 467
Taille : 365,9 Ko
    je joins ci-dessous mon code
    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
    Function essai(longueurs, ponctuel)
    Dim n   As Single 'nombre de valeur contenu dans une des colonnes de ponctuel
    Dim i, j As Long  'compteur pour boucles
     
    n = 0.5 * Application.CountA(ponctuel)
     
    For i = 1 To n
    x = ponctuel(i, 1)
    p = ponctuel(i, 2)
     
    For j = 1 To Application.Count(longueurs)
    l1 = l1 + longueurs(j)
        If x < l1 Then
            rg = p * x * (l1 ^ 2 - x ^ 2) / (6 * l1) 'calcul des valeurs sans faire la somme pour contrôle
        Else
            rg = 0
        End If
    Debug.Print "les résulats sont " & [l1]; [rg]
     
    Next
    Next
    essai = rg
    End Function

  2. #2
    Nouveau membre du Club
    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
    Points : 32
    Points
    32
    Par défaut
    Enfin pour plus de précision et compte tenu du fait que je suis débutant voici les résultats qui ont été calculés sous excel
    Nom : resulats.JPG
Affichages : 371
Taille : 48,1 Ko

    merci d'avance pour vos aides.

  3. #3
    Nouveau membre du Club
    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
    Points : 32
    Points
    32
    Par défaut
    bonjour
    J'aimerai bien pouvoir t'aider mais je ne sais comment on fait moi même j'ai du mal avec les tableaux alors la bon courage.
    bon courage je suivrai cette discussion pour connaitre la solution peut être que cela m'inspirera quelques choses.

  4. #4
    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 753
    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 753
    Points : 28 603
    Points
    28 603
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cela ne répond pas à ta question mais juste pour ton information, la ligne 3 n'est pas correcte ou plutôt ne répond pas ce que tu attends. En effet je suppose que tu as voulu typer les variables i et J comme étant de type long or la manière dont tu as écrit la ligne fait que i est de type Variant et j de type Long.
    La bonne syntaxe est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim i As Long, j As Long  'compteur pour boucles
    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

  5. #5
    Nouveau membre du Club
    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
    Points : 32
    Points
    32
    Par défaut
    Slt,

    alors j'ai regardé ta fonction mais je pense q'il faut que tu fasses d'abord ta boucle sur les longueurs comme ca elle ne reboucle pas avec tes valeurs dans ponctuel. En faisant comme ca j'arrive a trouver les deux valeurs de ton tableau résultats. Ensuite reste plus qu'a trouver une boucle qui te permet de faire les calculs comme tu l'indique je n'ai pas d'idée pour le moment mais au moins ton point 1 est résolu.
    JE Jubile toute seule dans mon salon je suis nouvelle en VBA comme toi.

    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
    Function essai(longueurs, ponctuel)
    Dim n   As Single 'nombre de valeur contenu dans une des colonnes de ponctuel
     
    n = 0.5 * Application.CountA(ponctuel)
     
    For j = 1 To Application.Count(longueurs)
    l = longueurs(j)
    l1 = l1 + l
     
     
    For i = 1 To n
    x = ponctuel(i, 1)
    p = ponctuel(i, 2)
     
        If x <= l1 Then
            rg = p * x * (l1 ^ 2 - x ^ 2) / (6 * l1) 'calcul des valeurs sans faire la somme pour contrôle
        ElseIf l1 < x < l1 Then
                rg = p * x * (l1 ^ 2 - x ^ 2) / (6 * l1)
        End If
     Debug.Print rg
    'Debug.Print "les résulats sont " & [l1]; [rg]
     
    Next
    Next
    essai = rg
    End Function
    PS: J'ai enlever les i et j dans dim comme l'indique Philippe.

  6. #6
    Membre actif Avatar de EBRAG
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Avril 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 125
    Points : 236
    Points
    236
    Par défaut
    bonjour,

    Bien reçu ton MP !

    Je ne viens plus spontanément sur le forum actuellement, car d'autres chats à fouetter (la santé d'abord !)

    Pour arriver à quelque chose, j'aurais besoin de comprendre ce qui doit être calculé, pour cela il serait bon qu'il y ait corrélation entre ton tableau manuscrit et ce qu'on voit dans le code, au niveau du nom des variables et de la fonction

    A la place de essai, mets genre :"Calcul_de_XXX"
    dans les arguments transmis, x ou p ou l ?

    dans les noms de variables, idem,

    Une fois ce travail fait, peut-être qu'on pourra faire quelque chose ?

    Bon courage
    Joël GARBE
    Fouillez bien, vous trouverez (ou pas !)

  7. #7
    Nouveau membre du Club
    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
    Points : 32
    Points
    32
    Par défaut
    Merci ebrag et bon rétablissement.

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

Discussions similaires

  1. Faire la somme des éléments d'un tableau à deux dimensions
    Par am9511 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 11/11/2015, 00h18
  2. somme des élément d' un tableau
    Par Iichham dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/06/2011, 13h21
  3. [DeskI XiR2] Somme dépendante des éléments d'un tableau
    Par courti01 dans le forum Débuter
    Réponses: 2
    Dernier message: 06/11/2010, 15h25
  4. Somme des éléments d'un tableau
    Par thouraya24 dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 09/03/2009, 14h46
  5. [débutant] Somme des éléments d'un tableau
    Par Kazuhiko$ dans le forum Caml
    Réponses: 5
    Dernier message: 19/11/2008, 11h29

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