Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1390 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Je n'arrive pas à le faire avec Excel seul.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Je n'arrive pas à le faire avec Excel seul.

n°1961278
onsaker
Posté le 28-01-2010 à 16:06:24  profilanswer
 

Bonjour,
 
Je coince sur excel pour résoudre mon problème.
Je pense que VBA devrait pouvoir y arriver mais je ne connais pas ce langage de programmation.
 
Et je n'ai malheureusement pas le temps d'apprendre un nouveau langage pour trouver ma réponse.
 
J'aurais donc besoin d'une personne qui aime résoudre (pour son plaisir) les problèmes mathématiques.
Donc si l'un de vous a un peu de temps et les connaissances pour m'aider je lui serais reconnaissant.
Et si à mon tour je peux aider dans un autre domaine ça sera avec grand plaisir.
 
Voici l'énoncé du problème.
 
Je joue à un jeu qui s’appel Ogame, c’est un jeu de guerre inter-galactique en ligne gratuit.
J’ai pu découvrir une partie de la flotte de mon adversaire mais il me reste une petite partie que je ne connais pas mais que je devrais pouvoir trouver par déduction.
 
Valeur de sa flotte complète = 128 627 pts
Nombre de vaisseaux constituant sa flotte complète = 32 536 unités
 
J’ai pu découvrir 31 304 de ses vaisseaux d’une valeur totale de 123 214 pts.
Il me reste donc 1 232 vaisseaux d’une valeur totale de 5 413 pts à trouver.
 
Il y a 13 types de vaisseaux différents possible dont les valeurs sont les suivantes :
Petit transporteur = 4 pts
Grand transporteur = 12 pts
Chasseur léger = 4 pts
Chasseur lourd =10 pts
Croiseur = 29 pts
Vaisseau de bataille = 60 pts
Vaisseau de colonisation = 40 pts
Recycleur = 18 pts
Sonde espionnage = 1 pt
Bombardier = 90 pts
Destructeur = 125 pts
Étoile de la mort = 10 000 pts
Traqueur = 85 pts
 
Est il possible avec VBA de trouver la compostion exacte de la flotte manquante ?

 
J'ai essayé avec les mathématiques mais je me retrouve avec 2 équations à 13 inconnues et je n'arrive pas a trouver les 11 autres équations.
On sait aussi qu'il ne peut pas y avoir d'étoile de la mort car elle coute trop cher ce qui fait une inconnue de moins ^^.
 
Si trouver la composition exacte s'avère trop compliqué voir impossible.
Peut on trouver une composition qui corresponde à la plus méchante c'est à dire avec les plus gros vaisseaux possible (traqueur, destructeur, vaisseau de bataille) ?


Message édité par onsaker le 28-01-2010 à 16:18:29
mood
Publicité
Posté le 28-01-2010 à 16:06:24  profilanswer
 

n°1961388
Anthonyo00​7
Posté le 28-01-2010 à 20:54:51  profilanswer
 

lol, ogame
le jeu qui a foutu ma vie sociale en l'aire pdt 1 an
tu es dans quel univers???
j'étais dans l'uni9, 20 et 22
j'étais top 100 flotte dans l'uni 9! :-)
sinon, pour ta question, à mon avis, difficile
avis aux matheux


---------------
http://forum.hardware.fr/hfr/Achat [...] 3675_1.htm
n°1961396
onsaker
Posté le 28-01-2010 à 21:46:40  profilanswer
 

Je joue sur le 42 depuis 1 an et demi maintenant.
Il suffit d'être organiser et de ne pas raider comme un fou et c'est gérable au quotidien.
 
merci de m'avoir lu en tout cas, suivant ;)

n°1962144
otobox
Maison fondée en 2005
Posté le 02-02-2010 à 00:24:50  profilanswer
 

Il faut procéder par itérations, avec la force brute... Tester toutes les solutions une par une, en arrêtant les boucles quand le nombre de points ou de vaisseaux sont dépassés.
J'ai fait quelque chose, c'est en train de calculer...


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°1962168
otobox
Maison fondée en 2005
Posté le 02-02-2010 à 07:54:04  profilanswer
 

