IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Saut conditionnel d'une partie de code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 1
    Par défaut Saut conditionnel d'une partie de code
    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 !

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Il y a plusieurs façons de faire cela. Par exemple :
    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
    Sub NombrePremier()
    Dim bolExitDo as boolean
     
    ...
     
    bolExitDo = False
     
     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
          bolExitDo = True
     
          Exit Do  'Si le reste est nul alors je sors de la boucle 
     
     End If
     
     Loop ' Retourne au début de la boucle. 
     
    if not bolExitDo Then
         Cells(numligne,1) = valeur étudier.
     
    End if 
     
     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
    Pour une prochaine fois, cherche à utiliser les balises de code !

    Cordialement,

    PGZ

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/07/2007, 11h44
  2. comprendre une partie du code
    Par mademoizel dans le forum ASP.NET
    Réponses: 4
    Dernier message: 09/02/2007, 11h40
  3. comprendre une partie de code
    Par menuge dans le forum Langage
    Réponses: 24
    Dernier message: 03/09/2006, 20h44
  4. une partie du code a disparu
    Par recup dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 08/03/2005, 10h08
  5. Indenter une partie du code
    Par KooX dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/05/2004, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo