Avec mon antique XL 2003, les fonctions Puissance et Racine me permettent
d'élever un nombre à une telle puissance ou d'en extraire la racine.
Le tout n'est possible que si je connais le nombre au départ.
Si je prend la fonction à l'envers, comment puis-je savoir qu'un nombre (nb)
est la puissance (p) d'un autre nombre?
Exemple, si j'ai 81 comme nb, comment puis-je savoir qu'il représente 3 à la
puissance p, sans faire 36 calculs d'approche tels que 3², puis 3³, puis 3
exp4 .....?
Question : avec 2401 (7 à la 4°) ?
Merci et bonne fin de WE
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
par contre c'est ok avec R As Currency isabelle Le 2017-08-27 à 20:16, isabelle a écrit :
Salut Denis, salut à tous, je n'ai pas de réponse seulement une question en plus, avec R As Variant le résultat est: 59049^1 243^2 3^10 9^5 n'est pas trouvé le mystère s'épaissit.... isabelle
par contre c'est ok avec R As Currency
isabelle
Le 2017-08-27 à 20:16, isabelle a écrit :
Salut Denis, salut à tous,
je n'ai pas de réponse seulement une question en plus,
avec R As Variant
par contre c'est ok avec R As Currency isabelle Le 2017-08-27 à 20:16, isabelle a écrit :
Salut Denis, salut à tous, je n'ai pas de réponse seulement une question en plus, avec R As Variant le résultat est: 59049^1 243^2 3^10 9^5 n'est pas trouvé le mystère s'épaissit.... isabelle
isabelle
juste pour le test du maximum de la valeur V (sans dépassement de capacité) R As Currency a planté, R As String le max (sans dépassement de capacité) est V = 999999999 j'ai un résultat (déjà connu 999999999^1) après 15 min. Sub test2() 'activer la référence "Microsoft Scripting Runtime" Dim Dico As New Scripting.Dictionary, Cle As String Dim V As Long, R As String, n As Long, X As Long V = 999999999 'Cells(1, "H") = Now For n = 1 To V R = V ^ (1 / n) X = Int(R) If X - R = 0 Then Cle = R & "^" & n If Not Dico.Exists(Cle) Then Dico.Add Cle, "" End If Next Columns(1).ClearContents Range("A1").Resize(Dico.Count) = Application.Transpose(Dico.Keys) 'Cells(1, "I") = Now End Sub si vous faite le test avec moins de temps, s.v.p. décrivez-moi les composantes de votre pc :) isabelle
juste pour le test du maximum de la valeur V (sans dépassement de capacité)
R As Currency a planté,
R As String le max (sans dépassement de capacité) est V = 999999999
j'ai un résultat (déjà connu 999999999^1) après 15 min.
Sub test2()
'activer la référence "Microsoft Scripting Runtime"
Dim Dico As New Scripting.Dictionary, Cle As String
Dim V As Long, R As String, n As Long, X As Long
V = 999999999
'Cells(1, "H") = Now
For n = 1 To V
R = V ^ (1 / n)
X = Int(R)
If X - R = 0 Then
Cle = R & "^" & n
If Not Dico.Exists(Cle) Then Dico.Add Cle, ""
End If
Next
Columns(1).ClearContents
Range("A1").Resize(Dico.Count) = Application.Transpose(Dico.Keys)
'Cells(1, "I") = Now
End Sub
si vous faite le test avec moins de temps, s.v.p. décrivez-moi les composantes
de votre pc :)
juste pour le test du maximum de la valeur V (sans dépassement de capacité) R As Currency a planté, R As String le max (sans dépassement de capacité) est V = 999999999 j'ai un résultat (déjà connu 999999999^1) après 15 min. Sub test2() 'activer la référence "Microsoft Scripting Runtime" Dim Dico As New Scripting.Dictionary, Cle As String Dim V As Long, R As String, n As Long, X As Long V = 999999999 'Cells(1, "H") = Now For n = 1 To V R = V ^ (1 / n) X = Int(R) If X - R = 0 Then Cle = R & "^" & n If Not Dico.Exists(Cle) Then Dico.Add Cle, "" End If Next Columns(1).ClearContents Range("A1").Resize(Dico.Count) = Application.Transpose(Dico.Keys) 'Cells(1, "I") = Now End Sub si vous faite le test avec moins de temps, s.v.p. décrivez-moi les composantes de votre pc :) isabelle
Jacquouille
Merci Isabelle, Denis et Daniel Pour faire bref (et si je comprends bien), le résultat sera plus ou moins complet suivant la déclaration du type variable. Pour le reste, j'attendrai que Denis passe en 2° année. -)) Le dernier résultat me suffit amplement. grand merci à vous trois Bon lundi Jacques " Le vin est au repas ce que le parfum est à la femme." . "News.aioe.org" a écrit dans le message de groupe de discussion : onvko7$1fa3$ OK, je vais me répondre à moi-même! Avec cette procédure, cela fonctionne, la seule différence, j'ai modifié dans la déclaration des variables : R As String au lieu de R As Double comme il se devrait. Je n'ai aucune explication pour cette chinoiserie, du Microsoft tout craché! Si quelqu'un a une explication, je suis preneur. '-------------------------------------------------------------------------- Sub test1() Dim B As Long, R As String, T() Dim Compteur As Long, V As Long, X As Long 'Valeur de départ pour laquelle tu veux avoir 'les combinaisons possibles d'une valeur X 'élevée à une puissance Y V = 59049 '<<<<<<===== For B = 1 To V R = V ^ (1 / B) X = Int(R) If X - CDbl(R) = 0 Then Compteur = Compteur + 1 ReDim Preserve T(1 To Compteur) T(Compteur) = CLng(R) & " Puissance " & B End If Next Columns(1).Clear Range("A1").Resize(UBound(T)).Value = Application.Transpose(T) End Sub '-------------------------------------------------------------------------- MichD
Merci Isabelle, Denis et Daniel
Pour faire bref (et si je comprends bien), le résultat sera plus ou moins
complet suivant la déclaration du type variable.
Pour le reste, j'attendrai que Denis passe en 2° année. -))
Le dernier résultat me suffit amplement.
grand merci à vous trois
Bon lundi
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"News.aioe.org" a écrit dans le message de groupe de discussion :
onvko7$1fa3$1@gioia.aioe.org...
OK, je vais me répondre à moi-même!
Avec cette procédure, cela fonctionne, la seule différence, j'ai
modifié dans la déclaration des variables :
R As String au lieu de R As Double comme il se devrait.
Je n'ai aucune explication pour cette chinoiserie,
du Microsoft tout craché!
Si quelqu'un a une explication, je suis preneur.
'--------------------------------------------------------------------------
Sub test1()
Dim B As Long, R As String, T()
Dim Compteur As Long, V As Long, X As Long
'Valeur de départ pour laquelle tu veux avoir
'les combinaisons possibles d'une valeur X
'élevée à une puissance Y
V = 59049 '<<<<<<=====
For B = 1 To V
R = V ^ (1 / B)
X = Int(R)
If X - CDbl(R) = 0 Then
Compteur = Compteur + 1
ReDim Preserve T(1 To Compteur)
T(Compteur) = CLng(R) & " Puissance " & B
End If
Next
Columns(1).Clear
Range("A1").Resize(UBound(T)).Value = Application.Transpose(T)
End Sub
'--------------------------------------------------------------------------
Merci Isabelle, Denis et Daniel Pour faire bref (et si je comprends bien), le résultat sera plus ou moins complet suivant la déclaration du type variable. Pour le reste, j'attendrai que Denis passe en 2° année. -)) Le dernier résultat me suffit amplement. grand merci à vous trois Bon lundi Jacques " Le vin est au repas ce que le parfum est à la femme." . "News.aioe.org" a écrit dans le message de groupe de discussion : onvko7$1fa3$ OK, je vais me répondre à moi-même! Avec cette procédure, cela fonctionne, la seule différence, j'ai modifié dans la déclaration des variables : R As String au lieu de R As Double comme il se devrait. Je n'ai aucune explication pour cette chinoiserie, du Microsoft tout craché! Si quelqu'un a une explication, je suis preneur. '-------------------------------------------------------------------------- Sub test1() Dim B As Long, R As String, T() Dim Compteur As Long, V As Long, X As Long 'Valeur de départ pour laquelle tu veux avoir 'les combinaisons possibles d'une valeur X 'élevée à une puissance Y V = 59049 '<<<<<<===== For B = 1 To V R = V ^ (1 / B) X = Int(R) If X - CDbl(R) = 0 Then Compteur = Compteur + 1 ReDim Preserve T(1 To Compteur) T(Compteur) = CLng(R) & " Puissance " & B End If Next Columns(1).Clear Range("A1").Resize(UBound(T)).Value = Application.Transpose(T) End Sub '-------------------------------------------------------------------------- MichD
LSteph
Bonjour, plus simplement si tu cherches les combinaisons de nombre entiers à l a sour ce d'une racine effectivement passer par les puissances.? Dans ta feuille ligne 1 tu écris de 1 à 10 idem colonne 1 (tu peux même aller jusqu'à 20) formule en B2 à entrer dans toute la matrice: =B$1^$A2 -- LSteph
Bonjour,
plus simplement si tu cherches les combinaisons de nombre entiers à l a sour ce d'une racine effectivement passer par les puissances.?
Dans ta feuille ligne 1 tu écris de 1 à 10
idem colonne 1 (tu peux même aller jusqu'à 20)
formule en B2 à entrer dans toute la matrice:
=B$1^$A2
Bonjour, plus simplement si tu cherches les combinaisons de nombre entiers à l a sour ce d'une racine effectivement passer par les puissances.? Dans ta feuille ligne 1 tu écris de 1 à 10 idem colonne 1 (tu peux même aller jusqu'à 20) formule en B2 à entrer dans toute la matrice: =B$1^$A2 -- LSteph
News.aioe.org
| Pour faire bref (et si je comprends bien), le résultat sera plus ou moins complet suivant la déclaration du type variable. Tu as raison. Cette variable R devrait avoir le type "Double". Cependant pour obtenir la liste complète des résultats, j'ai déclaré la variable As String "Dim R As String" qui est selon moi une incongruité. Semble-t-il, les fonctions de conversion Clng() ou Int() n'arrivent pas à convertir le contenu de la variable R en "Entier"... lors de cette transformation, il y a un tout petit résidu (une poussière de décimale) qui fait que le résultat de "If X - CDbl(R) = 0 Then" n'égale pas 0 quand B = 5. Comme je n'ai pas d'explication... ce doit être un "bug"! :-)) MichD '-------------------------------------------------------------------------- Sub test1() Dim B As Long, R As String, T() Dim Compteur As Long, V As Long, X As Long 'Valeur de départ pour laquelle tu veux avoir 'les combinaisons possibles d'une valeur X 'élevée à une puissance Y V = 59049 '<<<<<<===== For B = 1 To V R = V ^ (1 / B) X = Int(R) If X - CDbl(R) = 0 Then Compteur = Compteur + 1 ReDim Preserve T(1 To Compteur) T(Compteur) = CLng(R) & " Puissance " & B End If Next Columns(1).Clear Range("A1").Resize(UBound(T)).Value = Application.Transpose(T) End Sub '-------------------------------------------------------------------------- MichD
| Pour faire bref (et si je comprends bien), le résultat sera plus ou moins
complet suivant la déclaration du type variable.
Tu as raison. Cette variable R devrait avoir le type "Double". Cependant
pour obtenir la liste complète des résultats, j'ai déclaré la variable As
String "Dim R As String" qui est selon moi une incongruité. Semble-t-il,
les fonctions de conversion Clng() ou Int() n'arrivent pas à convertir le
contenu de la variable R en "Entier"... lors de cette transformation, il y a
un tout petit résidu (une poussière de décimale) qui fait que le résultat de
"If X - CDbl(R) = 0 Then" n'égale pas 0 quand B = 5. Comme je n'ai pas
d'explication... ce doit être un "bug"! :-))
MichD
'--------------------------------------------------------------------------
Sub test1()
Dim B As Long, R As String, T()
Dim Compteur As Long, V As Long, X As Long
'Valeur de départ pour laquelle tu veux avoir
'les combinaisons possibles d'une valeur X
'élevée à une puissance Y
V = 59049 '<<<<<<=====
For B = 1 To V
R = V ^ (1 / B)
X = Int(R)
If X - CDbl(R) = 0 Then
Compteur = Compteur + 1
ReDim Preserve T(1 To Compteur)
T(Compteur) = CLng(R) & " Puissance " & B
End If
Next
Columns(1).Clear
Range("A1").Resize(UBound(T)).Value = Application.Transpose(T)
End Sub
'--------------------------------------------------------------------------
| Pour faire bref (et si je comprends bien), le résultat sera plus ou moins complet suivant la déclaration du type variable. Tu as raison. Cette variable R devrait avoir le type "Double". Cependant pour obtenir la liste complète des résultats, j'ai déclaré la variable As String "Dim R As String" qui est selon moi une incongruité. Semble-t-il, les fonctions de conversion Clng() ou Int() n'arrivent pas à convertir le contenu de la variable R en "Entier"... lors de cette transformation, il y a un tout petit résidu (une poussière de décimale) qui fait que le résultat de "If X - CDbl(R) = 0 Then" n'égale pas 0 quand B = 5. Comme je n'ai pas d'explication... ce doit être un "bug"! :-)) MichD '-------------------------------------------------------------------------- Sub test1() Dim B As Long, R As String, T() Dim Compteur As Long, V As Long, X As Long 'Valeur de départ pour laquelle tu veux avoir 'les combinaisons possibles d'une valeur X 'élevée à une puissance Y V = 59049 '<<<<<<===== For B = 1 To V R = V ^ (1 / B) X = Int(R) If X - CDbl(R) = 0 Then Compteur = Compteur + 1 ReDim Preserve T(1 To Compteur) T(Compteur) = CLng(R) & " Puissance " & B End If Next Columns(1).Clear Range("A1").Resize(UBound(T)).Value = Application.Transpose(T) End Sub '-------------------------------------------------------------------------- MichD
Jacquouille
Merci Stéphane, je crois que la macro est plus pratique car on ne risque pas d'oublier une donnée. La différence étant qu'elles sont listées, tandis que dans un tableau, il faut chercher après..... Je te remercie de t'être penché sur ma question. Jacques " Le vin est au repas ce que le parfum est à la femme." . "LSteph" a écrit dans le message de groupe de discussion : Bonjour, plus simplement si tu cherches les combinaisons de nombre entiers à la sour ce d'une racine effectivement passer par les puissances.? Dans ta feuille ligne 1 tu écris de 1 à 10 idem colonne 1 (tu peux même aller jusqu'à 20) formule en B2 à entrer dans toute la matrice: =B$1^$A2 -- LSteph
Merci Stéphane,
je crois que la macro est plus pratique car on ne risque pas d'oublier une
donnée.
La différence étant qu'elles sont listées, tandis que dans un tableau, il
faut chercher après.....
Je te remercie de t'être penché sur ma question.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"LSteph" a écrit dans le message de groupe de discussion :
fef3978f-1d92-412a-a06d-4fda8a85ec63@googlegroups.com...
Bonjour,
plus simplement si tu cherches les combinaisons de nombre entiers à la sour
ce d'une racine effectivement passer par les puissances.?
Dans ta feuille ligne 1 tu écris de 1 à 10
idem colonne 1 (tu peux même aller jusqu'à 20)
formule en B2 à entrer dans toute la matrice:
=B$1^$A2
Merci Stéphane, je crois que la macro est plus pratique car on ne risque pas d'oublier une donnée. La différence étant qu'elles sont listées, tandis que dans un tableau, il faut chercher après..... Je te remercie de t'être penché sur ma question. Jacques " Le vin est au repas ce que le parfum est à la femme." . "LSteph" a écrit dans le message de groupe de discussion : Bonjour, plus simplement si tu cherches les combinaisons de nombre entiers à la sour ce d'une racine effectivement passer par les puissances.? Dans ta feuille ligne 1 tu écris de 1 à 10 idem colonne 1 (tu peux même aller jusqu'à 20) formule en B2 à entrer dans toute la matrice: =B$1^$A2 -- LSteph
Jacquouille
Il est vrai que c'est impensable qu'il traine un fond de décimale dans une variable qui est sensée se vider à chaque coup. A moins qu'ils n'aient copié sur le seau d'eau dont on se sert. même vide, il reste de l'humidité dedans. -)) grand merci à toi et bonne journée Jacques " Le vin est au repas ce que le parfum est à la femme." . "News.aioe.org" a écrit dans le message de groupe de discussion : onvko7$1fa3$ OK, je vais me répondre à moi-même! Avec cette procédure, cela fonctionne, la seule différence, j'ai modifié dans la déclaration des variables : R As String au lieu de R As Double comme il se devrait. Je n'ai aucune explication pour cette chinoiserie, du Microsoft tout craché! Si quelqu'un a une explication, je suis preneur. '-------------------------------------------------------------------------- Sub test1() Dim B As Long, R As String, T() Dim Compteur As Long, V As Long, X As Long 'Valeur de départ pour laquelle tu veux avoir 'les combinaisons possibles d'une valeur X 'élevée à une puissance Y V = 59049 '<<<<<<===== For B = 1 To V R = V ^ (1 / B) X = Int(R) If X - CDbl(R) = 0 Then Compteur = Compteur + 1 ReDim Preserve T(1 To Compteur) T(Compteur) = CLng(R) & " Puissance " & B End If Next Columns(1).Clear Range("A1").Resize(UBound(T)).Value = Application.Transpose(T) End Sub '-------------------------------------------------------------------------- MichD
Il est vrai que c'est impensable qu'il traine un fond de décimale dans une
variable qui est sensée se vider à chaque coup.
A moins qu'ils n'aient copié sur le seau d'eau dont on se sert. même vide,
il reste de l'humidité dedans. -))
grand merci à toi et bonne journée
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"News.aioe.org" a écrit dans le message de groupe de discussion :
onvko7$1fa3$1@gioia.aioe.org...
OK, je vais me répondre à moi-même!
Avec cette procédure, cela fonctionne, la seule différence, j'ai
modifié dans la déclaration des variables :
R As String au lieu de R As Double comme il se devrait.
Je n'ai aucune explication pour cette chinoiserie,
du Microsoft tout craché!
Si quelqu'un a une explication, je suis preneur.
'--------------------------------------------------------------------------
Sub test1()
Dim B As Long, R As String, T()
Dim Compteur As Long, V As Long, X As Long
'Valeur de départ pour laquelle tu veux avoir
'les combinaisons possibles d'une valeur X
'élevée à une puissance Y
V = 59049 '<<<<<<=====
For B = 1 To V
R = V ^ (1 / B)
X = Int(R)
If X - CDbl(R) = 0 Then
Compteur = Compteur + 1
ReDim Preserve T(1 To Compteur)
T(Compteur) = CLng(R) & " Puissance " & B
End If
Next
Columns(1).Clear
Range("A1").Resize(UBound(T)).Value = Application.Transpose(T)
End Sub
'--------------------------------------------------------------------------
Il est vrai que c'est impensable qu'il traine un fond de décimale dans une variable qui est sensée se vider à chaque coup. A moins qu'ils n'aient copié sur le seau d'eau dont on se sert. même vide, il reste de l'humidité dedans. -)) grand merci à toi et bonne journée Jacques " Le vin est au repas ce que le parfum est à la femme." . "News.aioe.org" a écrit dans le message de groupe de discussion : onvko7$1fa3$ OK, je vais me répondre à moi-même! Avec cette procédure, cela fonctionne, la seule différence, j'ai modifié dans la déclaration des variables : R As String au lieu de R As Double comme il se devrait. Je n'ai aucune explication pour cette chinoiserie, du Microsoft tout craché! Si quelqu'un a une explication, je suis preneur. '-------------------------------------------------------------------------- Sub test1() Dim B As Long, R As String, T() Dim Compteur As Long, V As Long, X As Long 'Valeur de départ pour laquelle tu veux avoir 'les combinaisons possibles d'une valeur X 'élevée à une puissance Y V = 59049 '<<<<<<===== For B = 1 To V R = V ^ (1 / B) X = Int(R) If X - CDbl(R) = 0 Then Compteur = Compteur + 1 ReDim Preserve T(1 To Compteur) T(Compteur) = CLng(R) & " Puissance " & B End If Next Columns(1).Clear Range("A1").Resize(UBound(T)).Value = Application.Transpose(T) End Sub '-------------------------------------------------------------------------- MichD