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

VBA Access Discussion :

Calculer le nombre d'occurrences des extrêmes dans un tableau [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 15
    Par défaut Calculer le nombre d'occurrences des extrêmes dans un tableau
    Bonjour,

    J'ai un exercice à résoudre dont l'énoncé est le suivant :

    Ecrivez un programme qui :
    - demande à l'utilisateur combien de valeurs (de type entier) il veut saisir ;
    - saisit ces valeurs en les stockant dans un tableau ;
    - recherche et affiche le nombre d'occurrences des valeurs minimales et maximales du tableau

    Par exemple, si l'utilisateur saisit les valeurs suivantes :
    3 9 5 3 4 6 9 3 7 3

    Le programme devra afficher :
    "Le minimum est 3 (4 occurrences) et le maximum est 9 (2 occurrences).

    J'ai commencé un code mais il y a plusieurs problèmes :
    - le programme ne se termine pas quand je tape "-1"
    - les chiffres que je rentre ne sont pas pris en compte
    - je n'arrive pas à avoir une solution satisfaisante

    Est-ce que quelqu'un peut m'aider à ce niveau ?

    Merci par avance pour votre aide précieuse !!!!

    Voici le code que j'ai réalisé :

    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
    Module Module1
     
        Function valeurMinimum(ByVal tab() As Integer, ByVal nbvaleurs As Integer)
            Dim minimum = tab(0), i As Integer
            For i = 1 To nbvaleurs - 1
                If tab(i) < minimum Then minimum = tab(i)
            Next
            valeurMinimum = minimum
        End Function
     
        Function valeurMaximum(ByVal tab() As Integer, ByVal nbvaleurs As Integer)
            Dim maximum = tab(0), i As Integer
            For i = 1 To nbvaleurs - 1
                If tab(i) > maximum Then maximum = tab(i)
            Next
            valeurMaximum = maximum
        End Function
        Function GetNbreOcurMin(ByVal Str As String, ByVal valminimum As String) As Integer
            Dim position, nbreOcurMin As Integer
            Dim tableau(10) As Integer
            nbreOcurMin = 0
            valminimum = valeurMinimum(tableau, 10)
            position = Str.IndexOf(valminimum)
            Do
                nbreOcurMin += 1
                position = Str.IndexOf(valminimum, position + valminimum.Length)
            Loop Until position = -1
            Return nbreOcurMin
        End Function
     
        Function GetNbreOcurMax(ByVal Str As String, ByVal valmaximum As String) As Integer
            Dim position, nbreOcurMax As Integer
            Dim tableau(10) As Integer
            nbreOcurMax = 0
            valmaximum = valeurMaximum(tableau, 10)
            position = Str.IndexOf(valmaximum)
            Do
                nbreOcurMax += 1
                position = Str.IndexOf(valmaximum, position + valmaximum.Length)
            Loop Until position = -1
            Return nbreOcurMax
        End Function
     
     
        Sub Main()
            Dim i, tableau(10) As Integer, minimum As String, maximum As String, nbreOcurMin As String, nbreOcurMax As String
            Dim valeur_saisie, nbvaleurs As Integer
            For i = 0 To 9
                Do
                    valeur_saisie = InputBox("Entrer les valeurs du tableau, -1 pour terminer")
                    If valeur_saisie <> -1 Then
                        tableau(i) = tableau(i) + valeur_saisie
                        nbvaleurs = nbvaleurs + 1
                    End If
                Loop Until valeur_saisie = -1
                System.Console.WriteLine(tableau(i))
            Next
            minimum = valeurMinimum(tableau, 10)
            maximum = valeurMaximum(tableau, 10)
            nbreOcurMin = GetNbreOcurMin(tableau(i), minimum)
            nbreOcurMax = GetNbreOcurMax(tableau(i), maximum)
            System.Console.WriteLine("Le minimum est" & minimum & "(occurrences)" & nbreOcurMin & "et le maximum est" & maximum & "(occurrences)" & nbreOcurMax)
     
        End Sub
    End Module

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Si je ne me trompe pas tu as un problème dans la boucle de saisie.

    Je tenterai cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    valeur_saisie=0
     
    dim i as integer:do while i<10 and valeur_saisie<>-1
     
       valeur_saisie = InputBox("Entrer les valeurs du tableau, -1 pour terminer")
     
       If valeur_saisie <> -1 Then
           tableau(i) = valeur_saisie
           nbvaleurs = nbvaleurs + 1
       End If
     
       i=i+1
    loop
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 15
    Par défaut
    Merci pour ta réponse, le problème de la boucle est effectivement résolu mais maintenant, le programme tourne sans donner aucun résultat. J'ai l'impression qu'il tourne dans le vide...

  4. #4
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 904
    Par défaut
    Bonjour,
    Il y a quelque chose que je ne saisit pas.
    Pourquoi n'utilises-tu pas les fonctionnalités d'Access pour ce genre de choses ?

    Par exemple, tu boucles ton message jusqu'à ne plus avoir de valeur (-1).
    Chaque valeur est stockée dans une table d'Access.

    Pour obtenir la valeur min, c'est un DMin et la valeur max, un DMax.
    Pour connaitre le nombre de fois qu'ils apparaissent, il te suffit de faire un DCount avec la condition DMin et DMax.

    C'est une simple idée mais quitte à travailler sous Access, autant exploiter ses fonctionnalité, non ?

  5. #5
    Membre Expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 887
    Par défaut
    Bonjour PinkLady,

    Pour répondre à:
    Ecrivez un programme qui :
    - demande à l'utilisateur combien de valeurs (de type entier) il veut saisir ;
    - saisit ces valeurs en les stockant dans un tableau ;
    - recherche et affiche le nombre d'occurrences des valeurs minimales et maximales du tableau
    Je crois que :
    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
    Private Sub btnTableau_Click()
     
        Dim vaTableau As Variant
        Dim intTableau As Integer, i As Integer, intResult As Integer, intQ As Integer
     
        intTableau = InputBox("Combien d'occurences?") 'Pour répondre à la première demande de ton travail
        vaTableau = InputBox("Saisir les nombres.")  'Pour répondre à la deuxième demande de ton travail
        vaTableau = Split(vaTableau)
        'Première valeur
        intResult = vaTableau(0)
        intQ = 1
        'Pour répondre à la valeur maximale
        For i = 1 To intTableau - 1
        If vaTableau(i) = intResult Then: intQ = intQ + 1
        If vaTableau(i) > intResult Then
            intResult = vaTableau(i)
            intQ = 1
        End If
        Next i
        MsgBox "La plus grande valeur est : " & intResult & " et elle apparait " & intQ & " fois.", vbExclamation
     
    End Sub
    Naturellement il faudrait ajouter certains test sur le retour des inputbox "bouton annuler", "Bon nombre d'occurences" etc.. À adapter selon tes besoins.

    Bonne journée

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 15
    Par défaut
    Bonjour,
    Merci pour vos réponses !
    A Gado2600 : Je n'ai pas utilisé les fonctionnalités Access car cet exercice doit être fait dans le cadre d'une formation et nous n'avons pas encore abordé ces points dans le cours...
    A Robert1957 : Merci pour le code cela me donne quelques pistes. Cependant cela ne répond pas tout à fait à l'énoncé...
    Je continue à travailler dessus !
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déterminer le nombre d'occurences des mots dans un fichiers texte
    Par fraisa1985 dans le forum Général Java
    Réponses: 13
    Dernier message: 26/10/2021, 01h58
  2. Compter nombre de répétitions des valeurs dans un tableau
    Par tabrouri2000 dans le forum Collection et Stream
    Réponses: 16
    Dernier message: 21/03/2021, 20h47
  3. Trouver le nombres d'arrangement des intercalaires dans une suite
    Par bizulk dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 20/02/2012, 11h40
  4. [XL-2003] calcule le nombre de ligne non vide dans une colonne donnée
    Par aefmaaradji dans le forum Excel
    Réponses: 2
    Dernier message: 27/07/2010, 15h08
  5. calculer le nombre d'occurence de mot dans une chaine
    Par hadjiphp dans le forum Langage
    Réponses: 8
    Dernier message: 20/04/2009, 11h06

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