Reporting de ce matin :
Ca a tourné toute la nuit et c'est loin d'être terminé.
J'ai pour l'instant pas loin de 6000 solutions :D
 
http://img52.imageshack.us/img52/4230/ogamej.jpg
 
Comme on peut le voir sur cette capture d'écran, il y a encore 5 types de vaisseaux qui n'ont pas encore commencés à être calculé...


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°1962208
onsaker
Posté le 02-02-2010 à 10:52:55  profilanswer
 

ok merci OtObOx je pensais pas qu'il y avait autant de solution.
 
Maintenant on peut limiter le champ de recherche en supprimant les sondes du calcul car elles ne font pas de mal lors d'un combat.
Pourras tu me dire comment tu as procédé ?
 
Un grand merci en tout cas pour le temps passé sur mon problème, je ne pensais pas qu'il y aurait une réponse aussi vite.


Message édité par onsaker le 02-02-2010 à 10:53:17
n°1962252
otobox
Maison fondée en 2005
Posté le 02-02-2010 à 13:10:14  profilanswer
 

Ca a tourné encore toute la matinée, j'en suis à 10231 solutions ! Et j'en suis encore à compter les solutions avec le nombre de vaisseaux de colonisations, qui est passé de 7 vaisseaux à 13 !
Je laisse tourner pour le fun, mais avant qu'il n'explore toutes les possibilités, il y en a encore pour des jours je pense !

 

Il y a 1232^12 possibilités. En enlevant celles qui dépassent les limites, je dirais que ça diminue de moitié le nombre de possibilité.
Si on enlève un vaisseau, les sondes par exemple, ça laisse encore 1232^11 solutions... même divisé par deux, ça fait beaucoup !

 

Enlever les sondes, c'est bien joli, mais ça fera combien de vaisseaux et de points au total ? Ce sont des données d'entrée capitales pour le calcul !

 

Je posterai mon code et le classeur ce soir. Il y a peut être moyen de l'optimiser pour rendre la procédure plus rapide.


Message édité par otobox le 02-02-2010 à 13:10:31

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°1962418
onsaker
Posté le 02-02-2010 à 18:52:51  profilanswer
 

Si il y a autant de possibilité il va falloir trouver le composition la plus méchante possible en privilégiant les vaisseaux les plus fort en premier et ensuite décroitre. La il ne devrait y en avoir qu'une ^^

n°1962426
otobox
Maison fondée en 2005
Posté le 02-02-2010 à 19:32:58  profilanswer
 

Presque 19h00 que ça tourne, j'en suis à 15169 réponses ! Et seulement 22 vco calculés pour une limite théorique de 135 itérations. A ce rythme là, il y en a pour des mois pour tout calculer !
J'abandonne ! Peut être faudrait-il refaire la programmation avec un langage plus rapide, ou revoir le code pour l'optimiser en rendement.
 
Voici mon code :

Option Explicit
 
Dim NbPtPTr As Integer 'Petit Transporteur
Dim NbPtGTr As Integer 'Grand Transporteur
Dim NbPtCLg As Integer 'Chasseur Léger
Dim NbPtCLd As Integer 'Chasseur Lourd
Dim NbPtCro As Integer 'Croiseur
Dim NbPtVBa As Integer 'Vaisseau de Bataille
Dim NbPtVCo As Integer 'Vaisseau de Colonisation
Dim NbPtRec As Integer 'Recycleur
Dim NbPtSEs As Integer 'Sonde d'Espionnage
Dim NbPtBom As Integer 'Bombardier
Dim NbPtDes As Integer 'Destructeur
Dim NbPtTra As Integer 'Traqueur
Dim NbTotalVaisseaux As Integer
Dim NbTotalPoints As Integer
Dim NbVaisseaux As Integer
Dim NbPoints As Integer
Dim LigneCourante As Long
 
