Besoin d'aide variables... vba
Résolu/Fermé
A voir également:
- Besoin d'aide variables... vba
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba dépassement de capacité ✓ - Forum Excel
17 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
14 févr. 2008 à 13:37
14 févr. 2008 à 13:37
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
14 févr. 2008 à 16:41
14 févr. 2008 à 16:41
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
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
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?
Quelqu'un sait-il si c'est possible?
Bonjour
Peux-tu donner un exemple de ligne où tu utilises une variable dont le nom est la valeur de ma variable XX ?
Peux-tu donner un exemple de ligne où tu utilises une variable dont le nom est la valeur de ma variable XX ?
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.
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.
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).
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).
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
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
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 ?
Peux-tu montrer avec quel code sans boucle tu le ferais ?
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
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
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
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
Je crois que nous allons finir par nous comprendre ;)
Tout est dans la syntaxe Me![supplier3] <-> me.controls("supplier3")...
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")...