[vba excel]

Résolu/Fermé
Utilisateur anonyme - 31 juil. 2008 à 15:28
 Utilisateur anonyme - 4 août 2008 à 14:45
salut, j'ai écris une macro qui me donne tous les nombres premiers compris entre deux nombres donnés.
Seulement, pour lemoment, je suis obligé d'entrer mes deux valeurs bornes directement dans la macro.
J'aimerais pouvoir entrer ces deux valeurs en B1 et en B2 pour que la macro se mette à jour automatiquement.
Pourriez vousmedire comment faire svp?

Voici mon code:

Sub nbprem()
Range("A1").Select
i = 9000
ActiveCell.Offset((i - 2), 0).Range("A1").Select
While i <> 10000
ActiveCell.FormulaR1C1 = i
ActiveCell.Offset(1, 0).Range("A1").Select
i = i + 1
Wend
ActiveCell.FormulaR1C1 = i
ActiveCell.Offset(1, 0).Range("A1").Select
For j = 1 To 150
ActiveCell.FormulaR1C1 = 10000
ActiveCell.Offset(1, 0).Range("A1").Select
Next

' Remplit le tableau avec les nombres compris entre 2
' et la valeur voulue

Range("A1").Select

For k = 2 To Sqr(i)
a = (2 * k - 2)
ActiveCell.Offset(a, 0).Range("A1").Select
While Selection <> 10000
Selection.ClearContents
ActiveCell.Offset(k, 0).Range("A1").Select
Wend
Range("A1").Select
Next

' Supprime les nombres non premiers

While Selection <> 10000
If Selection = 0 Then
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.Offset(-1, 0).Range("A1").Select
Else: ActiveCell.Offset(1, 0).Range("A1").Select
End If
Wend

While Selection = 10000
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.Offset(-1, 0).Range("A1").Select
Wend
Range("A1").Select

' Nettoie le tableau
End Sub








Je sais que c'est très basique comme méthode mais je voudrais d'abord faire un truc simple et qui fonctionne complètement avant de l'améliorer.
Merci d'avance ;)


PS: j'utilise excel97

6 réponses

Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 19
31 juil. 2008 à 15:55
si j'ai bien compris ton but ets de remplacer 90000 et 100000 par B1 et B2?
si c'ets le cas, tu as juste a remplacé 90000 par cells(2,1).value
et 100000 par cells (2,2).value

bien sur il faut changer les arguments de cells si tu veux le sfaire entrer ailleurs!
exemple cells (ligne,colonne).value

en esperant t'avoir aidé!

1
Utilisateur anonyme
31 juil. 2008 à 16:09
merci beaucoup, c'est exactement ce que je voulais faire
1
Utilisateur anonyme
31 juil. 2008 à 16:26
salut,le problèmes c'est qu'avec ma macro j'efface ces deux lignes presque systématiquementserait-il possible de faire la mêmechose mais avec des textbox?
1
Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 19
31 juil. 2008 à 16:29
oui surement!
laisse moi juste 2 minutes que je me remettes dans les textbox

//edit finalement j'arrive pas a faire autrement qu'avec un userform
demande voir si kk1 a une idee
mai ssinon fait un userform...
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
1 août 2008 à 23:10
merci de tes réponses,
par contre je suis plus que novice en VBA alors est-ce que tu pourrais m'expliquer comment ça fontionne les userform ???
1
Utilisateur anonyme
4 août 2008 à 14:45
j'ai trouvé comment on crée un userform par contre je sais ni le faire apparaître sur ma feuille ni récupérer les deux valeurs que je veux y entrer
1