Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PGCD en VBA

10 réponses
Avatar
Olivier
Bonjour,
j'utilise la fonction PGCD dans Excel 2003 pour simplifier 4 valeurs a,b,c,d
Le but est le calcul de p=pgcd(a,b,c,d)
puis a =a/p
b=b/p
c=c/p
d=d/p
J'y arrive avec Excel mais je bute lors du passage en VBA
A mon avis, cela provient de la fonction PGCD qui n'est pas reconnue en VBA.
Je peux créer PGCD(a, b) mais avec 4 nombres comment faire ?
Si quelqu'un peut m'aider...
Olivier

10 réponses

Avatar
michdenis
Bonjour,

En vba,

tu peux accéder à cette fonction PGCD() en vba par

x = WorksheetFunction.Gcd(a,b,c,d)




"Olivier" a écrit dans le message de groupe de discussion :
hn89up$i9a$
Bonjour,
j'utilise la fonction PGCD dans Excel 2003 pour simplifier 4 valeurs a,b,c,d
Le but est le calcul de p=pgcd(a,b,c,d)
puis a =a/p
b=b/p
c=c/p
d=d/p
J'y arrive avec Excel mais je bute lors du passage en VBA
A mon avis, cela provient de la fonction PGCD qui n'est pas reconnue en VBA.
Je peux créer PGCD(a, b) mais avec 4 nombres comment faire ?
Si quelqu'un peut m'aider...
Olivier
Avatar
Olivier
Merci pour la réponse rapide mais cela ne marche pas.
Cela me donne "Erreur d'exécution 438. Propriété ou méthode non géré par cet
objet."
Voici mon code :
Sub ppp()
a = 28
b = 12
c = 16
d = 32
x = WorksheetFunction.Gcd(a, b, c, d)
MsgBox x
End Sub
Une idée ?
Olivier



"michdenis" a écrit dans le message de news:

Bonjour,

En vba,

tu peux accéder à cette fonction PGCD() en vba par

x = WorksheetFunction.Gcd(a,b,c,d)




"Olivier" a écrit dans le message de groupe
de discussion :
hn89up$i9a$
Bonjour,
j'utilise la fonction PGCD dans Excel 2003 pour simplifier 4 valeurs
a,b,c,d
Le but est le calcul de p=pgcd(a,b,c,d)
puis a =a/p
b=b/p
c=c/p
d=d/p
J'y arrive avec Excel mais je bute lors du passage en VBA
A mon avis, cela provient de la fonction PGCD qui n'est pas reconnue en
VBA.
Je peux créer PGCD(a, b) mais avec 4 nombres comment faire ?
Si quelqu'un peut m'aider...
Olivier

Avatar
michdenis
Cette procédure ne génère aucune erreur et
retourne 4 comme réponse.
'**********************************
Sub ppp()
a = 28
b = 12
c = 16
d = 32
x = WorksheetFunction.Gcd(a, b, c, d)
MsgBox x
End Sub
'**********************************
Avatar
Olivier
Merci, mais chez moi ca ne marche pas.
J'ai remarqué que lorsque je tape gcd cela reste gcd et n'est pas transformé
en Gcd (avec la majuscule). Comme si, vba ne reconnaissait pas cette
fonction. Je suis sous Excel 2003 est-ce que quelqu'un sait d'où peut
provenir mon erreur.
La fonction pgcd marche bien dans Excel..
Olivier



"michdenis" a écrit dans le message de news:

Cette procédure ne génère aucune erreur et
retourne 4 comme réponse.
'**********************************
Sub ppp()
a = 28
b = 12
c = 16
d = 32
x = WorksheetFunction.Gcd(a, b, c, d)
MsgBox x
End Sub
'**********************************




Avatar
michdenis
Ok, pour les versions antérieures à 2007,
la macro complémentaire "utilitaire d'analyse" doit être chargée.

La procédure va comme suit :
'-------------------------------
Sub ppp()
a = 28
b = 12
c = 16
d = 32
x = Evaluate("PGcd(" & a & "," & b & "," & c & "," & d & ")")
MsgBox x
End Sub
'-------------------------------
Avatar
Olivier
Merci, ca marche !
Je préférais la syntaxe de l'autre mais bon.
Je crois que je ne saurais pas pourquoi elle ne marche pas.
Merci à toi !
Olivier



"michdenis" a écrit dans le message de news:

Ok, pour les versions antérieures à 2007,
la macro complémentaire "utilitaire d'analyse" doit être chargée.

La procédure va comme suit :
'-------------------------------
Sub ppp()
a = 28
b = 12
c = 16
d = 32
x = Evaluate("PGcd(" & a & "," & b & "," & c & "," & d & ")")
MsgBox x
End Sub
'-------------------------------



Avatar
michdenis
| Je crois que je ne saurais pas pourquoi elle ne marche pas.

Les fonctions de la feuille de calcul sont accessibles en utilisant
l'objet "WorksheetFunction" sauf pour quelques unes dont PGCD()
Si tu veux savoir pourquoi, il faut t'adresser directement à Microsoft.

Elle est présente avec Excel 2007.
Avatar
Olivier
Une reaison de plus de passer à v2007 :-)
Merci
Olivier

"michdenis" a écrit dans le message de news:

| Je crois que je ne saurais pas pourquoi elle ne marche pas.

Les fonctions de la feuille de calcul sont accessibles en utilisant
l'objet "WorksheetFunction" sauf pour quelques unes dont PGCD()
Si tu veux savoir pourquoi, il faut t'adresser directement à Microsoft.

Elle est présente avec Excel 2007.





Avatar
Daniel.C
Bonjour.

Dans la fenêtre VBE, il faut cocher dans Outils, Références
"ATPVBAEN.xls". La syntaxe est alors la suivante :

x = Gcd(a, b, c, d)

Cordialement.

Daniel

Merci, mais chez moi ca ne marche pas.
J'ai remarqué que lorsque je tape gcd cela reste gcd et n'est pas transformé
en Gcd (avec la majuscule). Comme si, vba ne reconnaissait pas cette
fonction. Je suis sous Excel 2003 est-ce que quelqu'un sait d'où peut
provenir mon erreur.
La fonction pgcd marche bien dans Excel..
Olivier



"michdenis" a écrit dans le message de news:

Cette procédure ne génère aucune erreur et
retourne 4 comme réponse.
'**********************************
Sub ppp()
a = 28
b = 12
c = 16
d = 32
x = WorksheetFunction.Gcd(a, b, c, d)
MsgBox x
End Sub
'**********************************




Avatar
michdenis
| Une reaison de plus de passer à v2007

Peut-être! Mais comme Daniel le fait remarquer dans son message,
comme la fonction que tu désires fait partie des fonctions comprises
dans la macro complémentaire "Utilitaire d'analyse", si tu ajoutes
la référence : Project atpvbaen.xls,
Chemin du fichier :
C:Program Files (x86)Microsoft OfficeOFFICE11BibliothèqueAnalyseATPVBAEN.XLA

Tu auras accès directement à toutes les fonctions de la macro complémentaire.
Dans la fenêtre de l'éditeur de code, raccourci clavier F2, tu sélectionnes
"atpvbaen.xls" dans la liste déroulante où il est inscrit "toutes les bibliothèques"
du haut de la fenêtre, tu auras le nom de chacune des fonctions contenues
dans cette macro complémentaire.

Comme ce n'est pas des fonctions natives d'Excel, elles ne font pas parties
des fonctions que retournent l'objet "WorksheetFunction"

Voilà pour la précision.