Type de Variables Complexes

  • Initiateur de la discussion Initiateur de la discussion AntoMeu
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

AntoMeu

XLDnaute Nouveau
Tout d'abord je souhaite dire bonjour à tous les utilisateurs de ce forum, qui m'a deja permis de résoudre de nombreux problèmes sous excel et vba.

Cependant, je n'ai pas trouvé la réponse à une question bien spécifique à propos des nombres complexes. Et je serai vraiment heureux si vous parveniez à y répondre.
J'écris un programme qui a largement recours à des calculs entre nombres complexes. J'ai donc écrit une macro complémentaire qui s'en ocupe.

Il y est défini un type de variable de la manière suivante :

Type RealIm
r as double
i as double
End Type

Cependant mathématiquement c'est très limité, en réalité, on peut aussi bien écrire un complexe sous forme réele/imaginaire que module/phase.
Alors j'ai défini un deuxième type : spécifiquement polaire cette fois-ci

Type Polar
M as double
P as double
End Type

Pour un nombre compexe a, on a donc sa partie réele : a.r, immaginaire : a.i.
Et pour un combre complexe b, son module : b.m, et sa phase : b.p.

Tous les calculs, et les conversions polaire/réel,imaginaire ont étée écrite ensuite.


Cependant cette methode est très criticable, car elle diferencie en deux variables differentes et necessairement dissociées a et b, une meme entité. Un nombre complexe a donc deux definition selon mon programme.


Et j'en viens donc à ma question : est-il possible de créer un type complexe qui contient partie réele, imaginaire, module et phase tout à la fois. C'est à dire que si je lui defini, par exemple une partie réele et un partie imaginaire de la manière suivante :
a.r = 32
a.i = 42
que je puisse obtenir, la ligne suivante, sans intervention de fonction ou de procedure, sans intermediaire, le module et la phase de ce nombre en ecrivant :
Module = a.m
Phase = a.p.
Et vice versa.

En gros est-il possible de définir un type complexe qui integre les formules de passage entre la forme réele/immaginaire à la forme module/phase ?

D'avance merci à tous ceux qui auront la gentillesse de me repondre après avoir lu mon imbuvable pavé jusqu'au bout.
 
Re : Type de Variables Complexes

Bonjour,

J'ai lu ton imbuvable pavé jusqu'au bout😉 mais je n'ai pas compris ce que tu veux faire...
Même s'il est vrai que les complexes sont un peu loin... 😱 je ne pense pas que cela vienne de là.

Cordialement
 
Re : Type de Variables Complexes

Je sais que je suis pas super clair. Je débute en VB (et meme en programation, faut le dire) et je ne connais pas bien toutes les subtilités de langage.

Jusqu'a maintenant, je suis obligé de defnir deux variables independantes :
dim a as RealIm
dim b as Polar
et d'utiliser des fonctions pour passer de l'une à l'autre, alors qu'en réalité c'est le meme nombre complexe

Je voudrais avoir une variable unique de type complexe qui puisse etre definie aussi bien sous forme reele/immaginaire que sous la forme module/phase.

Que par exemple lorsque j'affecte la valeur des parties réele et immaginaire de la variable, lui soit immédiatement calculé et affecté le module et la phase corréspondant.

Que ma variable aie 4 parties :
a.r
a.i
a.m
a.p

Et qu'il suffit de ne definir que .r et .i pour que .m et .p lui soit automatiquement calculé et affecté. Et vice-versa, qu'il suffit de definir .m et .p pour que .r et .i soit automatiquement calculé et affecté à la variable.


D'avance, une deuxième fois merci, et merci a toi Spitnolan08, pour ta promptitude.
 
Re : Type de Variables Complexes

Bonsoir

Une piste : utiliser des variables de type défini par l'utilisateur

extrait de la documentation VBA
type défini par l'utilisateur
Tout type de données défini à l'aide de l'instruction Type. Les types de données définis par l'utilisateur peuvent contenir un ou plusieurs éléments de tout type de données. Les tableaux de type défini par l'utilisateur et d'autres types de données sont créés à l'aide de l'instruction Dim. Des tableaux de tout type peuvent être inclus dans des types définis par l'utilisateur.

