OVH Cloud OVH Cloud

ifelseif sur champ texte

4 réponses
Avatar
larnoum
Bonjour,
Je souhaiterai utiliser la fonction "si" en vba pour Access97
J'ai écris du code mais cela ne fonctionne pas :

Sub Cat_Diam()
' crée les catégories de diamètre
Dim MaBase As Database
Dim MaTable As TableDef
Dim Diam As Field
Dim Ess As Field
Dim CatDiam As Field

Set MaBase = CurrentDb
Set MaTable = MaBase.TableDefs("Fme_eclate")
Set Diam = MaTable.Fields("DIAM")
Set Ess = MaTable.Fields("ESS")
Set CatDiam = MaTable.Fields("CAT_DIAM")

If Ess = "CHE" Then
CatDiam = "CHE"
Else
CatDiam = "AUTRE"
End If

End Sub

J'ai, à l'exécution le message suivant : "Erreur d'exécution 3219, opération
non valide"
Quelqu'un pourrait-il maider ?
Merci par avance.
--
Pierre

4 réponses

Avatar
michel
Bonjour
Tu utilise un objet tabledef qui correspond a une table en mode CREATION
Or tu veux modifier les donnees de ta table
tu doit passer par un objet table ou recordset
Pour modifier le recordset tu doit utiliser la methode edit puis update pour
sauvegarder
De plus ta methode modifierait que le premier enregistrement
Utilise une boucle sur ton recordset
do while not rst.eof
'traitement
'enr suivant
rst.movenext
loop
Michel
"larnoum" a écrit dans le message de
news:
Bonjour,
Je souhaiterai utiliser la fonction "si" en vba pour Access97
J'ai écris du code mais cela ne fonctionne pas :

Sub Cat_Diam()
' crée les catégories de diamètre
Dim MaBase As Database
Dim MaTable As TableDef
Dim Diam As Field
Dim Ess As Field
Dim CatDiam As Field

Set MaBase = CurrentDb
Set MaTable = MaBase.TableDefs("Fme_eclate")
Set Diam = MaTable.Fields("DIAM")
Set Ess = MaTable.Fields("ESS")
Set CatDiam = MaTable.Fields("CAT_DIAM")

If Ess = "CHE" Then
CatDiam = "CHE"
Else
CatDiam = "AUTRE"
End If

End Sub

J'ai, à l'exécution le message suivant : "Erreur d'exécution 3219,
opération
non valide"
Quelqu'un pourrait-il maider ?
Merci par avance.
--
Pierre


Avatar
larnoum
Merci Michel,
Je vais essayer de m'en sortir mais je suis débutant en VBA, sous Excel
j'utilisai l'enregistrements de macro puis j'essayé de comprendre là sous
Access c'est pour moi un peu plus difficile.
Sans trop te demander pourrais-tu m'écrire le code complet si tu as le temps
de mon coté je me mets à l'ouvrage pour comprendre ;O)
Merci par avance

--
Pierre



Bonjour
Tu utilise un objet tabledef qui correspond a une table en mode CREATION
Or tu veux modifier les donnees de ta table
tu doit passer par un objet table ou recordset
Pour modifier le recordset tu doit utiliser la methode edit puis update pour
sauvegarder
De plus ta methode modifierait que le premier enregistrement
Utilise une boucle sur ton recordset
do while not rst.eof
'traitement
'enr suivant
rst.movenext
loop
Michel
"larnoum" a écrit dans le message de
news:
Bonjour,
Je souhaiterai utiliser la fonction "si" en vba pour Access97
J'ai écris du code mais cela ne fonctionne pas :

Sub Cat_Diam()
' crée les catégories de diamètre
Dim MaBase As Database
Dim MaTable As TableDef
Dim Diam As Field
Dim Ess As Field
Dim CatDiam As Field

Set MaBase = CurrentDb
Set MaTable = MaBase.TableDefs("Fme_eclate")
Set Diam = MaTable.Fields("DIAM")
Set Ess = MaTable.Fields("ESS")
Set CatDiam = MaTable.Fields("CAT_DIAM")

If Ess = "CHE" Then
CatDiam = "CHE"
Else
CatDiam = "AUTRE"
End If

End Sub

J'ai, à l'exécution le message suivant : "Erreur d'exécution 3219,
opération
non valide"
Quelqu'un pourrait-il maider ?
Merci par avance.
--
Pierre







