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 programme débutant [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Par défaut aide programme débutant
    bonjour, voici un draft de ce que je veut programmer . Ce que j'ai mis entre guillemets et en rouge c'est ce que je ne sait pas faire.Je suis débutant et je vous remercie de 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    For Cpt1 = 1 To DL_burst Step 1
                    For Cpt2 = 1 To DL_burst Step 1
                        If Cpt1 * Cpt2 = DL_burst Then
                           "Ranger les résultats des cpti et cptj dans un tableau"
                        End If
                    Next Cpt2
                Next Cpt1
    
    
    Function optimum(nb_sub_tr, nb_bis_tr) 
    
    rect_width=0
    rect_height=0
    
    For ("tout le tableau des cpti cptj -> tableau de  deux colonnes donc avec nombre de lignes indéfini")
        If cpti<=nb_sub_tr And cptj<=nb_bis_tr Then
            While (nb_bis_tr-rect_width)>=0
                rect_width=rect_width + cpti
            Wend
            While (nb_sub_tr-rect_height)>=0
                rect_height=rect_heigth + cptj
            Wend
        End If
        
    Next
    End function
    
    "Récupérer le couple rect_height et rect_width tel que rect_height x 
    rect_width est le max des couples"
    
    nb_sub_tr - rect_height("max") = a
    nb_bis_tr - rect_width("max") = b
    
    Call Optimum(a,b)
    
    "Trouver point d'arrêt "

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour

    Les balise code ca existe et c'est très pratique (regarde vers la fin du premier message de ce forum)

    Pour apprendre a faire un tableau
    http://silkyroad.developpez.com/vba/tableaux/
    Tu trouvera ce qu'il faut pour le deuxième point rouge avec ubound

    ensuite je ne sais pas si ce qui te bloque c'est la méthode ou l'utilisation du tableau.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Par défaut
    Merci pour ta réponse!
    J'ai regardé pour baliser le code et en effet c'est plus lisible comme cela.
    Cependant, j'ai lu l'aide que tu m'a envoyé, mais pour faire ce que je veux (première ligne rouge: mettre les résultats dans un tableau) il faudrait d'après ce que j'ai compris faire deux boucles imbriquées sur i et j avec Ubound en plus de mes boucles sur cpti cptj que j'ai déjà; c'est ce qu eje veux éviter.

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    bon je t'aide mais je ne sais pas ce que tu appelel résultat cpti c'est pas un resultat mais une variable et si le résultat c'est le produit c'est toujours le même. C'est quoi les dimension de ton tableau? Il contient quoi?
    Je peux pas imaginer tout ca a ta place
    Quand tu sauras ce que tu veux et que tu sauras l'exprimer on pourra envisager une réponse adapté

    La j'ai un tableau de dim DL_bursxDL_burs qui contient vrai au coordonné i j si i*j = DL_burs faux sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    dim tableau() as boolean
     
    redim tableau(1 to DL_burs,1 to DL_burs)
    For Cpt1 = 1 To DL_burst Step 1
                    For Cpt2 = 1 To DL_burst Step 1
                        If Cpt1 * Cpt2 = DL_burst Then
                           burst(cpt1,cpt2)=true
                     End If
                 Next Cpt2
    Next Cpt1

  5. #5
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Par défaut
    quand tu dis tu veux dire plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau(cpt1,cpt2)=true
    n'est-ce pas?

    Oui c'est vrai que c'est pas très clair tout ça; mais si j'arrive à sortir ça dans un tableau ça me règle tout mon problère.

    Si je comprends bien tu mets vrai dans le tableau si la condition i*j est vraie.
    Mais faudrait en fait que le tableau soit de 2 colonnes avec les i et j qui vérifient la condition dans chaque colonne(une colonne avec les i et une autre avec les j). Tu vois?

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    effectivement c'était bien tableau
    A tableau n'a ni ligne ni colonne, il a des dimensions.
    Quand tu le représente tu parle de ligne et de colonnes mais on est entre personne civilisé alors pas de ligne pas de colonne.
    Sinon ca va être pire, car il va te falloir utiliser la commande redim preserve et elle ne permet de redimensionner que la dernière dimension. Du coup la première dimension sera tes "colonnes" et la deuxième les "ligne" et là ceux qui ont des souvenir sur les matrice vont crier au scandale (et je m'en balance leur convention mon brisé les bonbons pendant 5ans)

    donc tableau(1,k) c'est la première valeur du k ème couple et tableau(2,k) la deuxième valeur du k ème couple Ni ligne Ni colonne


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'même dédlaration de variable plus
    dim n as integer
    n=1
    For Cpt1 = 1 To DL_burst Step 1
                    For Cpt2 = 1 To DL_burst Step 1
                        If Cpt1 * Cpt2 = DL_burst Then
                           n=n+1
                           redim preserve tableau(1 to 2, 1 to n)
                           tableau(1,n)=i
                           tableau(2,n)=j
                     End If
                 Next Cpt2
    Next Cpt1
    par contre tu aura des doublons il y a eu un sujet ou j'ai fait un poste pour éviter cela (il doit avoir moins de 2 semaine) je te laisse le chercher,. Il devait utiliser comme mot clef multiple d'un nombre au quelque chose comme ca

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/11/2014, 21h12
  2. Réponses: 4
    Dernier message: 12/05/2010, 16h54
  3. aide programmation débutant
    Par azerty0125 dans le forum Débuter avec Java
    Réponses: 29
    Dernier message: 16/06/2009, 13h48
  4. Aide programme débutant en C++
    Par beufa59 dans le forum Débuter
    Réponses: 4
    Dernier message: 10/03/2009, 15h30
  5. Aide pour débutant : addition
    Par playentry dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/03/2005, 19h08

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