'Initialise les variables publiques à partir des valeurs
'entrées dans la feuille "Données" du classeur Excel :
Private Sub initialisation()
    With Worksheets("Données" )
        NbTotalVaisseaux = .Cells(1, 2)
        NbTotalPoints = .Cells(2, 2)
        NbPtPTr = .Cells(5, 2)
        NbPtGTr = .Cells(5, 3)
        NbPtCLg = .Cells(5, 4)
        NbPtCLd = .Cells(5, 5)
        NbPtCro = .Cells(5, 6)
        NbPtVBa = .Cells(5, 7)
        NbPtVCo = .Cells(5, 8)
        NbPtRec = .Cells(5, 9)
        NbPtSEs = .Cells(5, 10)
        NbPtBom = .Cells(5, 11)
        NbPtDes = .Cells(5, 12)
        NbPtTra = .Cells(5, 13)
    End With
    LigneCourante = 2 '1ère ligne de la feuille résultat
    'Effacement des données précédentes
    Worksheets("Résultats" ).Range("A2", "N65536" ).Select
    Selection.Delete
    Worksheets("Résultats" ).Range("A2" ).Select
End Sub
 
Sub IterationVaisseaux()
Dim PTr As Integer 'Petit Transporteur
Dim GTr As Integer 'Grand Transporteur
Dim CLg As Integer 'Chasseur Léger
Dim CLd As Integer 'Chasseur Lourd
Dim Cro As Integer 'Croiseur
Dim VBa As Integer 'Vaisseau de Bataille
Dim VCo As Integer 'Vaisseau de Colonisation
Dim Rec As Integer 'Recycleur
Dim SEs As Integer 'Sonde d'Espionnage
Dim Bom As Integer 'Bombardier
Dim Des As Integer 'Destructeur
Dim Tra As Integer 'Traqueur
 
Dim ToutEcrire As Boolean
 
initialisation 'des données d'entrée
 
If Worksheets("Données" ).Cells(1, 6) = "Tout" Then ToutEcrire = True
 
For PTr = 0 To NbTotalVaisseaux
    For GTr = 0 To NbTotalVaisseaux
        For CLg = 0 To NbTotalVaisseaux
            For CLd = 0 To NbTotalVaisseaux
                For Cro = 0 To NbTotalVaisseaux
                    For VBa = 0 To NbTotalVaisseaux
                        For VCo = 0 To NbTotalVaisseaux
                            For Rec = 0 To NbTotalVaisseaux
                                For SEs = 0 To NbTotalVaisseaux
                                    For Bom = 0 To NbTotalVaisseaux
                                        For Des = 0 To NbTotalVaisseaux
                                            For Tra = 0 To NbTotalVaisseaux
                                                If LimitesDepassees(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra) Then
                                                    Exit For
                                                ElseIf ToutEcrire Or (NbVaisseaux = NbTotalVaisseaux And NbPoints = NbTotalPoints) Then
                                                    Call EcrireResultats(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra)
                                                End If
                                            Next Tra
                                            Tra = 0
                                            If LimitesDepassees(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra) Then Exit For
                                        Next Des
                                        Des = 0
                                        If LimitesDepassees(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra) Then Exit For
                                    Next Bom
                                    Bom = 0
                                    If LimitesDepassees(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra) Then Exit For
                                Next SEs
                                SEs = 0
                                If LimitesDepassees(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra) Then Exit For
                            Next Rec
                            Rec = 0
                            If LimitesDepassees(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra) Then Exit For
                        Next VCo
                        VCo = 0
                        If LimitesDepassees(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra) Then Exit For
                    Next VBa
                    VBa = 0
                    If LimitesDepassees(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra) Then Exit For
                Next Cro
                Cro = 0
                If LimitesDepassees(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra) Then Exit For
            Next CLd
            CLd = 0
            If LimitesDepassees(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra) Then Exit For
        Next CLg
        CLg = 0
        If LimitesDepassees(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra) Then Exit For
    Next GTr
    GTr = 0
    If LimitesDepassees(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra) Then Exit For
Next PTr
End Sub
 
