Bonsoir excusez
J'ai un sérieux problème avec mon code vba, je voudrais qu'au lieu de taper le nom des champs après le SELECT qu'il me récupère le nom que je vais entrer dans une zone de text et sélectionner le champs correspondant.
Version imprimable
Bonsoir excusez
J'ai un sérieux problème avec mon code vba, je voudrais qu'au lieu de taper le nom des champs après le SELECT qu'il me récupère le nom que je vais entrer dans une zone de text et sélectionner le champs correspondant.
Bonjour,
donc le champ à ajouter après select est variable; ça peut ressembler à ceci:
Code:
1
2
3
4
5
6 Dim nomchamp As String Dim sql As String nomchamp = Me.zonetxt 'zonetxt est le controle sur le formulaire sql = "Select " & nomchamp & " FROM table;"
Merci j vais essayer et je vous reviens
Super ca marche. Merci beaucoup pour l'assistance
Je veux modifier la valeur qui se trouve dans le champ "monchamp" mais par la suite il se produit une erreur ( trop peu de paramètres)
Code:
1
2
3
4 Private Sub Commande19_Click() CurrentDb.Execute "Update LPAS2_1 Set Prénom= '" & Prenom.Value & "', NOM='" & fname.Value & "', monchamp= '" & analyse1.Value & "' Where Numero =" & Numero.Value & "" Call load_data End Sub
Bonjour,
Avec la commande debug.print, affichez votre requete SQL pour voir ce qui coince
Prenom.Value, fname.value, analyse1.value: d'où viennent ces variables? Ou sont elles définies?Code:
1
2
3
4 Private Sub Commande19_Click() Debug.Print "Update LPAS2_1 Set Prénom= '" & Prenom.Value & "', NOM='" & fname.Value & "', monchamp= '" & analyse1.Value & "' Where Numero =" & Numero.Value & "" Call load_data End Sub
Bonjour,
La valeur de "Numero.Value" est un numérique, ok mais le champ est-il de type texte ou numérique ?
ONTAYG
Bonjour
Au fait j'ai un formulaire dans lequel j'ai ajouter 4 zones de texte dont les noms correspondent a Numero, fname, prenom et analyse1
Mon code vba est supposé prendre les informations telsque le numero, le nom, le prénom et le champ que j vais choisir dans la table LPAS2_1 et les affiches dans un box. Au besoin l'utilisateur doit pouvoir cliquer sur l'information qui l'intéresse pour le modifier.
Jusqu'à la tout va bien sauf que la modification ne s'effectue dans la table. J vous ajoute des images a l'appui
Voici les images de l'explication
aussi c'est pas recommandé du tout de créer un 2ème fil pour poser la même question :calim2:
D'accord c'est compris, vous n'avez toujours pas de nouvelles pour moi ?
J'ai tout tenter mais toujours far
bonjour,
tu n'as toujours pas posté le contenu du Debug.Print demandé plusieurs fois, si tu ne sais pas ce que c'est, tu peux demander comment faire plutôt que d'ignorer la demande ...Citation:
Envoyé par bebouyo
la commande Debug.Print affiche le résultat demandé dans la fenêtre Exécution (surligné en jaune):
Pièce jointe 645359
après, il suffit juste de copier ce qui y est inscrit et de le coller dans un post (tu peux également faire une impression d'écran)
moi, je ne comprend pas ton explication concernant la mise à jour de monchamp:monchamp, est-ce la variable contenant le nom du champ à mettre à jour ?Citation:
j'ai un formulaire dans lequel j'ai ajouter 4 zones de texte dont les noms correspondent a Numero, fname, prenom et analyse1
Mon code vba est supposé prendre les informations telsque le numero, le nom, le prénom et le champ que j vais choisir dans la table LPAS2_1 et les affiches dans un box.
car d'après l'impression d'écran du post #9, cela semble être la note, donc, pourquoi mettre ce champ en variable ?
si c'est vraiment une variable (donc la note de n'importe quelle autre matière) peux-tu montrer par une impression d'écran à partir de quoi tu choisis le champ à mettre à jour ?Code:CurrentDb.Execute "Update LPAS2_1 Set Prénom= '" & Prenom.Value & "', NOM='" & fname.Value & "', monchamp= '" & analyse1.Value & "' Where Numero =" & Numero.Value & ""
Au fait je maitrise pas la fonction debug.print. lorsque je l'intègre dans le code rien ne se passe.
Non monchamp est une variable qui prend le nom des champs de la table LPAS_1
Autrement dit en fonction du choix de l'utilisateur le contenu de monchamp peut etre Anglais ou Français.
Mon code telq je l'ai concu doit m'envoyer les données du champ sélectionné et au besoin l'utilisateur peut modifier une valeur de ce champ. L'affichage est ok mais lorsque l'utilisateur veut modifier une valeur on l'envoie erreur 3061 en disant trop peu de paramètres 1 attendu. Voici le code utilisée pour choisir et afficher le champ a utiliser.
txtmat représente le nom de la liste déroulante où l'utilisateur fait le choix. Cette liste déroulante se trouve dans le formulaire FCohorte d'où l'expression Form_FCohorte.txtmat.valueCode:
1
2
3
4
5
6
7
8
9
10 Private Sub load_data() Dim SQL As String Dim monchamp As String monchamp = Form_FCohorte.txtmat.Value SQL = "Select Numero, NOM, Prénom, " & monchamp & " From LPAS2_1 ORDER BY Numero;" Liste17.ColumnHeads = True Liste17.ColumnCount = 4 Liste17.RowSourceType = "Table/Query" Liste17.RowSource = SQL End Sub
en effet, on croit qu'il ne se passe rien mais la fonction imprime le SQL dans la fenêtre d'exécution de VBA (voir mon post précédent ce qui est entouré en rouge et à l'endroit que j'ai surligné en jaune) ... à l'occasion, tu essaieras pour que tu comprennes comment ça fonctionne.Citation:
Au fait je maitrise pas la fonction debug.print. lorsque je l'intègre dans le code rien ne se passe.
oui, l'erreur vient du fait que monchamp est inconnu dans la table, si Form_FCohorte.txtmat contient le nom du champ correspondant à la matière choisie, il faut mettre monchamp en dehors des guillemets, exactement comme dans ce code que tu viens de poster:Citation:
L'affichage est ok mais lorsque l'utilisateur veut modifier une valeur on l'envoie erreur 3061 en disant trop peu de paramètres 1 attendu
inutile de mettre Value partout, c'est la propriété par défaut par contre, Me. on peut mettre devant chaque contrôle, quand c'est un contrôle qui appartient au formulaire où on crée le codeCode:
1
2
3
4
5
6
7
8
9
10 Private Sub Commande19_Click() Dim SQL As String Dim monchamp As String monchamp = Form_FCohorte.txtmat SQL = "Update LPAS2_1 Set Prénom= '" & Prenom & "', NOM='" & Me.fname & "', " & monchamp & "= '" & Me.analyse1 & "' Where Numero =" & Me.Numero & "" Debug.Print SQL ' permet d'imprimer le SQL dans la fenêtre d'exécution CurrentDb.Execute SQL, dbFailOnError Call load_data End Sub
Merci bien c'est ok maintenant.
Je maitrise pas bien le language vba, quelqu'un aurait un cours ou documents pour que je me perfectionne?