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 :

Créer des variables par code


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut Créer des variables par code
    Je m'explique:
    je voudrais savoir si on peut faire un truc de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do Until I = 10
      Dim Variable & I as string
      I = I + 1
    Loop
    pour plus tard faire comme ça :
    ... vous voyez où je veux en venir ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 678
    Par défaut
    salut touaa
    pas d'idée directement, mais peux-tu nous dire la finalité de cette multiplication de variable stp ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut
    C'est compliqué.....

    mais je veux bien essayer de m'expliquer, ça va être long.

    J'essaye de faire une exportation de données vers un fichier texte.

    Pour cette exportation, je sélectionne certains champs d'une table.
    à chaque enregistrement, je dois regarder chaque champ, comme le nom, l'ID, etc...
    Pour chacun de ces champs, je dois les exporter de façon particulière: en texte ou numérique, mais c'est pas simple, le fait que ce soit texte ou numérique n'a pas forcément de relation avec les paramètres des champs de ma table.

    Donc pour retrouver ce type, j'ai une table de paramètres qui regroupe chacun des noms des champs. (nomChamp, TypeChamp)

    Donc, pour en revenir à mon exportation, le souci qui se pose est le suivant:
    à chaque enregistrement, pour chaque champ je fais un check de ma table paramètres.
    Donc en gros, ça fait ça:
    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
    Do Until Rst.EOF
        I = 0
        Req1 = ""
        Req2 = ""
        While I < Rst.Fields.Count
            If Not IsNull(Rst(I)) Then
                Crit = "Nomchamp like '" & Rst.Fields(I).name & "'"
                Rst2.FindFirst Crit
                Crit = TrouverTypeChamp(Rst2![TypeChamp])
                Call AddRequete.AddRequete(Req1, Req2, Rst.Fields(I).name, Replace(Rst(I).Value, "'", "''"), Crit)
            End If
            I = I + 1
        Wend
        Crit = "/* " & J & " */ INSERT INTO " & Me.ComboBd & " (" & Req1 & ") VALUES (" & Req2 & ");"
        Call CreaAjoutFichier.AjoutLigneDansFichier(Chemin & "\" & NomFichier, Crit)
        J = J + 1
        Progress.Value = J - 1
        Rst.MoveNext
    Loop
    Le problème, c'est qu'à chaque enregistrement, je fais le check de la table params (mon rst2), alors que c'est inutile.
    Ce qui, en temps, est énorme. pour 15000 enregistrements, contenus dans une table qui a 12 champs différents, 15000*12 checks... TROP LONG

    J'aurais préféré créer X variables, qui ont le nom du champ, et qui prennent comme valeur "int" ou "str", et faire allusion à ces variables à chaque fois.
    Mais le souci, c'est que le nom des champs change, et le nombre n'est pas fixe.
    Donc je voulais savoir si, après avoir comté le nombre de champs, on peut créer des variables avec le Do Until puis Loop.

    Voilà, je me prends peut-être trop la tête, si ça se trouve il y a beaucoup plus simple.

    ................Tu as compris ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 678
    Par défaut
    oki,
    et pourquoi n'utilises-tu pas une collection dans ce cas là ?
    Mais d'après ce que je crois comprendre de ton énoncé, il me semble qu'il n'est pas non plus nécessaire d'avoir X variables...
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut
    Je ne sais pas utiliser les collections ! si tu as un tuto en tête je suis preneuse !

    Pour le nombre de variables X, si il change, en fonction de la table à exporter !

    (et oui, dommage....)

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 407
    Par défaut
    Oui, une collection ou un tableau serait le bon outil.

    L'intérêt de la collection est que tu peux y ajouter des objets. L'exemple de l'aide d'Access fait justement cela. (tu vas en mode programme, tu tape Collection, tu sélectionne collection et tu appuis sur F1)

    Un tableau est plus primaire mais peut trés bien faire la job.

    Pour définir un tableau :

    Dim monTableau(10) as string (Attention la numérotation commence à 0 donc c'est un tableau de 11 éléments !).

    Les fonctions LBound(monTableau) and UBound(monTableau) te donne l'indice du 1er élément et du dernier.

    L'instruction Redim est aussi trés utile pour agrandir un tableau.

    Mais si tu as le temps investit le dans l'étude de l'objet Collection, c'est bien plus puissant qu'un tableau.

    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.

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

Discussions similaires

  1. [AC-2010] Créer des champs par Code
    Par morobaboumar dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/03/2020, 22h47
  2. [WD17] créer des variables par programmation
    Par alex1005 dans le forum WinDev
    Réponses: 4
    Dernier message: 22/02/2013, 11h31
  3. créer des variables javascript dynamiquement dans un code php
    Par lau_the_raptor dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 14/07/2007, 12h10
  4. Réponses: 9
    Dernier message: 31/07/2006, 21h19
  5. [VB6] Datagrid afficher ou cacher des colonnes par code
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 06/02/2003, 17h19

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