Besoin d'aide variables... vba

Résolu
starnours -  
 le père -
Bonjour,
Alors voilà mon petit souci :

Le contexte est le suivant : j'ai toute une série de variables : nom1, nom2, nom3,...
Et dans une boucle, j'aimerais modifier les valeurs de ces variables (1er tour de boucle, on change la valeur de nom1 au second, nom2,....
donc, j'ai pensé à l'idée suivante :
on crée un variable XX dans laquelle on met "nom" concaténé d'1 numéro (un compteur dans la boucle)

Mais ensuite, comment faire pour utiliser la variable dont le nom est la valeur de ma variable XX ??

(vous m'avez suivi?)

Merci d'avance pour votre aide
Configuration: Windows XP
Internet Explorer 6.0

17 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Tu te compliques la vie.
    Utilise plutôt un tableau. dim nom(15) par exemple.
    Tu fais ta bloucle, et tu changes la variable nom(i), et voilà ;)

    Cordialement
    0
  2. starnours
     
    arf, oui, ca marcherait, mais j'ai donné un cas général, en fait mes variables sont des champs. ET là, ca se complique
    0
  3. starnours
     
    ou alors comment s'arranger pour changer une liste de champs dans un parcours de boucle?
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Je connais pas trop le VBA, donc je peux pas trop d'aider. Mais il doit bien y avoir possibilité d'effectuer des groupes de contrôles et ainsi avoir accès à divers champs avec juste l'aide d'une indice. En gros champ(1) champ(2) etc.
    J'espère qu'une personne s'y connaissant t'aidera, car ce n'est pas trop mon domaine ;)

    Cordialement
    0
  6. starnours
     
    Si ça pouvait marcher comme ça, je serais bien! Avec le nombre de champs que j'ai , ça serait vraiment le top!
    Quelqu'un sait-il si c'est possible?
    0
  7. le père
     
    Bonjour

    Peux-tu donner un exemple de ligne où tu utilises une variable dont le nom est la valeur de ma variable XX ?
    0
  8. starnours
     
    justement, c'est ma question! j'aimerais savoir si c'est possible
    0
  9. le père
     
    Je pose cette question parce qu'au post 2 tu dis
    en fait mes variables sont des champs. ET là, ca se complique
    Alors que c'est exactement le contraire. Si ce sont des noms de champs, tu ne les utilises pas comme des variables VB mais dans des chaînes correspondant à des requêtes et là ça devient très facile.
    Ecris une instruction VB comportant une l'utilisation d'un champ dont le nom est dans une variable, même si tu as peur d'écrire une c..nerie, c'est juste pour m'assurer que je comprends bien ce que tu veux et te donner une version corrigée si je peux.
    0
  10. starnours
     
    Je sais pas si j'ai réussi à te comprendre et à me faire comprendre :
    en gros :
    j'ai toute une série de champs dans mon formulaire ainsi que'une série de valeur dans ma table. Donc, à l'aide d'une boucle, j'aimerais remplir tous les champs avec les valeurs de ma table. Le problème vient juste du fait que je ne sais pas comment selectionner un champ puis le suivant, puis le suivant... dans ma boucle pour les remplir (c'est pourquoi j'avais pensé à utiliser un tableau qui conteindrais des noms de variables... et tout l'tralala, mais je crois que c'est compliqué cette histoire de tableau).
    0
  11. le père
     
    Suppososns que tu aies un seul champ à remplir
    Peux-tu montrer avec quel code tu le ferais ? (pour piocher dans ta table, puis mettre dans ton formulaire)
    Ensuite, indique quels éléments doivent changer pour traiter chacun des champs
    0
  12. le père
     
    Pardon, supposons plutôt que tu aies 3 champs à remplr applelés Champ1, Champ2 et Champ3
    Peux-tu montrer avec quel code sans boucle tu le ferais ?
    0
  13. starnours
     
    Pour remplir 3 champs, sans boucle :

    Dim RS As Recordset
    Dim base As Database
    Dim requete As String
    Dim num_assoc As Integer

    num_assoc = [...].Value

    requete = " SELECT [id_AssocLignePrix] FROM [Association Prix Ligne] WHERE [id_ligne_associée] = " & num_assoc & "; "

    Set base = CurrentDb
    Set RS = base.OpenRecordset(requete, dbOpenSnapshot)

    Champ(1) = RS(0)
    RS.Movenext
    champ(2) = RS(0)
    RS.Movenext
    champ(3) = RS(0)

    Set RS = Nothing
    0
  14. starnours
     
    Voila plus précisement c'que ça donne en évitant les erreurs...

    requete = " SELECT cNomFou FROM [Association Prix Ligne] WHERE [id_ligne_associée] = " & num_assoc & "; "

    Set base = CurrentDb
    Set RS = base.OpenRecordset(requete, dbOpenSnapshot)

    Dim veh As String
    Dim Nbre_ligne_requete As Integer

    If RS.RecordCount > 0 Then
    RS.MoveLast
    Nbre_ligne_requete = RS.RecordCount 'on compte le nombre de lignes
    RS.MoveFirst
    cpt = 1
    'MsgBox Nbre_ligne_requete
    '--------------------------------------------------------------
    If cpt <= Nbre_ligne_requete Then
    Me![supplier1].Value = RS(0)
    cpt = cpt + 1
    If cpt <= Nbre_ligne_requete Then
    RS.MoveNext
    Me![supplier2].Value = RS(0)
    cpt = cpt + 1
    If cpt <= Nbre_ligne_requete Then
    RS.MoveNext
    Me![supplier3].Value = RS(0)
    cpt = cpt + 1
    If cpt <= Nbre_ligne_requete Then
    RS.MoveNext
    Me![supplier4].Value = RS(0)
    End If
    End If
    End If
    End If
    0
  15. le père
     
    Je crois que nous allons finir par nous comprendre ;)

    dim k%
    do while k<=Nbre_ligne_requete 
      me.controls("supplier" & k).value = RS(0)
      if k<Nbre_ligne_requete  then RS.MoveNext 
      k=k+1
    loop


    Tout est dans la syntaxe Me![supplier3] <-> me.controls("supplier3")...
    0
    1. le père
       
      avec for k=1 to ... ça écite d'oublier l'initialisation de k
      0
  16. starnours
     
    super! ca marche, merci pour ton aide! t'es vraiment un père pour moi :D !
    0