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 :

boucler une fonction sur tous les résultats d'une requete !


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut boucler une fonction sur tous les résultats d'une requete !
    * Bonjour, *

    Je cherche mais je ne trouve pas !! aie aie aie !

    je dispose d'un formulaire dans lequel se trouve les resultats d'une requete auquel je veus soumettre les uns apres les autres une fonction de traitement d'image.

    j'ai fini la foncton pour l'enregistrement en cour ou selectionner, mais je veus pouvoir appliquer cette fonction a l'ensemble des résultats. Y a t'il une commande du type : " For each" et si oui comment l'appliquer?
    Et si non, faut il creer une boucle qui reprend le nombre total des enregistrement, et qui va lire les enregistrement ligne par ligne ? (ce que j'ai fait, mais je bloque sur le code vba pour indiquer quel ligne a lire j'ai essaye avec range mais ca marche pas :

    voici mon bout de code (j'ai simplifier pour plus de clartée)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function adobephotoshopboucletest()
      Dim ligne
      ligne = 1
      For i = 1 To 5
              Range("ligne").Select
               droplet1 = Forms![form select article]![Pro_vm_product_cheval1_2012 sous-formulaire]![droplet][3]
               'mainurl1 = Forms![form select article]![Pro_vm_product_cheval1_2012 sous-formulaire]![MaiimageURL](ligne)
               'strfile1 = Forms![form select article]![Pro_vm_product_cheval1_2012 sous-formulaire]![Image](ligne)
               MsgBox "Vous avez sélectionné le fichier : " & droplet1, vbInformation
               'call photoshop_boucle
        ligne = ligne + 1
      Next
      End Function
    * Merci *

  2. #2
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    Est-ce possible de décrire un peu plus c'est quoi exactement un "enregistrement" dans votre cas (listebox, requete DAO, lignes dans une feuille, etc...) Alors il sera probablement possible d'utiliser un FOR EACH et de l'appliquer au type d'enregistrement.

    Merci!

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut suite
    je suis dans access et une requête me donne un certain nombre de résultats affichés sous forme de ligne. il faut que je récupère pour chacune des ligne 3 champs ou valeurs pour les transmettent à une fonction. Cette fonction traite l'image puis doit recommencer avec la ligne suivante. etc jusqu’à épuisement des lignes.

  4. #4
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    En utilisant le DAO (une référence est nécessaire)
    Le code suivant te permet de boucler dans une requête et de passer en paramètre les champs de la requêtes :
    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
    Sub aaa()
         Dim rstRequete As DAO.Recordset
         Set rstRequete = CurrentDb.OpenRecordset("SELECT * FROM MaTable")
         If rstRequete.RecordCount > 0 Then
              If Not rstRequete.EOF Then
                   rstRequete.MoveFirst
                   Do Until .EOF
                        Call MaFunction(rstRequete.Fields("Champ1"), rstRequete.Fields("Champ2"))
                        rstRequete.MoveNext
                   Loop
              End If
         End If
         rstRequete.Close
         Set rstRequete = Nothing
    End Sub
    Il te reste à adapter!

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut deja merci beaucoup, mais !!
    le mais est le suivant , j'ai adapter nickel, et toujour pour tester, j'apelle en premier une mesbox et ca marche. la boite s'affiche avec chaque enregistrement.

    le probleme intervient lorsque je fais le call avec ma fonction, il opere une premiere boucle avec le traitement des images, revient sur le DAO pour effectuer une seconde boucle et se stop en erreur sur le call avec un message d'erreur
    Erreur dexecution 13 : incompatibilité de type

    voici le code :
    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 boucle_fichier_image()
         Dim rstRequete As DAO.Recordset
         Set rstRequete = CurrentDb.OpenRecordset("SELECT * FROM [Pro_vm_product_cheval1_2012]")
         If rstRequete.RecordCount > 0 Then
              If Not rstRequete.EOF Then
                   rstRequete.MoveFirst
                   Do Until rstRequete.EOF
     
                   droplet1 = rstRequete.Fields("droplet")
                   mainurl1 = rstRequete.Fields("MaiimageURL")
                   strfile1 = rstRequete.Fields("image")
                        Position = InStr(droplet1, "R")
                        If Position = 0 Then
                        strfile1 = "jpeg_rect\" & strfile1 & ".jpg"
                        Else:
                        strfile1 = "jpeg_rond\" & strfile1 & ".jpg"
                        End If
                'MsgBox "Vous avez sélectionné le fichier : " & droplet1 & "   " & mainurl1 & "    " & strfile1, vbInformation
                Call testadobephotoshop(droplet1, mainurl1, strfile1)
                        rstRequete.MoveNext
                   Loop
              End If
         End If
         rstRequete.Close
         Set rstRequete = Nothing
    End Sub

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Salut,

    Tu n'aurais pas une valeur nulle dans ta source ?

    As-tu essayé un pas à pas détaillé pour scruter ta fonction ?

    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut bref !!
    en faite l'erreur apparait des que je fait le call a une fonction, le Enf fonction produit l'erreur.

    j'ai donc inclut toute la procedure en lieu et palce du call et l'affaire roule toute seul.

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

Discussions similaires

  1. [MySQL] Remplir une liste déroulante avec les résultats d'une fonction
    Par Anibel dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 29/10/2013, 11h39
  2. Réponses: 4
    Dernier message: 08/03/2013, 11h04
  3. Réponses: 1
    Dernier message: 25/05/2011, 07h16
  4. boucler sur tous les optionbutton d une feuille de calcul
    Par patbou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/03/2008, 19h48
  5. Réponses: 4
    Dernier message: 29/09/2005, 11h50

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