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

VB 6 et antérieur Discussion :

Calculer au mieux un périmètre avec différentes valeurs


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Calculer au mieux un périmètre avec différentes valeurs
    Slt à Tous,
    Désolé pour l intitulé, mais pas facile a expliquer.
    Je cherche a me coder un petit prog, et j ai une fonction a inserer dont je ne vois pas comment m en sortir!!!

    J ai une surface de X x X
    Je dois faire le tour de cet espace donc , périmètre.
    J' ai a ma disposition des éléments de 3 m, 2m, 1m, et 0.5 m
    bien sur les surfaces sont toutes réalisables avec les éléments, pas de décimale a l infini (8x6 , 9x3 , 7.5 x 6 etc...)

    Il faut que je trouve a la fin le nombre d éléments qu il me faudra, en sachant qu il faut privilégier les éléments les plus grands...

    Si vous avez une ptite idée...
    Je suis preneur!!!
    Merci!!

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 197
    Points
    17 197
    Par défaut
    Salut, bienvenue sur DVP

    Dans un premier temps je verrai mieux ta demande dans le Forum Général Algorithmique,
    quitte à revenir sur le forum VB6 et antérieur, si tu utilises bien ce langage de programmation, et que tu éprouves des difficultés à mettre en œuvre le codage .
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 197
    Points : 300
    Points
    300
    Par défaut
    Bonjour,

    il s'agit d'une variante d'un problème algorithmique bien connu, comme te l'a signalé ProgElecT.
    Tu pourras trouver une première piste d'étude sur wikipedia : Le problème du sac à dos.

  4. #4
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci!!
    En effet , une bonne piste trouvé ici :https://rosettacode.org/wiki/Knapsac...m/Visual_Basic

    Je vais essayer d' adapter tout ça!!

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    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
    Le tout premier pas me parait devoir être celui de l'éclaircissement des idées et des mots
    Un périmètre est une longueur (une mesure, donc). Ne pas confondre périmètre et pourtour ou contour
    Ne pas confondre "surface" (également une mesure) avec forme géométrique (rectangle, apparemment, dans ton cas)
    Je suppose que par "faire le tour de cet espace", tu peux dire "border" ce rectangle. Je remarque que tu ne précises pas si tu veux le border intérieurement ou extérieurement (et les calculs et donc l'algo sont alors TRES différents).
    Reste qu'il s'agit en effet là (une fois ces précisions apportées) d'un problème d'algorithme avant d'en être un de développement.
    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.

  6. #6
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonsoir unparia,

    Pour moi le contour, ou le pourtour sont plus subjectifs... ,mais peut être me trompe-je, c'est pour ça que j ai utilisé la notion de périmètre(donc de mesure)
    Concernant ma surface, c est pareil, je dois utiliser des mesures (aires), sachant que les formes seront toujours soit rectangles, soit carrées.

    Il faut en effet que je "borde" ce périmètre, pas d intérieur ou d extérieur dans ce cas la.

    Exemple :Si je prend toujours en compte des éléments de 3 , 2 , 1 , 0.5 m
    Ma surface est de 8m X 6m, j obtient un périmètre de 28 mètre linéaire

    Je souhaiterais que le programme me donne :
    8 élément de 3 mètres + 2 élément de 2 mètres
    ou
    4 éléments de 3 mètres + 8 éléments de 2 mètres

    Voila, je vous avoue que je suis loin d' être un as en algorithme, ni en vb, je fais plutôt ça pour le plaisir et je pensais pas que cette fonction me donnerai autant de fil a retordre!!
    Merci d' avoir pris le temps de me répondre en tous cas
    Guill

  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 : 82
    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
    l faut en effet que je "borde" ce périmètre, pas d interieur ou d exterieur dans ce cas la.
    Hé non ! Ce que tu dis ne serait exact qu'en cas de "bordage" par des vecteurs (des segments). En aucun cas par des formes géométriques.
    Je te laisse à tes réflexions (commence-les donc . Elles devraient être à ta portée et à celle d'un auditeur informatique ... ).

    EDIT : enfin quoi : est-il si difficile de comprendre qu'en cas de bordage intérieur (pour me limiter à ce cas), la hauteur de chaque forme présente aux extrémités d'un rectangle occupe déjà une partie de la hauteur du rectangle dans lequel on l'insère ?
    (et je me suis limité au cas de bordage intérieur. D'autres aspects interviennent en cas de bordage extérieur, selon ce que l'on entend exactement par bordage).
    Pour résumer : on ne saurait traiter ce cas comme celui (analogie) d'un monnayeur.
    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
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Ah d accord, j ai pigé ce que tu veux dire.
    Alors en effet ce serait bordé a l intérieur.

    J' avais omis de précisé qu il y a des angles fixe a chaque coins qui sont déja présent et qui eux sont a l intérieur, donc pour moi c’était logique mais pas pour vous.
    Je peux faire un schéma si c est pas clair.

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    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
    Je peux faire un shéma si c est pas clair.
    Ne le fais pas. Ce serait inutile ici. Sois par contre très précis sur le forum d'algorithmes sur lequel tu choisirais de solliciter une aide algorithmique.
    Voilà tout.
    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.

  10. #10
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Si j avais été plus précis, c est que je maitrisais le sujet...
    Je ne serais donc pas venu demander d' aide sur un forum...
    Par contre , ce que je vois , c est que toi en 3 messages, tu m as pas fait avancé d un copec!
    Par contre tes collègues,avec beaucoup plus de tact, m' ont lancer des pistes qui m ont fait avancer dans mes recherches

    Donc si tu ne peux pas m' aider, t inquiètes pas, c' est pas une lacune, c est juste que c est peut être pas ton domaine, tout comme moi.
    On peut être "membre expert" et ne pas tout connaitre, mais ça ne sert a rien d' envoyer des réponses pour faire du point...

    comme tu dis , je n ai peut pas être pas solliciter le bon forum!!
    J' espère juste que quand tu te pointeras sur un forum ou c est pas ton domaine mais que tu as envie d'évoluer ou d en savoir plus, tu ne seras pas reçu comme ça!!

    Par ailleurs et pour conserver une certaine sérénité dans mon post, je te remercie quand même d' y avoir répondu!
    Guill

    EDIT: "Membre chevronné"

  11. #11
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 197
    Points
    17 197
    Par défaut
    Salut

    On va essayer de faire avancer le chmilblic
    Au final j'ai compris que, une forme quelconque doit être bordée par un "ruban", ce ruban est disponible en 4 longueurs de 3 , 2 , 1 , 0.5 m, et que ce "ruban" peut être plié aux angles de la forme quelconque.
    Donc on parle bien de calcul en rapport du périmètre de là dite forme quelconque.

    Un code un peu statique (nombre de longueur de ruban fixe), mais c'est déjà une base.
    sur un Form, un CommandButton et ce
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Option Explicit
    Dim CoteA As Single, CoteB As Single, PerimetrE As Single
    Dim ElementS(3) As Single
     
     
    Private Sub Form_Load()
    ElementS(0) = 3: ElementS(1) = 2: ElementS(2) = 1: ElementS(3) = 0.5
    CoteA = 8: CoteB = 6  'essai avec 6.125
    PerimetrE = (CoteA + CoteB) * 2
    End Sub
    Private Sub Command1_Click()
    Dim Nbr As Integer
    Dim NbrElem0 As Integer, NbrElem1 As Integer, NbrElem2 As Integer, NbrElem3 As Integer
    Dim LongueurT As Single
    Dim SauterSuite As Boolean
     
    LongueurT = PerimetrE
    While LongueurT >= ElementS(3)
        If LongueurT - ElementS(0) >= 0 Then
            NbrElem0 = NbrElem0 + 1: LongueurT = LongueurT - ElementS(0): SauterSuite = True
        End If
        If SauterSuite = False Then
            If LongueurT - ElementS(1) >= 0 Then
                NbrElem1 = NbrElem1 + 1: LongueurT = LongueurT - ElementS(1): SauterSuite = True
            End If
        End If
        If SauterSuite = False Then
            If LongueurT - ElementS(2) >= 0 Then
                NbrElem2 = NbrElem2 + 1: LongueurT = LongueurT - ElementS(2): SauterSuite = True
            End If
        End If
        If SauterSuite = False Then
            If LongueurT - ElementS(3) >= 0 Then
                NbrElem3 = NbrElem3 + 1: LongueurT = LongueurT - ElementS(3)
                Else
                Beep
            End If
        End If
        SauterSuite = False
        DoEvents
    Wend
     
    Dim MsG As String
     
    MsG = "pour un périmètre de " & PerimetrE & " il faut" & vbCrLf
    If NbrElem0 <> 0 Then MsG = MsG & NbrElem0 & " élément(s) de " & ElementS(0) & vbCrLf
    If NbrElem1 <> 0 Then MsG = MsG & NbrElem1 & " élément(s) de " & ElementS(1) & vbCrLf
    If NbrElem2 <> 0 Then MsG = MsG & NbrElem2 & " élément(s) de " & ElementS(2) & vbCrLf
    If NbrElem3 <> 0 Then MsG = MsG & NbrElem3 & " élément(s) de " & ElementS(3) & vbCrLf
    If LongueurT <> 0 Then
        MsG = MsG & "plus 1 élément de " & ElementS(3) & "pour les " & LongueurT & " restant"
    End If
     
     
    MsgBox MsG, vbInformation, "Une solution ?"
     
    End Sub
    Si le "ruban" ne peut être plié, il faudra faire les calculs pour chaque cotés.
    Reste aussi à savoir si la/les chute(s) (plus petite que 0.5 dans la démonstration)peuvent être utilisée.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  12. #12
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Hey ProgElect

    Merci!!!C est vraiment dans l' idée de ce que je cherchais à faire!
    Bravo
    C est en fait destiné a des montages technique de petite scène,et de calculer automatiquement le nombre de ponts pour faire le grill, en sachant qu a chaque coin il y a des angles, je pense pouvoir adapter ton code pour mon utilisation.
    En tous cas ca me fais une bonne base de départ que je n aurai pas su faire tout seul!
    Merci
    Je vous tient au courant!!!

  13. #13
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 197
    Points
    17 197
    Par défaut
    Salut

    Une version qui calcul suivant le périmètre et/ou les cotés.
    Sur 1 Form, 4 Label, 3 TextBox, 4 CommandButton et 1 Listbox
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    Option Explicit
    Dim ElementS() As Single
    Dim NbrElem() As Integer, NumEl As Integer
    Dim LongueurT As Single
    Private Sub Form_Load()
    'placement des différents contrôles et valeur par défaut
    Label1.Move 60, 60, 480, 195: Label1.Caption = "Cotè A"
    Text1.Move 660, 0, 1155, 315: Text1.Text = "8"
    Label2.Move 2160, 60, 480, 195: Label2.Caption = "Cotè B"
    Text2.Move 2760, 0, 1155, 315: Text2.Text = "6"
    Label3.Move 60, 420, 390, 195: Label3.Caption = "Elem."
    Text3.Move 660, 420, 1155, 315: Text3.Text = "0,5"
    Command2.Move 1860, 420, 795, 315: Command2.Caption = "Ajout. -->"
    Command3.Move 1860, 780, 795, 315: Command3.Caption = "supp. <--"
    Command4.Move 120, 1440, 1875, 315: Command4.Caption = "Calcul suivant périmètre"
    Command5.Move 2040, 1440, 1935, 315: Command5.Caption = "Calcul suivant les cotés"
    List1.Move 2700, 420, 1215, 840
    List1.Clear: List1.AddItem "3": List1.AddItem "2": List1.AddItem "1": List1.AddItem "0,5"
    Label4.Move 120, 1980, 3855, 2115: Label4.Caption = "": Label4.BackColor = &HFFFFFF
    Me.Height = 4770: Me.Width = 4320
    End Sub
    Private Function VerifNumerci(AsciiCode As Integer) As Integer
    VerifNumerci = AsciiCode
    Select Case AsciiCode
        Case 8, 44 'autorisation de la touche suppr et la virgule
        Case 46: VerifNumerci = 44 'pour VB6 il lui faut une ,(virgule) pour les calcul décimaux
        Case 48 To 57 'autorisation de toutes les touches numériques (0 à 9)
        'sinon annule la dernière touche
        Case Else: VerifNumerci = 0
    End Select
    End Function
    Private Sub Text1_KeyPress(KeyAscii As Integer)
    KeyAscii = VerifNumerci(KeyAscii)
    End Sub
    Private Sub Text2_KeyPress(KeyAscii As Integer)
    KeyAscii = VerifNumerci(KeyAscii)
    End Sub
    Private Sub Text3_KeyPress(KeyAscii As Integer)
    KeyAscii = VerifNumerci(KeyAscii)
    End Sub
     
    Private Sub Command2_Click()
    List1.AddItem CSng(Text3.Text)
    End Sub
    Private Sub Command3_Click()
    If List1.ListCount >= 1 Then List1.RemoveItem (List1.ListCount - 1)
    End Sub
     
    Private Sub Command4_Click()
    Dim MsG As String, T As Integer
    Dim CoteA As Single, CoteB As Single, PerimetrE As Single
     
    ReDim ElementS(List1.ListCount - 1)
    For T = 0 To List1.ListCount - 1
        ElementS(T) = List1.List(T)
    Next T
    ReDim NbrElem(UBound(ElementS))
    CoteA = CSng(Text1.Text): CoteB = CSng(Text2.Text)
    Label4.Caption = ""
     
    '--------------------- Calcul suivant périmètre --------------------------------------------
    PerimetrE = (CoteA + CoteB) * 2
    LongueurT = PerimetrE: NumEl = 0
    While LongueurT >= ElementS(UBound(ElementS))
        While NumEl <= UBound(ElementS)
            Analyse NumEl
        Wend
        DoEvents
    Wend
    '-------------------- fin Calcul suivant périmètre ------------------------------------------
    '************************* pour la demo, création d'un message ******************************
    MsG = "pour un périmètre de " & PerimetrE & " il faut" & vbCrLf
    For T = 0 To UBound(ElementS)
        If NbrElem(T) <> 0 Then MsG = MsG & NbrElem(T) & " élément(s) de " & ElementS(T) & vbCrLf
    Next T
    If LongueurT <> 0 Then
        MsG = MsG & "plus 1 élément de " & ElementS(UBound(ElementS)) & "pour les " & LongueurT & " restant"
    End If
    '********************************************************************************************
    'affichage des informations calculées
    Label4.Caption = MsG
    End Sub
    Private Sub Analyse(NumElem)
    If LongueurT - ElementS(NumElem) >= 0 Then
        NbrElem(NumElem) = NbrElem(NumElem) + 1
        LongueurT = LongueurT - ElementS(NumElem)
        Else
        NumEl = NumElem + 1
    End If
    End Sub
    '------------------ Calcul suivant les cotés A et B -----------------------------------------
    Private Sub Command5_Click()
    Dim MsG As String, T As Integer
    Dim CoteA As Single, CoteB As Single, PerimetrE As Single
     
    ReDim ElementS(List1.ListCount - 1)
    For T = 0 To List1.ListCount - 1
        ElementS(T) = List1.List(T)
    Next T
    ReDim NbrElem(UBound(ElementS))
    CoteA = CSng(Text1.Text): CoteB = CSng(Text2.Text)
    Label4.Caption = ""
    '------------------ Calcul suivant le coté A ------------------------------------------------
    LongueurT = CoteA: NumEl = 0
    'bouclage pour coté A
    While LongueurT >= ElementS(UBound(ElementS))
        While NumEl <= UBound(ElementS)
            Analyse NumEl
        Wend
        DoEvents
    Wend
    '------------------ fin Calcul suivant le cotés A -------------------------------------------
     
    '************************* pour la demo, création d'un message ******************************
    MsG = "pour 1 coté A " & CoteA & " il faut" & vbCrLf
    For T = 0 To UBound(ElementS)
        If NbrElem(T) <> 0 Then MsG = MsG & NbrElem(T) & " élément(s) de " & ElementS(T) & vbCrLf
    Next T
    If LongueurT <> 0 Then
        MsG = MsG & "plus 1 élément de " & ElementS(UBound(ElementS)) & "pour les " & LongueurT & " restant"
    End If
    MsG = MsG & vbCrLf & "pour 1 coté B " & CoteB & " il faut" & vbCrLf
    '********************************************************************************************
    '------------------ Calcul suivant le coté B ------------------------------------------------
    ReDim NbrElem(UBound(ElementS)) 'pour remetre à zero
    LongueurT = CoteB: NumEl = 0
    'bouclage pour coté B
    While LongueurT >= ElementS(UBound(ElementS))
        While NumEl <= UBound(ElementS)
            Analyse NumEl
        Wend
        DoEvents
    Wend
    '------------------ fin Calcul suivant le coté B --------------------------------------------
    '************************* pour la demo, création d'un message ******************************
    For T = 0 To UBound(ElementS)
        If NbrElem(T) <> 0 Then MsG = MsG & NbrElem(T) & " élément(s) de " & ElementS(T) & vbCrLf
    Next T
    If LongueurT <> 0 Then
        MsG = MsG & "plus 1 élément de " & ElementS(UBound(ElementS)) & "pour les " & LongueurT & " restant"
    End If
    '********************************************************************************************
    Label4.Caption = MsG
    End Sub
    Attention, les différents "Elements" doivent être entrées dans l'ordre croisant.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  14. #14
    Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    C juste pil poil! Super propre en + ta façon de coder
    Un grand merci!!!

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

Discussions similaires

  1. [XL-2010] Automatiser calcul pour toute cellule non vide- calcul avec des valeurs sur feuilles différentes
    Par Superdébutante dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2016, 14h53
  2. [Débutant] plot courbes avec différentes valeure sur même graphe
    Par aymenvictoire dans le forum MATLAB
    Réponses: 4
    Dernier message: 13/05/2013, 05h42
  3. Réponses: 3
    Dernier message: 05/08/2009, 00h34
  4. Réponses: 3
    Dernier message: 13/12/2006, 18h05
  5. Faire du calcul avec la valeur d'un élément/attribut
    Par camboui dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 03/11/2005, 16h10

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