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 :

Difficultés pour réaliser une boucle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 Difficultés pour réaliser une boucle
    Bonjour,

    Je cherche de l'aide sur une macro dont voici ci-après le code.
    a partir des données d'entrées, je veux faire une boucle qui me permet de calculer les sommes des certaines valeurs mais j'ai un bug. C'est pour un programme que je dois faire pour l'ecole de gébie civil.
    merci pour votre aide.

    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 pontuellegenerale(l1, p() As Range, x() As Range, cote)
    ub = UBound(p)          'nbre de valeur dans le tableau p()
    npoint = UBound(xpos)   'nbre de valeur dans le tableau x()
    For i = 1 To ub
    p = p(i)
    For j = 1 To npoint
    xpos = x(j)
     
    rotationgauche = p * xpos * (l1 ^ 2 - xpos ^ 2) / (6 * l1)      'calcul des rotations à gauche des différents p avec xpos associée
    rotationgauche = rotationgauche + rotationgauche                'somme de l'ensemble des rotations à gauche
    rotationdroite = -p * xpos * (l1 - xpos) * (2 * l1 - xpos) / (6 * l1)   'somme de l'ensemble des rotations à droite
    rotationdroite = rotationdroite + rotationdroite                        'calcul des rotations à droite des différents p avec xpos associée
    Next i
    Next j
     
     
    If cote = "g" Then
    rotationpontuelle = rotationgauche
    ElseIf cote = "d" Then
    rotationpontuelle = rotationdroite
    End If
    pontuellegenerale = rotationpontuelle
    End Function

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Tu ne donnes pas vraiment envie de t'aider, tant du fait de tes imprécisions (tu parles par exemple d'un "bug" mais ne dis pas où il s'exprime), tu présentes un code sans le mettre entre balises code, etc ...
    Et tu ne prends même pas (au moins) le temps de te relire, en commençant d'ailleurs par le nom de ta propre école ....
    Personnellement, je vais m'arrêter à la plus grossière (et loin d'être l'unique) des énormités que je vois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    npoint = UBound(xpos) 'nbre de valeur dans le tableau x()
    elle en dit à elle seule déjà trop long sur tes "approches" du développement et le sérieux que tu confères à ces approches.
    Je te souhaite bonne chance, certes, mais également de commencer à t'y mettre avec plus de sérieux.
    Mais ce n'est pas grave. Il ne s'agit après tout que de la note qui sera attribuée au devoir dont tu remettras une copie. Elle sera celle qui correspond à tes mérites. Tout est donc pour le mieux dans le meilleur des mondes.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  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
    bonsoir unparia,

    désole pour les erreurs c'est vrai que c plutôt
    pour la relecture je relis ce que pense c'est toujours un défaut que j'essaie de corriger je ferais mieux la prochaine fois. j'avoue que je me borne plus à vouloir être plus explicite pour la compréhension qu'autre chose. alors je suis en école d’ingénierie mais en génie civil merci de m'excuser si je n'utilise pas le bon vocabulaire "developpeur" par exemple bug si ce n'est pas adéquat.

    J'espére que tu trouveras le courage de m'aider malgré les imperfections de mon code. c'est en forgeant avec de l'aide qu'on devient forgeron comme on dit.

    Désolé et merci de m'aider à m'améliorer dans la VBA. J'apprend aussi à me débrouiller avec mes maigres moyens.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    J'espére que tu trouveras le courage de m'aider malgré les imperfections de mon code.
    il y en a trop et trop sérieuses
    c'est en forgeant avec de l'aide qu'on devient forgeron comme on dit
    commence donc à forger. Tu n'as à ce stade même pas installé la forge.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  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
    j'ai fait cette fonction avec l'aide du cours sur le site ainsi que le conseil que tu m'avais donné sur le redim quant à ma question matrice que j'avais posée.
    Ceci étant je ne vois pas les autres erreurs mais bon sans aide je ne pense pas y arrivé franchement.
    Ne pensez pas que demander de l'aide parce qu'on se sent impuissant ou incapable de trouver mieux est chose facile. Sauf que quand on est pas dans son domaine de "prédilection" en ce qui me concerne c'est le génie civil on ne peut que compter sur l'aide et la compréhension des autres.

    Vous en remerciant par avance des différentes aides sur mes oublies ou mes manquements avec vos tolérances à tous..

  6. #6
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par laminedu63 Voir le message
    merci de m'excuser si je n'utilise pas le bon vocabulaire "developpeur" par exemple bug si ce n'est pas adéquat.
    Ce que te reproche Unparia, ce n'est pas l'utilisation de ce terme mais de ne par dire à quoi ça correspond.
    Quel est l'effet de ton bug ? Rien ne se passe quand tu lances le programme ? Le résultat est erroné ? La macro plante (sur quelle ligne et avec quel message) ? Excel plante ? L'ordinateur plante ?

    Parler d'un "bug", c'est dire qu'il y a un problème sans dire de quel problème il s'agit.
    Donc, tant que tu n'auras pas été plus explicite, personne ne pourra t'aider. Et ce n'est pas faire des "up" sans donner d'explications supplémentaires qui pourra faire progresser.

    Sans compter que tu ne montres pas la ligne appelante de ta fonction.
    Et comme tu ne déclares pas le type de la plupart des paramètres (ci de tes variables d'ailleurs), difficile de comprendre ce que tu veux faire.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Quand on voit :
    - quelque-chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = ...
    For j = ...
    next i
     next j
    on commence à prendre son élan
    et
    - quelque-chose d'autre du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For ddd = 1 to 20
      toto = "aa"
      toto = toto & toto
    next
    on se sauve (c'est en tout cas ce que je fais) à toutes jambes.
    Car ce n'est pas que l'écriture, qui fait là défaut, mais également la raison/logique (ou la réflexion, ou l'effort de réflexion, ou le soin ...).
    Et ce n'est pas tout ...
    Voilà.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  8. #8
    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 à toues et à tous,

    Comme déjà dit et afin d'être plus explicite, je cherche de l'aide pour faire une macro qui doit à partir des données d'entrée p et x me calculer la rotation gauche ou droite suivant le cas (voir image excel ci-dessous)
    Pièce jointe 232729
    Les cases en jaune sont les données d'entrées. le résultat de ma fonction donne #valeur. c'est ce que j'appelle bug dans mon précédent pote désolé si ce n'est pas le mot exact je suis pas information je me débrouille.
    Voila le bout de code que j'ai fait avec mes maigres connaissances et sur la base des tutoriels à ma disposition.
    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
    Function pontuellegenerale(l1, p() As Range, x() As Range, cote)
    ub = UBound(p) 'nbre de valeur dans le tableau p()
    npoint = UBound(x) 'nbre de valeur dans le tableau x()
    For i = 1 To ub
    p = p(i)
    For j = 1 To npoint
    xpos = x(j)
     
    rotg = p * xpos * (l1 ^ 2 - xpos ^ 2) / (6 * l1) 'calcul des rotations à gauche des différents p avec xpos associée
    rotationgauche = rotg + rotg                        'somme de l'ensemble des rotations à gauche
    rotd = -p * xpos * (l1 - xpos) * (2 * l1 - xpos) / (6 * l1) 'calcul des rotations à droite des différents p avec xpos associée
    rotationdroite = rotd + rotd                    'somme de l'ensemble des rotations à droite
    Next i
    Next j
     
    If cote = "g" Then
    rotationpontuelle = rotationgauche
    ElseIf cote = "d" Then
    rotationpontuelle = rotationdroite
    End If
    pontuellegenerale = rotationpontuelle
    End Function
    SI quelqu'un peut maider à résoudre mon problème. Merci d'avance.
    En variant et toujours pour réduire le nombre de valeurs d'entrée je pensais à entrer P et X en même temps dans une même variable mais c du luxe pour le moment je me contenterai de l'aide pour cette fonction déja.

    Vous en remerciant tous.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/06/2014, 17h47
  2. Comment réaliser une boucle pour remplir un tableau
    Par LVChatel dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 03/04/2009, 11h20
  3. Problème pour réaliser une macro "de boucles" dans VBA
    Par philou7176 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/12/2008, 15h41
  4. réaliser une boucle pour afficher des sources
    Par cloridriks dans le forum Langage
    Réponses: 9
    Dernier message: 17/03/2008, 15h21
  5. Difficulté pour réaliser une requete peu complexe :/
    Par DanaX dans le forum Langage SQL
    Réponses: 9
    Dernier message: 16/05/2007, 13h55

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