A voir


JP
 
Re : Type de Variables Complexes

Re,
Ton complément d'explication me laisse toujours aussi perplexe et pas complexe😀
Un nombre complexe est défini par 2 paramètres : la partie réelle et la partie imaginaire z=a+bi (Jusque là je ne me plante pas ?) ça OK.
Par contre je ne me rappelle pas comment on passe de cette forme à la forme polaire (Ni d'ailleurs le reste...)
Mais dans tous les cas, tu seras nbien obligé d'avoir une formule de calcul qui te transforme ton nombre imaginaire.C'est pourquoi je ne comprends pas :
que je puisse obtenir, la ligne suivante, sans intervention de fonction ou de procedure, sans intermediaire
Par contre si ta problématique consiste à obtenir une équivalence automatique ça devient possible à condition que tu joignes un bout de fichier présentant ce que tu veux et sous quelle forme.

Ce sont des maths que tu fais pas de la prose...😉

Cordialement
 
Re : Type de Variables Complexes

Re,
Excel dispose de formules de calcul sur les nombres complexes et l'on a bien la correspondance entre la formulation imaginaire te la formulation polaire :
Pour z = 1 + 2i :
Code:
Range("A1").Formula = "=COMPLEXE(1,2)"
Range("A2").Formula = "=COMPLEXE.ARGUMENT(A1)"
Range("A3").Formula = "=COMPLEXE.MODULE(A1)"
avec argument = 1.107148718
et module = 2.236067977

Cordialement
 
Re : Type de Variables Complexes

Oui bien sur, Spitnolan08

au niveau des calculs c pas un soucis

le module et la phase se calculent facilement à partir des parties réeles et immaginaires, et vice-versa.
C'est pas ca le soucis.

Ce que je voudrais c'est effectivement une équivalence automatique, qui incluera bien evidement ces formules de passage.

En gros, comme je l'ai dit, que lorsque j'affecte .r et .i a ma variable a 4 parties, que les parties .m et .p soient automatiquement calculés et affecté (via de petits calculs definis auparavents).
Et vice-versa que lorsque j'affecte .m et .p a ma variable, que .r et .i soient automatiquement calculés et affecté.

Encore merci
 
Re : Type de Variables Complexes

Re,
Ce que je voudrais c'est effectivement une équivalence automatique, qui incluera bien evidement ces formules de passage.
Donc pour ça il faut que
tu joignes un bout de fichier présentant ce que tu veux et sous quelle forme.
Pour adapter la réponse à ta situation sans être obligé de tout recréer. Ce qui, quasi à coup sur, ne manquerait pas de ne pas te convenir...

Cordialement
 
Re : Type de Variables Complexes

a non rien a voir, je veux surtout pas qu'on fasse mon boulot, je suis la pour apprendre, et c'est pas en demandant aux autres de faire mon taf que je vais progresser. Tout ce que je voulais c'etait savoir si c'est possible, et eventuelement avoir un exemple proche de ce que je cherche, et pas forcement sur des complexe, je cherche juste un exemple de variable "dynamique" (je sais pas si c'est le mot qui convient), qui réagit dès que je lui affecte une partie.
 
Re : Type de Variables Complexes

bonjour 🙂

j'ai pas tout compris au explication, mais ca, c'est normal, je pige pas toujours tout.

par contre, voici un exemple de code qui alimente une variable typé à l'aide d'une fonction, est-ce ceci que tu veux faire ?

Code:
Type nombre
valeur1 As Integer
valeur2 As Integer
End Type
Code:
Sub Bouton1_QuandClic()
Dim a As nombre

a.valeur1 = 2
a.valeur2 = doubledunombre(a.valeur1)

MsgBox a.valeur2'renvoi 4

End Sub
Code:
Public Function doubledunombre(valeur As Integer) As Integer
doubledunombre = 2 * valeur
End Function
salut
 
Re : Type de Variables Complexes

Merci Hervé, ya un peu de ca, oui.

En effet, je ne m'exprime pas très bien, mais ca vient probablement du fait que mon idée n'est pas tout a fait limpide dans ma tete.


Je vais m'efforcer d'être plus compréhensible.

voici mon type :

Code:
Type Complex
R as double
i as double
m as double
p as double
end type

où .r est la partie réele, .i la partie immaginaire, .m le module et .p la phase.

Je voudrais savoir quel est la syntaxe pour une procedure qui s'execute lorsqu'une partie d'une variable de type complexe est affectée.

Par exemple losrque X.r (ou X.i) est affecté dans mon programme principal
Code:
Dim X as complex
X.r = 312 'ou (X.i = 546)
Que cela execute automatiquement dans ma macro complementaire, une affectation des parties .m et .p pour cette variable X.

Et idem lorsque qu'une affectation de .m ou .p est faite, que le calcul et l'affectation de .r et .i se lance automatiquement.


en gros dans ma macro complementaire, après
Code:
Type Complex
R as double
i as double
m as double
p as double
end type
j'aurais un truc dans le style de :
Code:
Sub Qd_r_ou_i_est_affecté()
With complex
.m = Sqr(r^2+i^2)[
.p = atn(i/r)
End With
End sub

Sub Qd_m_ou_p_est_affecté()
With complex
.r = m * cos(p)
.i = m * sin(p)
End With
End sub

Je voudrais que la premiere procedure soit lancée automatiquement sur affectation de .r ou .i, et la deuxième sur affectation de .m ou .p.
mais je ne sais pas si je peux ecrire "with complex" ni quel serait la syntaxe adequate.

Ca ressemble un peu a ce que tu as dit, Hervé, sauf qu'à la place de "Bouton1_QuandClic()" ce soit "Quand_.r_ou_.i_est_affecté()", et que cela puisse s'appliquer a toute variable complexe.

J'ose esperer avoir été un poil plus clair ce coup-ci.
 
Dernière édition:
Re : Type de Variables Complexes

Finalement, je pense que mon "with complex" c'est du n'importe quoi, peut être devrais-je plutot écrire :
Code:
Sub Qd_r_ou_i_est_affecté(cplx as complex)
cplx.m = Sqr(r^2+i^2)[
cplx.p = atn(i/r)
End sub


Maintenant je voudrais savoir comment écrire ma macro complémentaire pour que :
-
Code:
Qd_r_ou_i_est_affecté A
soit automatiquement executé, lorsque dans mon programme principal, la ligne
Code:
A.r = 35
ou
Code:
A.i = 42
apparait.

Je pense que c'est possible, mais je ne sais pas comment faire.

Est-ce que il ne faut pas definir une "classe" ou un truc du style, avec gestion d'evenements ?
 
Dernière édition:
Re : Type de Variables Complexes

Je relis ce topic encore une fois, et je tiens a te présenter mes excuses, Spitnolan08, dans ton dernier post tu disais
Pour adapter la réponse à ta situation sans être obligé de tout recréer. Ce qui, quasi à coup sur, ne manquerait pas de ne pas te convenir...

Et mon esprit embrumé a pris ca pour un "Ce qui, quasi à coup sur, ne manquerait pas de te convenir..."

D'ou ma mauvaise réaction, j'ai cru que tu pensais que j'etait de ceux qui font faire aux autres leur boulot a leur place.

Je te prie donc publiquement de bien vouloir accepter mes plattes excuses.
D'autant plus que tu t'eforçait avec la plus honorable bienveillance de comprendre ce que j'essayais de dire.

Je suis très confu.
 
Re : Type de Variables Complexes

Bonsoir,
Je te prie donc publiquement de bien vouloir accepter mes plattes excuses.
D'autant plus que tu t'eforçait avec la plus honorable bienveillance de comprendre ce que j'essayais de dire.

Je suis très confu.
Très peu présent sur le forum en ce moment je découvre ton message ce soir, seulement.
Ne t'inquiètes pas, ta réponse n'est pas si agressive... ou alors je suis bien luné...😉

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour