VBA développer une valeur avec chaine de nombres premiers

Bonjour à vous,

je me lance dans VBA (Excel 2010), jusqu'ici, je n'ai fait que des macros. Quand je teste la fonction, j'ai une erreur de références circulaires. J'ai fait le test avec l'outil de repérage de références circulaires, mais il m'indique la cellule dans laquelle j'ai testé ma fonction.

Ma liste de nombres premiers, de 2 à 199 commence à la cellule BK45 et j'appelle Valeur, le nombre qui va être traité par la fonction.

Ma fonction est relativement courte, alors je la poste telle quelle :

Function PremiersTexte(Valeur As Integer) As String

'

' Cette fonction rend sous forme de chaine de caractères le développement en facteurs premiers de la valeur entrée.

'

'

Dim i, j, Puissance As Integer 'i et j sont les variables des deux boucles et Puissance est la valeur de la puissance du nombre premier traité dans la boucle i

Dim Phrase, Unité As String 'Phrase est la chaine de caractère obtenue dans la boucle j et Unité est la concaténation du nombre premier en cours de traitement et du signe de multiplication (Multiplier) choisi par l'utilisateur.

Sheets("Feuil2").Activate

Range("BK45").Select

Premiers = ""

Unité = ""

Phrase = ""

PremiersTexte = ""

For i = 1 To 46

Puissance = 0

While (Valeur Mod ActiveCell.Value = 0)

Puissance = Puissance + 1

Valeur = Valeur / ActiveCell.Value

Wend

Unité = ActiveCell.Value & Range("Multiplier").Value

For j = 0 To Puissance

Phrase = Phrase & Unité

Next j

PremiersTexte = PremiersTexte & Phrase

ActiveCell.Offset(1, 0).Select

Next i

End Function

D'avance, merci de vous pencher sur mon problème (de références circulaires), la bonne soirée à vous.

Bonjour et bienvenu(e)

Normalement une fonction ne modifies pas autre chose que sa cellule

Donc ton fichier était indispensable

Je te propose cette solution, mais comme je ne sais pas ce que tu dois trouver, c'est sans garantie

=PremiersTexte(Valeur;BK45:BK90)

Valeur = est le nombre qui va être traité par la fonction

La fonction

Function PremiersTexte(Valeur As Integer, Plage As Range) As String
'
' Cette fonction rend sous forme de chaine de caractères le développement en facteurs premiers de la valeur entrée.
'
'
Dim I As Integer, J As Integer              ' I et J sont les variables des deux boucles
Dim Puissance As Integer                    ' Puissance est la valeur de la puissance du nombre premier traité dans la boucle I
Dim Phrase As String, Unité As String       ' Phrase est la chaine de caractère obtenue dans la boucle j
                                            ' Unité est la concaténation du nombre premier en cours de traitement
                                            ' et du signe de multiplication (Multiplier) choisi par l'utilisateur.

  Premiers = ""
  Unité = ""
  Phrase = ""
  PremiersTexte = ""

  For I = 1 To 46
    Puissance = 0
    While (Valeur Mod Plage.Cells(I, 1) = 0)
      Puissance = Puissance + 1
      Valeur = Valeur / Plage.Cells(I, 1)
    Wend

    Unité = Plage.Cells(I, 1) & Range("Multiplier").Value

    For J = 0 To Puissance
      Phrase = Phrase & Unité
    Next J

    PremiersTexte = PremiersTexte & Phrase
  Next I

End Function

Merci pour ton conseil qui a résolu mon problème (pour en révéler d'autres, mais je vais m'y atteler). Pour répondre à ta question, cette fonction me sert dans une page ou j'ai fait un générateur d'opérations sur les fractions pour aider à leur compréhension. Elle a pour but de développer sous forme d'un produit de nombres premiers, dans un premier temps les dénominateurs, pour aller au ppcm, puis plus tard le numérateur et le dénominateur pour éventuellement faire des simplifications.

encore merci de ta promptitude et de ta pertinence.

Rechercher des sujets similaires à "vba developper valeur chaine nombres premiers"