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 :

[VBA-E]Calcul d'un minimum et de son rang [débutant]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Par défaut [VBA-E]Calcul d'un minimum et de son rang [débutant]
    Bonjour, j'ai un petit exercice à faire qui paraitra surement enfantin à beaucoup d'entre vous mais n'étant pas vraiment branché informatique je bloque bêtement dessus. Je suis totalement débutant, tout ce qui est marqué là-dessous est ce que je viens d'apprendre dans la matinée

    Il faut que j'écrive l'algorithme qui permet de saisir 20 valeurs successivement au clavier et de déterminer leur minimum et le rang du minimum (avec while-wend; for;do-until).

    Pour simplifier j'ai pris 3 valeurs et voilà ce que j'ai marqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim Calcul As Integer, Compteur As Integer, Min As Integer
     
    Sub Test()
    Compteur = 0
    While Compteur < 3
        InputBox ("Entrez votre valeur")
        Compteur = Compteur + 1
        Calcul = MinCompteur        
    Wend
    MsgBox ("20 valeurs rentrées")
    MsgBox Calcul
    End Sub
    Voilà donc je peux bien rentrer mes 3 valeurs mais je n'arrive pas à lui faire trouver le minimum.

    Avant qu'on ne me pose la question, j'ai recherché sur le forum, FAQ, etc... sans succès (je m'y suis peut être mal pris)

    Merci d'avance pour votre aide.

    Grégory

  2. #2
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Je vais essayer de te donner des pistes:
    si tu prépares 4 variables pour stocker le max, le rang du max, le min et le rang du min, et si, à chaque nouvelle valeurs saisies, tu compares avec le min et le max que tu avais avant, pour savoir si cette nouvelle valeur prend la place d'un des extrema.
    Ca t'aide?

  3. #3
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Allez, et en plus, je suis dans un bon jour: regarde ça, et dis moi si tu comprends:
    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
    Sub MinEtMax()
        Dim Mini As Integer
        Dim RangMini As Integer
        Dim Maxi As Integer
        Dim RangMaxi As Integer
        Dim Compteur As Integer
        Dim Saisie As Integer
     
        Maxi = InputBox("Saisissez le 1er chiffre:")
        Mini = Maxi
        RangMini = 1
        RangMaxi = 1
        For Compteur = 2 To 20
            Saisie = InputBox("Saisissez le " & Compteur & "ème chiffre:")
            If Saisie > Maxi Then
                Maxi = Saisie
                RangMaxi = Compteur
            End If
            If Saisie < Mini Then
                Mini = Saisie
                RangMini = Compteur
            End If
        Next Compteur
        MsgBox ("Max = " & Maxi)
        MsgBox ("Min = " & Mini)
    End Sub
    Attention, ce n'est qu'un squelette. Il faudra aussi contrôler les saisies (pour ne pas rentrer autre chose qu'un entier). Afficher un tableau récapitulatif...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Par défaut
    Excusez moi du retard,

    effectivement vous avez bien fait de préciser car je n'ai rien compris à votre premier post

    J'ai pu grâce à vous faire les 2 conditions For (vous avez tout fait ) et While (juste quelques modifications à faire et tout était réglé.) et je vous en remercie.

    FOR :
    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
    Dim Saisie As Integer, Compteur As Integer, Mini As Integer, RangMini As Integer
     
    Sub Min()
        Dim Mini As Integer
        Dim RangMini As Integer
        Dim Compteur As Integer
        Dim Saisie As Integer
     
        Mini = InputBox("Saisissez le 1er chiffre:")
        RangMini = 1
        For Compteur = 2 To 20
            Saisie = InputBox("Saisissez le " & Compteur & "ème chiffre:")
            If Saisie < Mini Then
                Mini = Saisie
                RangMini = Compteur
            End If
        Next Compteur
        MsgBox ("Min = " & Mini)
        MsgBox ("Rang du minimum =" & RangMini)
    End Sub
    WHILE :
    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
    Sub Test()
     
       Compteur = 2
       Mini = InputBox("Saisissez le 1er chiffre:")
       RangMini = 1
       While Compteur < 20
            Saisie = InputBox("Saisissez le " & Compteur & "ème chiffre:")
            If Saisie < Mini Then
                Mini = Saisie
                RangMini = Compteur
            End If
            Compteur = Compteur + 1
       Wend
       MsgBox ("Min = " & Mini)
       MsgBox ("Rang du minimum =" & RangMini)
     
    End Sub
    Il me reste cependant un problème à résoudre avec "Do Until". J'ai fait ceci :

    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
    Sub Min()
        Dim Mini As Integer
        Dim RangMini As Integer
        Dim Compteur As Integer
        Dim Saisie As Integer
     
        Mini = InputBox("Saisissez le 1er chiffre:")
        RangMini = 1
        Do Until 20
            Saisie = InputBox("Saisissez le " & Compteur & "ème chiffre:")
            If Saisie < Mini Then
                Mini = Saisie
                RangMini = Compteur
                Exit Do
            End If
        Loop Until Compteur
        MsgBox ("Min = " & Mini)
        MsgBox ("Rang du minimum =" & RangMini)
    End Sub
    Lorsque j'essaye de le lancer, VB me sélectionne Loop Until (en rouge ci-dessus) et me marque : "Compile error : Loop without Do".
    Il me semble pourtant avoir mis un Do au-dessus mais je ne comprends peut être pas le sens du message (surement pas d'ailleurs ).

    J'ai essayé avec et sans le "Exit Do" (souligné ci-dessus) c'est pareil...

  5. #5
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Regarde mieux les syntaxes de Loop. J'ai bien l'impression que tu as fait un "mix" des deux possibilités (sur la condition)
    Et si tu pouvais me tutyer, ça me mettrait plus à l'aise...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Par défaut
    Ok va pour le tutoiement alors

    Bon effectivement j'avais mis quelques petits trucs en trop.

    Voici le résultat final :

    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
    Sub Min()
        Dim Mini As Integer
        Dim RangMini As Integer
        Dim Compteur As Integer
        Dim Saisie As Integer
     
        Compteur = 2
        Mini = InputBox("Saisissez le 1er chiffre:")
        RangMini = 1
        Do Until Compteur = 21
            Saisie = InputBox("Saisissez le " & Compteur & "ème chiffre:")
            If Saisie < Mini Then
                Mini = Saisie
                RangMini = Compteur
            End If
            Compteur = Compteur + 1
        Loop
        MsgBox ("Min = " & Mini)
        MsgBox ("Rang du minimum =" & RangMini)
    End Sub
    Tout marche nickel, encore merci pour TON aide

  7. #7
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Tu n'as plus qu'à cliquer sur le bouton en bas à gauche, et je serai super content !!

Discussions similaires

  1. [VBA-E] Calcul de formule automatique
    Par ashurai dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 18/05/2006, 16h43
  2. [VBA-e] Calcul d'heure
    Par climz dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 11/05/2006, 16h02
  3. [VBA-E] calculs automatique sur une seule feuille
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2006, 11h53
  4. [VBA-E] Calcul avec incrémentation
    Par dahu29 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/03/2006, 09h36
  5. [VBA-E] Calcul bloqué
    Par vanima dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/12/2005, 15h16

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