Private Function CalculNbVaisseaux(PTr As Integer, GTr As Integer, CLg As Integer, CLd As Integer, Cro As Integer, _
VBa As Integer, VCo As Integer, Rec As Integer, SEs As Integer, Bom As Integer, Des As Integer, Tra As Integer)
    CalculNbVaisseaux = PTr + GTr + CLg + CLd + Cro + VBa + VCo + Rec + SEs + Bom + Des + Tra
End Function
 
Private Function CalculNbPoints(PTr As Integer, GTr As Integer, CLg As Integer, CLd As Integer, Cro As Integer, _
VBa As Integer, VCo As Integer, Rec As Integer, SEs As Integer, Bom As Integer, Des As Integer, Tra As Integer)
    CalculNbPoints = PTr * NbPtPTr + GTr * NbPtGTr + CLg * NbPtCLg + CLd * NbPtCLd + Cro * NbPtCro + VBa * NbPtVBa
    CalculNbPoints = CalculNbPoints + VCo * NbPtVCo + Rec * NbPtRec + SEs * NbPtSEs + Bom * NbPtBom + Des * NbPtDes + Tra * NbPtTra
End Function
 
'Cette fonction indique si le nombre de vaisseaux calculé ou le nombre de points calculé
'est dépassé. Revoie TRUE si une de ces deux limites est dépassée
Private Function LimitesDepassees(PTr As Integer, GTr As Integer, CLg As Integer, CLd As Integer, Cro As Integer, _
VBa As Integer, VCo As Integer, Rec As Integer, SEs As Integer, Bom As Integer, Des As Integer, Tra As Integer) As Boolean
    NbVaisseaux = CalculNbVaisseaux(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra)
    NbPoints = CalculNbPoints(PTr, GTr, CLg, CLd, Cro, VBa, VCo, Rec, SEs, Bom, Des, Tra)
    If NbVaisseaux > NbTotalVaisseaux Or NbPoints > NbTotalPoints Then LimitesDepassees = True
End Function
 
Private Sub EcrireResultats(PTr As Integer, GTr As Integer, CLg As Integer, CLd As Integer, Cro As Integer, _
VBa As Integer, VCo As Integer, Rec As Integer, SEs As Integer, Bom As Integer, Des As Integer, Tra As Integer)
With Worksheets("Résultats" )
        .Cells(LigneCourante, 1) = PTr
        .Cells(LigneCourante, 2) = GTr
        .Cells(LigneCourante, 3) = CLg
        .Cells(LigneCourante, 4) = CLd
        .Cells(LigneCourante, 5) = Cro
        .Cells(LigneCourante, 6) = VBa
        .Cells(LigneCourante, 7) = VCo
        .Cells(LigneCourante, 8) = Rec
        .Cells(LigneCourante, 9) = SEs
        .Cells(LigneCourante, 10) = Bom
        .Cells(LigneCourante, 11) = Des
        .Cells(LigneCourante, 12) = Tra
        .Cells(LigneCourante, 13) = NbVaisseaux
        .Cells(LigneCourante, 14) = NbPoints
    End With
    LigneCourante = LigneCourante + 1
End Sub


 
Le classeur est téléchargeable ici
http://www.partage-facile.com/VJH7 [...] e.zip.html


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°1962464
onsaker
Posté le 02-02-2010 à 22:32:37  profilanswer
 

merci bien je vais essayer de comprendre ce que tu as fait avec mes souvenirs de "BASIC" de mon adolescence.


Message édité par onsaker le 02-02-2010 à 22:33:23
mood
Publicité
Posté le 02-02-2010 à 22:32:37  profilanswer
 

n°1962683
onsaker
Posté le 03-02-2010 à 16:34:59  profilanswer
 

Au fait OtObOx peux tu me conseiller un livre sur le Visual Basic qui fasse la part belle aux exemples du genre "VBA par la pratique".
 
En gros un livre qui soit bien construit et digeste, pas un livre qui liste les fonctions les une après les autres.
 
J'aime bien apprendre à partir d'exemples de petits programmes simples et explicités.
 
Merci

