Faire référence à un nom de champ dans ma fonction vba
Résoluyg_be Messages postés 23392 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 - 31 janv. 2024 à 21:14
- Faire référence à un nom de champ dans ma fonction vba
- Fonction si et - Guide
- Reference pto - Accueil - Box & Connexion Internet
- Nom de l'adresse - Forum Réseaux sociaux
- Trouver une adresse avec un nom de famille gratuit ✓ - Forum Mobile
- Annuaire portable gratuit a partir d'un nom - Forum Réseaux sociaux
2 réponses
31 janv. 2024 à 09:47
bonjour,
Il me semble qu'il y a plusieurs anomalies dans ton code.
Pour commencer:
- Ma_table me semble parcourir la mauvaise table
- Au lieu de faire appel à une requête update, il est préférable d'utiliser les fonctions edit et update de VBA.
- Pourquoi ne pas utiliser NomChampC comme second paramètre de la fonction CharEspacesD?
31 janv. 2024 à 20:29
Bonjour à vous,
Grâce à votre réponse, j'ai modifié mes codes pour faire référence directement à la bonne table, ce qui simplifie beaucoup mes codes. Merci beaucoup!
Ce que je n'avais pas pensé, c'est que je tentais de faire un DLookup dans ma fonction alors que je pouvais la faire à l'extérieure et ajouter le résultat comme deuxième paramètre à ma fonction. C'est ce que j'ai fait et ça fonctionne très bien.
J'ai aussi pris le temps de regarder ce que vous me proposiez avec les fonctions edit et Update que je trouve très intéressant d'ailleurs, mais mon manque d'expérience me ramenait à mon problème de nom de champ.
Merci beaucoup d'avoir pris le temps de m'aider, c'est très apprécié! :)
Voici donc ce qui fonction pour moi :
Bouton:
Dim base As Database: Dim table As TableDef
Dim champ As Field
Set base = CurrentDb()
Set table = base.TableDefs("Donnees")
Dim MChamp As String, nbCaracReq As Variant
For Each champ In table.Fields
If champ.Name <> "No" Then
MChamp = champ.Name
nbCaracReq = DLookup("[NbCaracteres]", "Caracteres", "[NomChampC] = '" & MChamp & "'")
Call CurrentDb.Execute("UPDATE Donnees SET " & MChamp & " = CharEspacesD ([" & MChamp & "], " & nbCaracReq & ")")
End If
Next champ
base.Close
Set table = Nothing
Set base = Nothing
Fonction associée :
Public Function CharEspacesD(ByVal s As String, c As Variant) As String
Dim nbEsp As Variant, strWEspaces As String
If Len(s) <= c Then
nbEsp = c - Len(s)
strWEspaces = s & Space(nbEsp)
s = strWEspaces
End If
If Len(s) > c Then
strWEspaces = Left(s, c)
s = strWEspaces
End If
CharEspacesD = s
End Function
Encore une fois, merci énormément!! :)
31 janv. 2024 à 21:14
Je dois avouer que je n'avais pas completement compris ton approche.
Content que j'ai pu t'assister à aboutir à une bonne solution!