Programme adaptable

machin

XLDnaute Nouveau
Bonjour,

Je suis obligé de réaliser plusieurs configurations dans un programme. J'aimerai que cette configuration se fasse en automatique et ca je ne sais pas faire. J'ai cherché un peu partout mais je ne sais même pas comment on pourrait libeller cette programmation.
Le petit fichier (simple) exprime ma demande

Merci à tous et à toutes pour vos contributions
 

Pièces jointes

  • Programmation adaptable.xls
    75.5 KB · Affichages: 44

Dranreb

XLDnaute Barbatruc
Re : Programme adaptable

Bonjour.
Pas clair du tout votre histoire.
Je ne crois pas mais j'en ai quand même la vague impression, seriez vous interessé par un dialogue qui vous installerait une résolution de système d'équations, matrices carrée uniquement ? Voire pour plus d'équations que d'inconnues et approche par moindres carrés ?
À +
 

machin

XLDnaute Nouveau
Re : Programme adaptable

Bonjour,

Non je veux juste avoir a disposition un nombre de variables selon les nombres inscrit dans le tableau (b5,b7), afin de réaliser les premières opérations selon les exemples.

j'ai démarré avec la configuration suivante (principe)
'initialisation 1
i=range(B3)' pour définir les éléments
j=range(B2) définir le nombre de variables
remplir un tableau 1 en fonction des variables nécessaires
les opérations sur Y
next j
next i

'initialisation 2
k=range(B2)' pour définir les éléments
l=range(B1) définir le nombre de variables
remplir un tableau 2 en fonction des variables nécessaires
les opérations sur Z
next l
next k

mais je tourne en rond

Merci par avance
 

Dranreb

XLDnaute Barbatruc
Re : Programme adaptable

Alors utilisez des tableaux vb dynamiques et redimensionnez les comme il convient au moment de l'exécution
VB:
Rem. Déclaration
Dim T() As Double

Rem. Redimensionnement dynamique
ReDim T(1 To LMax, 1 To CMax)

Rem. Accès à un élément à un moment donné
MsgBox T(L, C)
À +
 

machin

XLDnaute Nouveau
Re : Programme adaptable

Bonjour,

Si j'ai bien compris, pour un tableau 2 lignes et 3 colonnes j'affecte 0.5 à chaque cellule. Ma méthode n'est pas terrible et non adaptable.
HTML:
Sub Test()
Dim l%, c%, i%, j%
Dim lig%, col%

l = 2
c = 3
'exemple d'affectation =0.5 a toutes les cellules du tableau

Const Coef! = 0.5

  ReDim a(1 To l, 1 To c) ' 2 lignes x 3 colonnes

  a(1, 1) = Coef
  a(1, 2) = Coef
  a(1, 3) = Coef
  a(2, 1) = Coef
  a(2, 2) = Coef
  a(2, 3) = Coef
  
  For lig = LBound(a, 1) To UBound(a, 1)
     For col = LBound(a, 2) To UBound(a, 2)
        Cells(lig, col) = a(lig, col)
     Next col
  Next lig
  
End Sub

