Je souhaite en VBA :
- ouvrir une table
- vérifier la présence de un ou plusieurs champs et les compter
- ajouter des champs en plus
plus concretement
pour un enregistrement j'ai par exemple
CHAMPS DONNEE
article chaise
mois 1 100
mois 2 150
l'utilisateur ouvre la table et souhaite etablir des stats sur 4 mois
(04-08-09 et 10)
et saisir les valeurs pour 09 et 10 de 200 et 175
Je voudrais en VBA ouvrir la table et voir qu'elle comporte que 2 mois
(verifier les champs et les compter)
ajouter les 2 champs manquant : mois 3 et mois 4 pour après saisie des
données par l'utilisateur obtenir :
CHAMPS DONNEE
article chaise
mois 1 100
mois 2 150
mois 3 200
mois 4 175
j'ai creuser la fonction CreateField mais ceci est dans le cadre d'un
CreateTableDef
qui lui crée une table.... or la table existe
merci à l'âme charitable qui me mettra sur une piste
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
xavier HUE
Bonjour Patrick,
Sub AjoutChamp(intNumMois As Integer) Dim db As Database Dim tbl As TableDef Dim fld As Field Dim intNbMois As Integer Dim intf As Integer
Set db = CurrentDb Set tbl = db.TableDefs("Table1")
For Each fld In tbl.Fields If Left(fld.Name, 4) = "mois" Then intNbMois = intNbMois + 1 End If Next fld
'intNbMois contient le nombre de champs Moisxx For intf = intNbMois To intNumMois Set fld = tbl.CreateField 'Créer le champ With fld .Name = "Mois" & Format$(intf, "00") .Type = dbLong 'voir les autres types dans l'aide de CreateField End With tbl.Fields.Append fld 'Ajouter le champ à la table Next intf
Set fld = Nothing Set tbl = Nothing db.Close Set db = Nothing End Sub
Tu peux voir aussi du côté de la commande SQL ALTERTABLE.
Ceci étant, je trouve la façon de procéder trés bizarre!! Ajouter des champs dans une table pour faire des stats???? - Et si la table contient 12 champs, et qu'on ne veut faire des stats que sur 4 mois? - Ne serait-ce pas une erreur de conception de la base?? Je verrais plutôt TblQteArticle(Article, Annee, NumMois, Qte) avec les 3 premiers champs en clé primaire.
Cordialement.
Bonjour Patrick,
Sub AjoutChamp(intNumMois As Integer)
Dim db As Database
Dim tbl As TableDef
Dim fld As Field
Dim intNbMois As Integer
Dim intf As Integer
Set db = CurrentDb
Set tbl = db.TableDefs("Table1")
For Each fld In tbl.Fields
If Left(fld.Name, 4) = "mois" Then
intNbMois = intNbMois + 1
End If
Next fld
'intNbMois contient le nombre de champs Moisxx
For intf = intNbMois To intNumMois
Set fld = tbl.CreateField 'Créer le champ
With fld
.Name = "Mois" & Format$(intf, "00")
.Type = dbLong 'voir les autres types
dans l'aide de CreateField
End With
tbl.Fields.Append fld 'Ajouter le champ à la
table
Next intf
Set fld = Nothing
Set tbl = Nothing
db.Close
Set db = Nothing
End Sub
Tu peux voir aussi du côté de la commande SQL ALTERTABLE.
Ceci étant, je trouve la façon de procéder trés bizarre!!
Ajouter des champs dans une table pour faire des stats????
- Et si la table contient 12 champs, et qu'on ne veut
faire des stats que sur 4 mois?
- Ne serait-ce pas une erreur de conception de la base??
Je verrais plutôt TblQteArticle(Article, Annee, NumMois,
Qte) avec les 3 premiers champs en clé primaire.
Sub AjoutChamp(intNumMois As Integer) Dim db As Database Dim tbl As TableDef Dim fld As Field Dim intNbMois As Integer Dim intf As Integer
Set db = CurrentDb Set tbl = db.TableDefs("Table1")
For Each fld In tbl.Fields If Left(fld.Name, 4) = "mois" Then intNbMois = intNbMois + 1 End If Next fld
'intNbMois contient le nombre de champs Moisxx For intf = intNbMois To intNumMois Set fld = tbl.CreateField 'Créer le champ With fld .Name = "Mois" & Format$(intf, "00") .Type = dbLong 'voir les autres types dans l'aide de CreateField End With tbl.Fields.Append fld 'Ajouter le champ à la table Next intf
Set fld = Nothing Set tbl = Nothing db.Close Set db = Nothing End Sub
Tu peux voir aussi du côté de la commande SQL ALTERTABLE.
Ceci étant, je trouve la façon de procéder trés bizarre!! Ajouter des champs dans une table pour faire des stats???? - Et si la table contient 12 champs, et qu'on ne veut faire des stats que sur 4 mois? - Ne serait-ce pas une erreur de conception de la base?? Je verrais plutôt TblQteArticle(Article, Annee, NumMois, Qte) avec les 3 premiers champs en clé primaire.
Cordialement.
pat
Bonjour à tous et toutes
Tout d'abord, merci Xavier de ta réponse....
tu me disais... *Ceci étant, je trouve la façon de procéder trés bizarre!! *Ajouter des champs dans une table pour faire des stats???? * -Et si la table contient 12 champs, et qu'on ne veut faire des stats que sur 4 mois? * -Ne serait-ce pas une erreur de conception de la base?? *je verrais plutôt TblQteArticle(Article, Annee, NumMois, Qte) avec les 3 premiers champs en clé primaire.
Merci pour ton avis, tu as raison !!!!!! , je tentais de chercher midi à quatorze heure... :-o(((( la clé primaire composée est plus performante.......
A force de mal analyser les choses, d'un truc simple, j'aurais tendance à faire une "usine à gaz" !!!!!!
Encore merci de me "remettre" sur les rails
à bientôt sur le net
Patrick
Bonjour à tous et toutes
Tout d'abord, merci Xavier de ta réponse....
tu me disais...
*Ceci étant, je trouve la façon de procéder trés bizarre!!
*Ajouter des champs dans une table pour faire des stats????
* -Et si la table contient 12 champs, et qu'on ne veut faire des stats que
sur 4 mois?
* -Ne serait-ce pas une erreur de conception de la base??
*je verrais plutôt TblQteArticle(Article, Annee, NumMois, Qte) avec les 3
premiers champs en clé primaire.
Merci pour ton avis, tu as raison !!!!!! , je tentais de chercher midi à
quatorze heure... :-o((((
la clé primaire composée est plus performante.......
A force de mal analyser les choses, d'un truc simple, j'aurais tendance à
faire une "usine à gaz" !!!!!!
tu me disais... *Ceci étant, je trouve la façon de procéder trés bizarre!! *Ajouter des champs dans une table pour faire des stats???? * -Et si la table contient 12 champs, et qu'on ne veut faire des stats que sur 4 mois? * -Ne serait-ce pas une erreur de conception de la base?? *je verrais plutôt TblQteArticle(Article, Annee, NumMois, Qte) avec les 3 premiers champs en clé primaire.
Merci pour ton avis, tu as raison !!!!!! , je tentais de chercher midi à quatorze heure... :-o(((( la clé primaire composée est plus performante.......
A force de mal analyser les choses, d'un truc simple, j'aurais tendance à faire une "usine à gaz" !!!!!!