Message cité 1 fois
Message édité par onsaker le 03-02-2010 à 16:53:58
n°1962689
Laoo
Posté le 03-02-2010 à 16:57:31  profilanswer
 

Beau travail, général OttObOx ! Impressionnant!
 
Moi, j'ai pas trouvé 15 691 solutions, mais j'en ai toujours trouvé une, qui a du moins l'avantage d'utiliser tous les types de vaisseaux:
 
Nbre  Points         Pts par Cat   NOMS
 
945 * 1 = 945 Sonde espionnage
100 * 4 = 400 Petit transporteur
77 * 4 = 308 Chasseur léger
20 * 10 = 200 Chasseur lourd
10 * 10 = 100 Étoile de la mort
10 * 12 = 120 Grand transporteur
10 * 12 = 120 Destructeur
10 * 18 = 180 Recycleur
10 * 29 = 290 Croiseur
10 * 40 = 400 Vaisseau de colonisation
10 * 60 = 600 Vaisseau de bataille
10 * 85 = 850 Traqueur
10 * 90 = 900 Bombardier
 
Soit  1232   vaisseaux   pour  5413  points       CQFD
 
A+
 

n°1962714
otobox
Maison fondée en 2005
Posté le 03-02-2010 à 18:00:48  profilanswer
 

onsaker a écrit :

Au fait OtObOx peux tu me conseiller un livre sur le Visual Basic qui fasse la part belle aux exemples du genre "VBA par la pratique".
 
En gros un livre qui soit bien construit et digeste, pas un livre qui liste les fonctions les une après les autres.
 
J'aime bien apprendre à partir d'exemples de petits programmes simples et explicités.
 
Merci


VBA pour les nuls ? C'est ce bouquin qui m'a mis le pied à l'étrier.
A savoir cependant que le VBA est en perte de vitesse, le nouveau truc c'est le VB.net pour application. Donc, quitte à apprendre un nouveau langage, autant que ça soit celui là. La principale différence, c'est que cette nouvelle mouture de Microsoft est vraiment de la programmation objet, contrairement à l'ancienne version qui est simplement orientée objet.
 
OtObOx, avec un t :) (2t déséquilibrent la répartition des O :D)


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°1962725
onsaker
Posté le 03-02-2010 à 18:55:18  profilanswer
 

Laoo a écrit :

Beau travail, général OttObOx ! Impressionnant!

 

Moi, j'ai pas trouvé 15 691 solutions, mais j'en ai toujours trouvé une, qui a du moins l'avantage d'utiliser tous les types de vaisseaux:

 

Nbre  Points         Pts par Cat   NOMS

 

945 * 1 = 945 Sonde espionnage
100 * 4 = 400 Petit transporteur
77 * 4 = 308 Chasseur léger
20 * 10 = 200 Chasseur lourd
10 * 10 = 100 Étoile de la mort
10 * 12 = 120 Grand transporteur
10 * 12 = 120 Destructeur
10 * 18 = 180 Recycleur
10 * 29 = 290 Croiseur
10 * 40 = 400 Vaisseau de colonisation
10 * 60 = 600 Vaisseau de bataille
10 * 85 = 850 Traqueur
10 * 90 = 900 Bombardier

 

Soit  1232   vaisseaux   pour  5413  points       CQFD

 

A+

 


 

tu t'es un peu trompé sur le cout des vaisseaux ^^

 

Il y a 13 types de vaisseaux différents possible dont les valeurs sont les suivantes :

 

Destructeur = 125 pts
Étoile de la mort = 10 000 pts

 

Sinon j'avais besoin de quelque chose d'automatique car j'ai souvent besoin d'estimer des flottes.


Message édité par onsaker le 03-02-2010 à 19:15:26
n°1962726
onsaker
Posté le 03-02-2010 à 18:58:48  profilanswer
 

otobox a écrit :


VBA pour les nuls ? C'est ce bouquin qui m'a mis le pied à l'étrier.
A savoir cependant que le VBA est en perte de vitesse, le nouveau truc c'est le VB.net pour application. Donc, quitte à apprendre un nouveau langage, autant que ça soit celui là. La principale différence, c'est que cette nouvelle mouture de Microsoft est vraiment de la programmation objet, contrairement à l'ancienne version qui est simplement orientée objet.
 
