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 :

saisie et recherche département


Sujet :

VBA Access

Vue hybride

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Points : 11
    Points
    11
    Par défaut saisie et recherche département
    Bonjour,

    Etant débutant en programmation et ayant repris sur un BTS IG en alternance option dev après un début caothique de ma vie proféssionnelle, je vous demande à l'aide.

    Voila, maintenant que ma présentation est faite je vous explique mon problème !!

    Pour être plus clair :

    Notre prof de programmation en VBA nous a demandée un algorithme permettant de faire la saisie de 99 départements avec une recherche par numéro département ou nom département.

    - L'utilisateur devra saisir les 99 départements lui même. La syntaxe des saisie devra être numéro_département suivi d'un espace et du nom_département.
    - Les données devront être stockées dans un tableau.
    - une recherche par numéro ou nom département devra être possible.

    Ci-dessous le début de mon code : (on se moque pas ^^)

    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 dep()
    Dim compteur As Integer
    Dim tableau(99) As String
    Dim numdep As Integer
    Dim nomdep As String
    Dim saisie As String
     
     
    For compteur = 1 To 99
     
        saisie = InputBox("Veuillez rentrer le numéro d'un département suivi de son nom")
        numdep = Left$(saisie, 2)
        tableau(compteur) = numdep ' j'arrive a extraire le numéro departement mais pas le nom
     
    Next compteur
    Debug.Print numdep
       End Sub
    En vous remerciant par avance de votre aide.

    Cordialement,

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 335
    Points : 23 793
    Points
    23 793
    Par défaut
    Bonjour normalement le forum ne répond pas au devoir de classe mais comme tu as déjà fait l'effort de proposer une réponse je vais répondre à la question : Comment récupérer le libellé ?

    La commande à utiliser est Mid().

    Note que dans ta solution tu enregistres le numéro de département ... mais où vas-tu mettre le nom du département ?

    Bon succès dans tes études.

    A+
    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 à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Bonsoir,

    J'ai réussi à prendre l'autre partie avec nomdep = Mid(saisie, 4, 20) Maintenant se pause la grande question des conditions et je ne sais pas si mon mid va m'aider pour çà ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    numdep = Left$(saisie, 2)
        tableau(compteur) = numdep
        nomdep = Mid(saisie, 4, 20)
            If numdep > 2 Or numdep = 0 Then
                numdep = MsgBox("attention")
            End If
    J'aimerais dire si numdep > 2 caractères (et non supérieur au chiffre 2 ) alors msgbox erreur. Dois je mettre une boucle ? J'ai essayé mais ma boucle se lance et ne s'arrête plus ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    For compteur = 1 To 2
        saisie = InputBox("Veuillez rentrer le numéro d'un département suivi de son nom")
     
            While numdep <> 2 'caractere
                saisie = InputBox("Veuillez rentrer le numéro d'un département suivi de son nom")
            Wend
     
        numdep = Left$(saisie, 2)
        tableaunum(compteur) = numdep
        nomdep = Mid(saisie, 4, 20)
        tableaunom(compteur) = nomdep
     
    Debug.Print numdep & nomdep
    Next compteur
    Par la même occasion, si l'utilisateur vient à taper le nom du département avant le numéro. Comment dois je m'y prendre?

    Merci de m'avoir répondu !

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 335
    Points : 23 793
    Points
    23 793
    Par défaut
    Bon évidement j'ai toutes les réponses :-) ... mais comme je l'ai dit précédement, il est meilleur que tu fasses ton apprentissage par toi-même.

    Déjà tu a un problème ici numdep <> 2. Tu compares une chaines de caractères d'au plus 2 caractères (à cause de Left()) avec le chiffre 2. Donc cela ne devrait marché que si ton utilisateur a tapé "2" et rien d'autre.

    Pour pouvoir avancer autrement qu'au hazard, il serait préférable que tu lises au moins une fois la liste des fonctions de VBA. Concentres toi sur celles qui manipulent les chaînes car c'est celle dont tu vas avoir besoin dans l'immédiat.

    Ce que tu veux vérifier finalement c'est que le code du département soit supérieur ou égale à 00 et que le code du département soit inférieur ou égale à 99 (et n'oublie pas que ce sont des chaînes de caractères).

    Si ces condition ne sont pas remplies, probablement que l'utilisateur s'est trompé et qu'il n'a pas respecter ton format.

    A+
    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.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2010
    Messages : 47
    Points : 60
    Points
    60
    Par défaut
    Bonjour

    Petite contribution au problème posé : attention aux numéros de département d'outre-mer ils ont 3 chiffres.
    Bon travail.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 335
    Points : 23 793
    Points
    23 793
    Par défaut
    Merci Norson et dans cas le test sur 00 à 99 ne marche pas.
    Donc il conviendrait aussi de vérifier que 3ième caractères est bien un espace.

    A+
    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.

  7. #7
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    Une solution avec un type défini et la fonction Split
    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
     
    Type dep          'définition du type de variable
     texte As String
     NumDep As String
     departement As String
    End Type
     
    Sub traitement(d As dep) 'la procedure qui éclate le texte
     Dim s() As String
     s = Split(d.texte, " ")      'on eclate le texte dans un tableau
     d.NumDep = s(0)            'le premier est le numéro du département
     d.departement = ""
     For i = 1 To UBound(s)    'on concatène le reste
      d.departement = d.departement & s(i) & " "
     Next i
    End Sub
     
    Sub test()
     Dim s As dep
     s.texte = "21 Code d'or"    'on initialise le texte
     Call traitement(s)
     Debug.Print s.NumDep, s.departement  'on affiche le résultat dans la fenêtre Execution
    End Sub

Discussions similaires

  1. Recherche rapprochement sur une saisie
    Par fixfix dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 22/02/2007, 15h19
  2. Recherche de nom avant saisie
    Par svegliu dans le forum Access
    Réponses: 16
    Dernier message: 04/10/2006, 10h33
  3. Champ de saisie recherche Mac
    Par letoff dans le forum 4D
    Réponses: 3
    Dernier message: 09/08/2006, 11h23
  4. Réponses: 2
    Dernier message: 09/12/2005, 12h23

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