Avatar
michel
Re Bonjour
Sub Test
Dim Rst as recordset
'ouvre une copie de la table en RAM
Set rst=currentdb.Openrecordset("fme_eclate")
'boucle sur tous les enr
do while not rst.eof
rst.edit 'Entre en modification
If rst!Ess = "CHE" Then
rst!CatDiam = "CHE"
Else
rst!CatDiam = "AUTRE"
End If
rst.update 'enregistre les modifs
rst.movenext 'enr suivant
loop 'recommence
'libere la memoire
set rst=nothing
End Sub
Voila
Michel
"larnoum" a écrit dans le message de
news:
Merci Michel,
Je vais essayer de m'en sortir mais je suis débutant en VBA, sous Excel
j'utilisai l'enregistrements de macro puis j'essayé de comprendre là sous
Access c'est pour moi un peu plus difficile.
Sans trop te demander pourrais-tu m'écrire le code complet si tu as le
temps
de mon coté je me mets à l'ouvrage pour comprendre ;O)
Merci par avance

--
Pierre



Bonjour
Tu utilise un objet tabledef qui correspond a une table en mode CREATION
Or tu veux modifier les donnees de ta table
tu doit passer par un objet table ou recordset
Pour modifier le recordset tu doit utiliser la methode edit puis update
pour
sauvegarder
De plus ta methode modifierait que le premier enregistrement
Utilise une boucle sur ton recordset
do while not rst.eof
'traitement
'enr suivant
rst.movenext
loop
Michel
"larnoum" a écrit dans le message de
news:
Bonjour,
Je souhaiterai utiliser la fonction "si" en vba pour Access97
J'ai écris du code mais cela ne fonctionne pas :

Sub Cat_Diam()
' crée les catégories de diamètre
Dim MaBase As Database
Dim MaTable As TableDef
Dim Diam As Field
Dim Ess As Field
Dim CatDiam As Field

Set MaBase = CurrentDb
Set MaTable = MaBase.TableDefs("Fme_eclate")
Set Diam = MaTable.Fields("DIAM")
Set Ess = MaTable.Fields("ESS")
Set CatDiam = MaTable.Fields("CAT_DIAM")

If Ess = "CHE" Then
CatDiam = "CHE"
Else
CatDiam = "AUTRE"
End If

End Sub

J'ai, à l'exécution le message suivant : "Erreur d'exécution 3219,
opération
non valide"
Quelqu'un pourrait-il maider ?
Merci par avance.
--
Pierre









Avatar
larnoum
Michel,
Avec tous mes remerciements car cela fonctionne, je viens de tester.
C'est à moi de travailler pour imbriquer mes if et elseif.
--
Pierre



Re Bonjour
Sub Test
Dim Rst as recordset
'ouvre une copie de la table en RAM
Set rst=currentdb.Openrecordset("fme_eclate")
'boucle sur tous les enr
do while not rst.eof
rst.edit 'Entre en modification
If rst!Ess = "CHE" Then
rst!CatDiam = "CHE"
Else
rst!CatDiam = "AUTRE"
End If
rst.update 'enregistre les modifs
rst.movenext 'enr suivant
loop 'recommence
'libere la memoire
set rst=nothing
End Sub
Voila
Michel
"larnoum" a écrit dans le message de
news:
Merci Michel,
Je vais essayer de m'en sortir mais je suis débutant en VBA, sous Excel
j'utilisai l'enregistrements de macro puis j'essayé de comprendre là sous
Access c'est pour moi un peu plus difficile.
Sans trop te demander pourrais-tu m'écrire le code complet si tu as le
temps
de mon coté je me mets à l'ouvrage pour comprendre ;O)
Merci par avance

--
Pierre



Bonjour
Tu utilise un objet tabledef qui correspond a une table en mode CREATION
Or tu veux modifier les donnees de ta table
tu doit passer par un objet table ou recordset
Pour modifier le recordset tu doit utiliser la methode edit puis update
pour
sauvegarder
De plus ta methode modifierait que le premier enregistrement
Utilise une boucle sur ton recordset
do while not rst.eof
'traitement
'enr suivant
rst.movenext
loop
Michel
"larnoum" a écrit dans le message de
news:
Bonjour,
Je souhaiterai utiliser la fonction "si" en vba pour Access97
J'ai écris du code mais cela ne fonctionne pas :

Sub Cat_Diam()
' crée les catégories de diamètre
Dim MaBase As Database
Dim MaTable As TableDef
Dim Diam As Field
Dim Ess As Field
Dim CatDiam As Field

Set MaBase = CurrentDb
Set MaTable = MaBase.TableDefs("Fme_eclate")
Set Diam = MaTable.Fields("DIAM")
Set Ess = MaTable.Fields("ESS")
Set CatDiam = MaTable.Fields("CAT_DIAM")

If Ess = "CHE" Then
CatDiam = "CHE"
Else
CatDiam = "AUTRE"
End If

End Sub

J'ai, à l'exécution le message suivant : "Erreur d'exécution 3219,
opération
non valide"
Quelqu'un pourrait-il maider ?
Merci par avance.
--
Pierre