Bonjour,

J'ai créer la matrice ci-dessous afin d'ifentifier les nombres premiers dans un interval :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Dim borneSup As Double     'La borne Supérieur de l'interval à étudier

Dim valEtudier As Double     'La valeur étudier par la boucle du programme

Dim numLigne As Single     'Le numéro de la ligne où la valeur sera saisie

Sub NombrePremier()

Range("A1").Select  'Sélectionne la permière case du tableau (permet de toujours afficher les données en haut à gauche de la feuille active)

' Afficher "Veuillez procéder à la saisie de la borne supérieur de l'interval à étudier (la borne inférieur sera toujours prise égale à 1)."        'Saisie de la borne supérieur de l'interval par l'utilisateur
Saisir borneSup            (Cette commande renvoi à une fonction existane et ne pose pas de problème)

If borneSup <= 1 Then   'Défintion du domaine de l'étude.

MsgBox "La valeur saisie ne permet pas de former un interval entre 1 et un nombre positif supérieur. Veuillez saisir une valeur réelle supérieur à 1."

Else

valEtudier = 1      'Borne Basse de l'interval, valeur de départ de notre étude

numLigne = 1    'Numéro de la 1 ère ligne ou seront rentrés les nombres premiers

    While valEtudier <= borneSup    'Mise en place D'une boucle qui va étudier tous les nombres entiers entre 1 et la borne supérieur définie par l'utilisateur
    
        Select Case valEtudier  'Etude des différents cas possible
      
        Case valEtudier = 1     'Cas où la valeur traité est 1 et donc sans antécédent premier   
    
        Cells(1, 1) = 1     'Saisie du premier nombre premier (1) dans la première cellule. 
      
        Case valEtudier = 2     'Cas où la valeur étudier est deux, seul nombre paire premier
 
        Cells(2, 1) = 2     'Saisie du second nombre premier dans la seconde case
           
        Case Else   'Pour tous les nombres supérieurs à 2    
     
                Range("A2").Select      'Selectionne la permière cellule où le nombre premier sera autre que 1 (qui permet de diviser tous les nombres entiers).    
                                                
                Do Until IsEmpty(ActiveCell)   ' Teste le contenu de la cellule active, si celle-ci est vide, sort de la boucle.       
 
                    If valEtudier Mod ActiveCell.Value <> 0 Then     'Compare la valeur du reste de la division entre la valeur étudier et le nombre premier sélectionné à 0   
                
                    'Si le reste est non nul pour cette division, j'effectue la même opération avec le nombre premier suivant (si il y en a un).    
   
                    Selection.Offset(1, 0).Select    'Passe à la cellule contenant le prochain nombre premier, 1 ligne en dessous. 
                  
                    Else
                    
                Exit Do     'Si le reste est nul alors je sors de la boucle
                   
                    End If
                 
                Loop  ' Retourne au début de la boucle.
            
                'Si je sors normalement de la boucle (condition "Do Until IsEmpty(ActiveCell)" non satisfaite), alors Cells(numligne,1) = valeur étudier.
                 
                'Si je sors par Exit Do je passe directement à End Select.    
                 
Existe-t-il une commande permettant d'effectuer ce passage ?     
       
        End Select
        
    valEtudier = valEtudier + 1     'Incrémentation de la valeur étudier pour s'intéresser à l'entier suivant
 
    numLigne = numLigne + 1     'Incrémentation du numéro de la ligne où est not la valeur du nombre premier, afin de ne pas effacer les valeurs précédentes.  
 
    Wend
    
End If

End Sub
Merci d'avance, et bonne journée !