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

Access Discussion :

attente réponse utilisateur dans un formulaire


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Points : 83
    Points
    83
    Par défaut attente réponse utilisateur dans un formulaire
    Bonjour,


    Avant propos :
    je tiens à dire (avant d'en prendre plein la figure) que j'ai recherché (probablement mal) hier soir et ce matin une réponse à ma question et que je n'ai pas trouvé. Je me permets donc de la poser sur le forum.

    Question :
    je souhaite que le code VBA s'arrête pour me permettre de forcer l'utilisateur à remplir un formulaire puis lorsqu'il clique sur un bouton => le code repart

    Je sais pas si c'est possible , peut être un wait qqchose mais je sais pas faire en VBA


    d'avance

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,
    A mon avis....
    Tu devrais insérer dans le code que tu souhaites interrompre (et au bon endroit) l'ouverture de ton formulaire que tu souhaites remplir. Quand le formulaire se ferme, le focus revient au formulaire dont le code est en cours et reprend là ou il s'était arrêté...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Code_à_exécuter()
    .....
    .....
    .....
    ' Interruption du code pour ouverture du formulaire et saisie par l'utilisateur
    DoCmd.OpenForm nomForm etc...
    ' Fermeture du formulaire par une action quelconque du genre un bouton valider qui ferme
    ' A la fermeture du formulaire, le focus ou appel de procédure revient ici et donc le code continu de s'éxécuter.
    ' Tant que le formulaire n'est pas fermé : le code est interrompu.
    ' poursuite de l'éxécution du code
    ....
    ....
    ....
    End sub

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Points : 83
    Points
    83
    Par défaut
    Merci mais ta réponse ne me convient pas : le fait d'ouvrir un formulaire n'arrete pas mon code :

    Ce que je fais précisement :

    1. j'exporte des données vers excel ... tout va bien

    2. je souhaite renommer les onglets(feuillets) d'excel automatiquement,

    3. je veux donc récupère une erreur si mon nom d'onglet dépasse 31 caractères (ou si caractères interdits) et je souhaite à ce moment que l'utilisateur me donne un nom correct

    Merci de me dire si je suis pas clair

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    bloquer l'exécution pour l'utilisation d'un formulaire peut se gérer de la manière suivante

    Citation Envoyé par Code
    Sub WaitNGo()

    On Error GoTo WNG_errHandler

    DoCmd.OpenForm "NomDuForm"

    Do&#160;While&#160;Len(Forms("NomDuForm").name)&#160;<>&#160;0
    &#160;&#160;&#160;&#160;DoEvents
    Loop

    WNG_Closed:
    MsgBox&#160;"Vous&#160;avez&#160;fermé&#160;le&#160;formulaire&#160;...&#160;passons&#160;à&#160;la&#160;suite&#160;..."
    '&#160;reste&#160;de&#160;ton&#160;code

    Exit&#160;Sub

    WNG_errHandler:
    Select&#160;Case&#160;Err.Number
    &#160;&#160;&#160;&#160;Case&#160;2450
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GoTo&#160;WNG_Closed
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Err.Clear
    &#160;&#160;&#160;&#160;Case&#160;Else
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;MsgBox&#160;Err.Number&#160;&&#160;"&#160;-&#160;"&#160;&&#160;Err.Description

    End&#160;Select
    End&#160;Sub
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Points : 83
    Points
    83
    Par défaut
    Merci caféine,
    ca marche super bien mais ca me pose un dernier petit souci que je va essayer de t'expliquer et que je comprends 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
     
    ma fonction
    on error goto code_error
     
    'code qui déroule
     
    'une erreur survient -> je vais à code_error
     
    reprend_le_code : 
    'NOUVELLE ERREUR : il ne va plus à code_error et je sais pas pourquoi !!!
    (j'ai essayer err.clear mais ca change rien)
     
    code_error:
    case err.number :
            j'utilise ta méthode ' ca marche très bien
            goto reprend_le_code '
    j'espère que c'est clair et
    merci pour ton bout de code que je comprends pas mais qui marche à merveille

  6. #6
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    tu dois avoir une boucle pour renommer tes feuilles non ???
    si oui insère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     'une erreur survient -> je vais à code_error
    dans la boucle.
    Comme ça, à chaque erreur tu iras dans code_error

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Points : 83
    Points
    83
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comme ça, à chaque erreur tu iras dans code_error
    ben justement non, je n'intercepte pas l'erreur la deuxième fois, c'est ca mon problème,

    (ce que je fais : je renomme mes feuilles mais je fais pas une boucle toute simple, en fait je parcours un arbre, pour chaque noeud de l'arbre je crée une feuille excel dans laquelle j'exporte des données ...)


    mais si tu sais comment faire une boucle sur le nom des feuilles ca résoudra mon problème (je pense que je vais essayer de résoudre de cette manière la) mais j'aimerais bien savoir pourquoi je n'intercepte pas l'erreur :
    j'ai l'impression qu'à la deuxième erreur il me renvoie l'erreur d'excel que je n'intercepte pas par "on error goto" dans access


    ... mystère ... mystère

  8. #8
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 136
    Points : 163
    Points
    163
    Par défaut
    bonjour à tous

    je quitte à l'instant un sujet qui m'a l'air assez voisin de celui ci

    peux etre que la solution apportee conviendra aussi à Australia


    http://www.developpez.net/forums/viewtopic.php?t=447358

  9. #9
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Si le noms des feuilles est feuille1, feuille2 etc...
    il est simple de faire une boucle dessus avec un compteur et de les renommer.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Points : 83
    Points
    83
    Par défaut
    c'est effectiovement assez simple de renommer les feuilles, c'est la gestion de l'erreur qui me parait compliqué,

    car quand une feuille est renommée avec plus de 31 caractères ==> erreur, les caractères interdits ==> erreur, le même nom qu'une feuille existante ==> erreur

    donc voila ce que je fais :
    une erreur : je demande à l'utilisateur de taper un nom < 31 caractère (et sans carctères interdits) mais si il me tape un nom d'une feuille déjà existante :
    c'est la qu'est mon problème, je pensais qu'il allait revenir à ma même gestion d'erreur et ben non, je n'intercepte pas l'erreur !!!

    et c'est ca que je sais pas résoudre

  11. #11
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Il y a peut être plus d'une solution mais la 1ère qui me vient à l'esprit c'est un peu bourrin mais bon...
    tu stockes les noms des feuilles au fur et a mesure dans un tableau, et à chaque noms de feuille saisie par l'utilisateur : tu compares avec celles déjà saisies. si le nom existe : erreur et tu demandes de resaisir un nom, si pas d'erreur tu stockes le nom dasn le tableau... avec un test pour la 1ère feuille : si le tableau est vide tu passes directement à l'étape enregistrement dans le tableau et tu passes à la feuille 2.
    J'espère avoir été assez clair... et que ce n'est pas trop confu...

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 270
    Points : 83
    Points
    83
    Par défaut
    ok, merci, c'est effectivement un peu bourrin mais je crois bien que je vais être obligé de l'être

    encore merci

    Le travail est à la vie ce que le pétrole est à la mer

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

Discussions similaires

  1. Contrôle sur la saisie d'un utilisateur dans un formulaire
    Par rsvincef1 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/11/2010, 17h27
  2. Réponses: 2
    Dernier message: 15/09/2009, 13h59
  3. Réponses: 2
    Dernier message: 15/09/2009, 13h59
  4. Réponses: 4
    Dernier message: 28/05/2008, 16h04
  5. Réponses: 8
    Dernier message: 27/02/2007, 18h34

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