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 Access Discussion :

Appel d'une sous macro dans une macro


Sujet :

Macros Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut Appel d'une sous macro dans une macro
    Bonjour

    Je souhaite appeler dans une macro, une sous macro avec retour au point initial après exécution de la sous macro j'ai fais un truc du style

    A.......
    ......
    SOUSPROC1
    C
    ..........
    .....
    SOUSPROC2
    E
    ......
    ...


    Sub SOUSPROC1
    B
    .......
    .....
    end sub

    Sub SOUSPROC2
    D
    .......
    .....
    end sub


    ou ABCDE indique le cheminement qu'il doit adopter
    mais cela ne fonctionne pas
    Le programme exécute tout à la suite sans tenir compte de mes appels à SOUSPROC1 et SOUSPROC2
    Quelqu'un peut-il m'aider ?
    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Bonjour,

    Je ne suis pas sur de bien comprendre. Tu parles de quoi ?

    De macro ?
    De procédure ?
    De fonction ?

    Et ce que tu appelles cheminement, qu'est-ce que c'est ? Tu pourrais préciser ?

    Cordialement,

    Geache

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    voici un extrait du code en PJ
    JUILLET et AOUT sont mes sous macros et la principale est das la 1ère partie du script

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Si tu fais appel à tes procédures Juillet et Aout, comme tu ne passes pas le paramètre [QUI] à ces procédures, rien ne sera exécuté.

    Au lieu de faire l'appel par
    JUILLET
    et
    AOUT

    tu dois définir le paramètre [QUI] dans chaque procédure, puis réaliser l'appel par
    CALL JUILLET([QUI])
    et
    CALL AOUT([QUI])

    Au passage, je trouve ton code drôlement compliqué.

    Cordialement.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    j'en suis conscient mais je ne suis pas une bête de compét access!!!
    je t'ai joins le code complet
    le but est de tester la date de la facture puis en fonction des valeur de technicien, Technicien1, Technicien2 et Technicien3 d'alimenter des cumuls par techniciens
    J'ai tenter ce que tu m'as indiquer sur une facture de JUILLET dont les valeurs des techs étaient 11,3,2 et 15 mais il m'incrémente la même valeur (FACTURE.TotalHT×Sens/[TECH]) (pour uniquement le Technicien3) pour tous les mois
    Fichiers attachés Fichiers attachés

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Pour ce qui est du code compliqué... le monde ne s'est pas fait en un jour.

    Par contre... tu exécutes ce code dans quoi ? J'ai l'impression que tu fais cela dans un rapport (ou un état (?) en français)

    Serait-il possible d'avoir la structure de ta table facture ?

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    C'est un FEP de Batigest

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Au risque de paraître idiot... c'est quoi un FEP, c'est quoi BATIGEST ?

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    FEP c'est un état dans SAGE BATIGEST qui est un logiciel spécifique batiment développé par SAGE
    Je n'arrive pas à éditer la structure de la table sous ACCESS comment dois-je faire ?
    Merci

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Si tu as accès au code-source (puisque tu es en train de programmer), tu devrais avoir accès aux tables, et donc accès à la fenêtre de conception de la table Factures.

    A partir de là, tu dois pouvoir voir la liste des champs de ta table et leurs caractéristiques. C'est cette liste que j'appelle la structure de ta table. Tu peux en faire une copie écran ?

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Je t'ai mis le début et la fin de la table Facture
    Images attachées Images attachées   

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Je vous ai mis juste le début et la fin car l'entre deux ne nous concerne pas

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    STRUCTURE
    Images attachées Images attachées   

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    J'aurai pu contourner ma sous procédure en gérant mon cumul ainsi
    "[S" & FACTURE.Technicien & "01]"="[S" & FACTURE.Technicien & "01]"+(FACTURE.TotalHT×Sens/[TECH])
    mais ma variable globale ne se calcule pas
    Sais tu pourquoi ?

  15. #15
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Whouaouw !

    Je vais continuer d'essayer de t'aider sur ce coup là, mais en voyant ta table Factures... je suis sûr à 99.999 % que tes tables mériteraient une normalisation.

    Tu as donc bien tes 3 champs Techniciens dans ta table.

    La question que je me pose, maintenant, c'est : à partir de quoi lances tu l'impression de ton état ?

    Un bouton dans un formulaire ?
    Une procédure dans un formulaire ?
    Une procédure dans un module ?

    Bonne journée.

  16. #16
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Citation Envoyé par Progaccess76 Voir le message
    J'aurai pu contourner ma sous procédure en gérant mon cumul ainsi
    "[S" & FACTURE.Technicien & "01]"="[S" & FACTURE.Technicien & "01]"+(FACTURE.TotalHT×Sens/[TECH])
    mais ma variable globale ne se calcule pas
    Sais tu pourquoi ?
    Sauf grossière erreur de ma part, tu n'affectes pas le résultat à une variable, dans ce cas. Le fait de commencer par des guillemets fait que tu essaies d'affecter un résultat à une chaîne de caractères.

    D'autre part, dans la formule de gauche, tu essaies d'additionner une chaîne de caractères au résultat d'un produit.

    Il faudrait que je puisse tester ce que je raconte, mais je suis quasi certain de ne pas me tromper.

    Cordialement,

    Geache.

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    J'en suis convaincu aussi
    N'y aurait-il pas une fonction du style val() qui permettrait affecter un montant à la variable
    du style val("[S" & FACTURE.Technicien & "01]")
    j'ai essayé mais cela ne marche pas et pourtant ma chaine est bien du style [S101] quand je la visualise dans mon état
    j'ai rien trouvé
    Connais-tu une fonction qui me permet de considérer ma chaine "[S" & FACTURE.Technicien & "01]" comme étant la VARIABLE [S101] ?
    Parce que si je trouve cela je simplifie énormément le code et évites mes sous macro

  18. #18
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Depuis hier, ton code m'interpelle. Mais je me disais que puisque tu utilisais une version française de MS ACCES, il était possible qu'il y a ait des différences dans la structure des instructions que tu utilisais.

    Par exemple,

    Je vois dans ton code

    GLOBAL [S101],[S102], etc...

    Pour moi, en version anglaise de l'application, une valeur entre [] correspond à un champ d'un formulaire ou d'un état.

    Mais, que ce soit en formulaire ou en état, si je tape GLOBAL [S101], je n'ai même pas le temps d'indiquer le deuxième champ potentiel. J'ai directement un message d'erreur "Compile error Expected : identifier". Mais soit, admettons que cela fonctionne chez toi.

    Par contre, si je tape l'instruction :

    GLOBAL S01 as string <=== Remarque au passage que je n'utilise plus de crochets

    Alors, j'ai mon instruction et ma variable qui sont prises en compte.


    Autre chose, tu devrais t'attacher à résoudre le code redondant. Par exemple, ton code reprend quelque chose comme ceci :

    Code Pseudo-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
            si format(FACTURE.Date,"mmm")="nov"  alors 
                si FACTURE.Technicien <> "" alors [QUI]=FACTURE.Technicien
                NOVEMBRE 
                finsi
                si FACTURE.TECHNICIEN1 <> "" alors [QUI]=FACTURE.TECHNICIEN1
                NOVEMBRE 
                finsi
                si FACTURE.TECHNICIEN2 <> "" alors [QUI]=FACTURE.TECHNICIEN2
                NOVEMBRE
                finsi
                si FACTURE.TECHNICIEN3 <> "" alors [QUI]=FACTURE.TECHNICIEN3
                NOVEMBRE
                finsi
            FINSI
            si format(FACTURE.Date,"mmm")="dec"  alors 
                si FACTURE.Technicien <> "" alors [QUI]=FACTURE.Technicien
                DECEMBRE 
                finsi
                si FACTURE.TECHNICIEN1 <> "" alors [QUI]=FACTURE.TECHNICIEN1
                DECEMBRE
                finsi
                si FACTURE.TECHNICIEN2 <> "" alors [QUI]=FACTURE.TECHNICIEN2
                DECEMBRE 
                finsi
                si FACTURE.TECHNICIEN3 <> "" alors [QUI]=FACTURE.TECHNICIEN3
                DECEMBRE 
                finsi     
            FINSI

    Tu multiplies le risque d'erreurs et tu ne te facilites vraiment pas la tâche en cas de modifications ultérieures.
    Il vaudrait mieux que tu explores la piste suivante :

    Code Pseudo-code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
             strMois = format(FACTURE.Date,"mmm")
             si FACTURE.Technicien <> "" alors [QUI]=FACTURE.Technicien
                    Call CALCPARMOIS(strMois)
             finsi
             si FACTURE.TECHNICIEN1 <> "" alors [QUI]=FACTURE.TECHNICIEN1
                    Call CALCPARMOIS(strMois)
             finsi
             si FACTURE.TECHNICIEN2 <> "" alors [QUI]=FACTURE.TECHNICIEN2
                    Call CALCPARMOIS(strMois)
             finsi
             si FACTURE.TECHNICIEN3 <> "" alors [QUI]=FACTURE.TECHNICIEN3
                    Call CALCPARMOIS(strMois)
             finsi

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub CalcParMois(strMois as string)
     
            SELECT CASE(strMois)
                  case is = "Jan":
                      Instructions du mois de janvier
                  case is ="Fev":
                      Instructions pour le mois de février
                  etc...
     
                  case else:
                     Instructions pour le cas ou strMois ne correspondrait à aucun mois.
            END SELECT
    End Sub

    Cela te permettrait ainsi d'économiser pas mal de lignes de code et d'éviter des erreurs.

    Cordialement,
    Geache.

  19. #19
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Citation Envoyé par Progaccess76 Voir le message
    J'en suis convaincu aussi
    N'y aurait-il pas une fonction du style val() qui permettrait affecter un montant à la variable
    du style val("[S" & FACTURE.Technicien & "01]")
    j'ai essayé mais cela ne marche pas et pourtant ma chaine est bien du style [S101] quand je la visualise dans mon état
    j'ai rien trouvé
    Connais-tu une fonction qui me permet de considérer ma chaine "[S" & FACTURE.Technicien & "01]" comme étant la VARIABLE [S101] ?
    Parce que si je trouve cela je simplifie énormément le code et évites mes sous macro
    En access, tu peux écrire tes propres fonctions.

    Par exemple, imaginons que je veuille calculer une surface,

    Je vais créer une Fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Surface(intLongueur as integer, intLargeur as integer) as integer
    Surface = intLongueur * intLargeur
    end function
    Si je veux utiliser cette fonction, je l'appellerai par son nom et en lui passant les paramètres nécessaires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonRectangle = Surface(6,4)
    Ma fonction me renverra la valeur 24 qui sera affectée à ma variable MonRectangle.

    Geache

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Je suis d'accord avec toi mais par exemple dans ma variable [S102] par exemple j'ai 2 variables "1" = N° du salarié et "02"= mois de février et mon état ressemble à la PJ "ss"
    pour être bien et efficace il faudrait que dans ma formule de cumul et dans l'identification de la variable je puisse intégrer des valeurs de rubriques de ma table facture
    ex :"[S" & FACTURE.Technicien & "01]" que le logiciel identifierait comme étant la variable [S101] pour le technicien 01 et le mois de Janvier
    Le souci c'est qu'il considère dans le code que la variable [S101] n'est pas reconnue sous la forme "[S" & FACTURE.Technicien & "01]".
    c'est pour cela que je cherche une fonction qui pourrait être du style variable("[S" & FACTURE.Technicien & "01]")=variable("[S" & FACTURE.Technicien & "01]")+........Et si je trouve cette fonction c'est gagné !
    J'ai essayé des variables sans crochets mais cela ne change rien
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  2. Réponses: 9
    Dernier message: 30/05/2006, 17h55
  3. je cherche une sous chaine dans une chaine
    Par avprive dans le forum C++
    Réponses: 3
    Dernier message: 17/03/2005, 01h48
  4. Rechercher une sous chaine dans une chaine
    Par annedjomo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/02/2005, 10h36
  5. Rechercher une sous chaine dans une chaine
    Par Oluha dans le forum ASP
    Réponses: 4
    Dernier message: 03/02/2005, 14h39

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