De plus maintenant, intervient le calcul de Y qui lui aussi est dépendant des variables
en effet pour le calcul de Y il y a une base commençant toujours par Y=a(1,1)+(X1*a(1,2)) (cas d'une seule ligne) et ajout (Xi*a(1,i+1)) pour chaque lignes supplementaires.

Donc pour 2 lignes, 3 colonnes, nous avons besoin de la configuration suivante

HTML:
for i = 1 to l (le l est celui qui a défini le tableau du départ)

ligne Y(i) =a(i,1)+(X(i)*a(i,2)) + (X(i)*a(i,3))

next i

pour 3 lignes, 3 colonnes

HTML:
for i = 1 to l

ligne Y(i) =a(i,1)+(X(i)*a(i,2)) + (X(i)*a(i,3)) + (X(i)*a(i,4))

next i

j'espere avoir éte plus explicit

Merci
 
Dernière édition:

pascal82

XLDnaute Occasionnel
Re : Programme adaptable

Bonjour,

Je comprends le principe mais je n'arrive pas a le faire tourner
Sans abuser de votre gentillesse, pouvez vous me faire ce type de programme pour 2 lignes et 3 colonnes, avec les variables initialisées à 0.5, X1=0 et X2 = 1

Un grand Merci par avance
 

machin

XLDnaute Nouveau
Re : Programme adaptable

Bonjour Dranreb,

Comme pascal82 je n'arrive pas programmer avec vos éléments, mon niveau est trop faible
Moi aussi j'aurai besoin d'un programme qui tourne pour adapter par la suite

Un grand merci

Oups pas rafraichi, cependant le débogeur demande un tableau sur X
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Programme adaptable

ben oui, évidemment ça implique des tableaux A,Y et X
VB:
Dim LMax As Long, L As Long, CMax As Long, C As Long
Dim A() As Double, X() As Double, Y() As Double

LMax = 2
CMax = 3
Const Coef = 0.5

ReDim A(1 To LMax, 1 To CMax), Y(1 To LMax), X(1 To LMax)
For L = 1 To LMax: For C = 1 To CMax: A(L, C) = Coef: Next C: Next L
Ça implique naturellement aussi un moyen d'initialiser le tableau X puisqu'on l'utilise après.
Remarque si des tableaux sont pris de plages rectangulaires ou doivent y être envoyés, ils doivent être déclarés () As Variant.
D'aucun trouvent que ce n'est pas la peine de le préciser, moi je préfère montrer que ça ne résulte pas d'un oubli et que c'est Excel qui me l'impose.
De plus ils doivent avoir 2 dimensions, la 2ème étant 1 to 1 si c'est une plage dans une seule colonne.
Et Excel renvoit un tableau (1 to 1, 1 to NbrCol) comme propriété Value d'une plage dans une seule ligne. Mais il tolère en sortie un tableau d'une seule dimension.
 
Dernière édition:

machin

XLDnaute Nouveau
Re : Programme adaptable

Dranreb,

La galère continue, le dernier code fournie est parfait, je retrouve mes variables. Par contre, je n'arrive toujours pas a lui faire calculer Y.
Désolé si je suis plutôt lourd, mais je suis dur de la "comprenette". En général les tableaux j'évite mais là je suis bien obligé

Merci

Code:
Sub testDranreb()

Dim LMax As Long, L As Long, CMax As Long, C As Long
Dim A() As Double, X() As Double, Y() As Double
Dim s!, X0%, X1%, z!

LMax = 2
CMax = 3
Const Coef = 0.5

ReDim A(1 To LMax, 1 To CMax)
ReDim Y(1 To LMax)
ReDim X(1 To LMax)

X0 = 0
X1 = 1

For L = 1 To LMax
    For C = 1 To CMax
        A(L, C) = Coef
    Next C
Next L
''''''''''''''''''''''''''''''''''''''''''''''''''''''
'affichage du tableau des variables
  For LMax = LBound(A, 1) To UBound(A, 1)
     For CMax = LBound(A, 2) To UBound(A, 2)
        Cells(LMax, CMax) = A(LMax, CMax)
     Next CMax
  Next LMax
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
'pas de calcul Y
For L = 1 To LMax - 1
    For C = 1 To CMax - 1
        s = s + A(L, C)
        z = X(L) + s
        Y(L) = A(L, 1) + z ' X(L) * s
    Next C
Next L

'affichage  Y
  For LMax = LBound(Y, 1) To UBound(Y, 1)
     For CMax = LBound(Y, 2) To UBound(Y, 2)
        Cells(LMax, CMax + 7) = A(LMax, CMax)
     Next CMax
  Next LMax

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''

End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Programme adaptable

Pourquoi LMax - 1 et CMax - 1 ?
De plus j'avais cru comprendre que le A(L 1) était toujours affecté d'un coef 1 et que la boucle sur C devait donc commencer à 2 ?
Et votre table X n'est toujours pas initialisée ? Ses éléments valent tous 0 alors.
À +
 
Dernière édition:

machin

XLDnaute Nouveau
Re : Programme adaptable

Bonsoir,

Oups, c'est moi qui m'exprime mal
Pourquoi Lmax-1: En mode pas a pas j'ai constaté que Lmax=3 alors qu'initialement =2, et idem pour Cmax -1 parce = 4. Cependant vous me faites de comprendre que c'est une ânerie
Concernant la table X: X1 et X2 sont issues d'une base de données, pour cette exemple j'avais affecté X1=0 et X2=1, par contre je me suis viandé au poste #5
cas de 2 lignes et 3 colonnes
Y(i) =a(i,1)+(X(1)*a(i,2)) + (X(2)*a(i,3))
cas de 3 lignes et 3 colonnes et dans ce cas prendre X3=0
Y(i) =a(i,1)+(X(1)*a(i,2)) + (X(2)*a(i,3)) + (X(3)*a(i,4))

Désolé de vous avoir mal orienté
 

Discussions similaires

Réponses
16
Affichages
724

Statistiques des forums

Discussions
312 799
Messages
2 092 239
Membres
105 298
dernier inscrit
doudounapnap