OtObOx, avec un t :) (2t déséquilibrent la répartition des O :D)


 
Ok pour VB.net mais est il gratuit et fonctionne t il avec excel ?
 
En fait il faudrait que je puisse dialoguer au final avec Excel et Autocad par exemple.
 
L'avantage que je trouve à VBA c'est qu'il est intégré à microsoft Office.
 
Tu vois ce que je veux dire ?

n°1962729
otobox
Maison fondée en 2005
Posté le 03-02-2010 à 19:20:17  profilanswer
 

Excel et AutoCAD ? Rajoute Access et t'es dans mon domaine ! :)
(En fait, c'est présomptueux de dire ça, je suis loin de maitriser tout ça, mais je me débrouille ;) )
ACAD, je crois que c'est à partir de la version 2009, n'utilise plus VBA, mais VB.net. (personnellement, je suis utilisateur d'ACAD V.2005, donc toujours avec le VBA).
Idem pour Office 2009 ou 2010.
 
VB.net est gratuitement téléchargeable sur le site Microsoft. A partir de cela, tu peux piloter n'importe quelle application supportant le vb.net. Peut être même les autres, mais je n'en suis pas sur.
VB.net te fera des application complètement indépendante, contrairement à VB.net pour applications, qui a besoin du logiciel natif pour fonctionner. C'est livré avec le logiciel, comme le VBA.
 
J'ai fait quelques truc en VB.net, c'est un peu différent, mais guère... Il faut arrêter de réfléchir comme le VB V.6 et raisonner en objet, c'est la grande révolution.
Par exemple, en VB (ou VBA), une variable est une variable. En VB.net, une variable est un objet, donc traitable comme un objet.
 
Evidemment, si tes applis ne supporte pas le VB.net, tu ne pourras pas l'utiliser au sein de celles ci. En gros, je pense que tu as le cul entre deux chaises. Il vaudrait mieux que tu attendes d'avoir des applis supportant le .net


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°1962730
onsaker
Posté le 03-02-2010 à 19:26:15  profilanswer
 

d'après ce que tu as déjà pu voir, VB.net est plus dur a programmer que VBA ?
 
Pour info je ne suis pas un informaticien/programmeur mais un utilisateur éclairé.

n°1962750
otobox
Maison fondée en 2005
Posté le 03-02-2010 à 20:34:27  profilanswer
 

Non, ce n'est pas plus dur. Il y a simplement des automatismes a réapprendre quand on change. C'est un peu comme quand j'ai changé de système de DAO. On recherche des fonctions qui n'existent pas dans le nouveau logiciel, mais au bout d'un certain temps, on retrouve des repères et ça roule...
C'est pourquoi je te disais que tu avais le cul entre deux chaises. Si tu apprends avec le VBA, tu vas vouloir refaire la même chose avec le vb.net, parce qu'il y a beaucoup de similitudes. Alors, si tu ne connais ni l'un ni l'autre, autant commencer avec un système qui a un avenir et laisser tomber l'autre qui va devenir obsolète. Malheureusement, pour l'instant, tu n'as accès qu'à VBA. Alors autant attendre.


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°1962755
onsaker
Posté le 03-02-2010 à 20:49:10  profilanswer
 

ok je pense que je vais attendre ça me parait plus raisonnable.

 

Moi mes habitudes date de l'époque (1981 de mémoire) ou je programmais (en Basic) beaucoup avec mon ZX spectum car il n'y avait pas beaucoup de logiciel à cette époque.

 

Il est vrai qu'aujourd'hui il existe un logiciel dans tous les domaines.
Mais il est vrai que ça me manque un peu de pouvoir programmer un petit truc pour me simplifier la vie quand il n'existe rien sur le marché.


Message édité par onsaker le 03-02-2010 à 20:49:22
n°1962764
otobox
Maison fondée en 2005
Posté le 03-02-2010 à 21:24:49  profilanswer
 

Mes premières lignes de programmation ont été faites avec un ZX81, mais le visual basic est quand même bien différent ! Ca n'a plus grand chose à voir, même si on retrouve des fonctions comme le for...next ou goto.
Tu peux toujours te faire la main sur des fonctions simple sous Excel. C'est assez pratique et facile, en utilisant l'enregistreur de macros.


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°1962832
onsaker
Posté le 04-02-2010 à 09:56:56  profilanswer
 

Vu le nombre de solution je vais affiner le calcul pour faire ressortir la composition de flotte la plus dangeureuse pour moi.
 
J'ai donc fais sauter les vaisseaux qui ne combattent pas en virant les Sondes, les Vaisseaux de Colonisation et les Pts.
 
Bien qu'ils ne combattent pas j'ai laissé les GTs et les Rc car il y en a souvent dans les flottes.
 
Et j'ai lancé le calcul hier en début d'après midi, il est 10H00 aujourd'hui et il ne m'a trouvé aucune solution pour le moment.
 
A suivre ......


Message édité par onsaker le 04-02-2010 à 09:58:37
n°1962939
onsaker
Posté le 04-02-2010 à 14:50:03  profilanswer
 

Bon alors j'ai abandonné car c'est beaucoup trop long et il n'a toujours trouvé aucun solution.
 
J'ai donc repensé l'ordre des boucles et j'ai obtenu ce résultat très rapidement  
 
3 Des, 3 VB, 3 Cro et 1224 Clg
ou
1 Des, 2 Tra, 2 VBa, 4 Cro et 1223 Clg
ou
4 Tra, 1 VBa, 5 Cro et 1222 Clg
 
J'ai mis les Clg juste après les Des et ensuite les autres vaisseaux lourds.
 

Citation :

For Rec = 0 To NbTotalVaisseaux
        For GTr = 0 To NbTotalVaisseaux
            For CLd = 0 To NbTotalVaisseaux
                For Bom = 0 To NbTotalVaisseaux
                    For Cro = 0 To NbTotalVaisseaux
                         For VBa = 0 To NbTotalVaisseaux
                                  For Tra = 0 To NbTotalVaisseaux
                                        For CLg = 0 To NbTotalVaisseaux
                                            For Des = 0 To NbTotalVaisseaux


Message édité par onsaker le 04-02-2010 à 15:01:11
n°1963047
otobox
Maison fondée en 2005
Posté le 04-02-2010 à 18:21:39  profilanswer
 

Oui, j'ai aussi pensé à changer l'ordre des vaisseaux, en les ordonnant du plus fort au plus faible (ou le contraire). Mais il me semble que ça ne changera pas grand chose sur le temps d'exécution total de la procédure.


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°1963056
onsaker
Posté le 04-02-2010 à 19:07:58  profilanswer
 

Sur la totalité ça ne changera rien mais par contre sur le temps de sortie des premiers résultats c'est "le jour et la nuit".

n°1967451
SuppotDeSa​Tante
Aka dje69r
Posté le 19-02-2010 à 09:34:33  profilanswer
 

Bonjour
 
Un petit Application.ScreeUpdating=False en debut, et = True en fin divisera pas 10 le temps de traitement...
 
Cordialement


---------------
Soyez malin, louez entre voisins !
n°1967707
onsaker
Posté le 19-02-2010 à 18:25:08  profilanswer
 

merci beaucoup pour le tuyau je vais tester.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Je n'arrive pas à le faire avec Excel seul.

 

Sujets relatifs
Graphe sur excelAccess vers excel
TUTO/COURS apprendre excel/vbaVSB et excel fichier VALIDE - on peut fermer le post
[VBA] Ajouter une ligne à un fichier Word à partir de cellules ExcelUtiliser des fonctions C# pour Excel
[WORD] créer une macro excel créan un wordexcel : acquiter macro à l'ouverture
[excel] Incrémenter une formule.[Excel]Connaître la dernière ligne d'un tableau
Plus de sujets relatifs à : Je n'arrive pas à le faire avec Excel seul.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR