access erreur de compilation
Dernière réponse : dans Programmation
Bonjour,
j'ai 6 critères de recherche sur un formulaire que l'on active via une checkbox dt voici le code :
Private Sub chktype_Click()
If Me.chktype Then
Me.cmbtype.Visible = False
Else
Me.cmbtype.Visible = True
End If
refreshquery
End Sub
Et voici le code de ma liste de resultats :
Private Sub refreshquery()
Dim sql As String
Dim sqlwhere As String
sql = "select nomtypeproduit from types produit, nomdistributeur from distributeurs, nomfabricant from fabricants, normeproduit from produits, PNproduit from produits, nomassembleur from assembleurs"
If Me.chktype Then
sql = sql & "and types produit!nomtypeproduit = '" & Me.cmbtype & "' "
End If
If Me.chkdistributeur Then
sql = sql & "and distributeurs!nomdistributeur = '" & Me.cmbdistributeur & "' "
End If
If Me.chkfournisseur Then
sql = sql & "and fournisseurs!nomfournisseur = '" & Me.cmbfournisseur & "' "
End If
If Me.chkassembleur Then
sql = sql & "and assembleurs!nomassembleur = '" & Me.cmbassembleur & "' "
End If
If Me.chkpn Then
sql = sql & "and produits!PNproduit like '*" & Me.txtpn & "*' "
End If
If Me.chknorme Then
sql = sql & "and produits!normeproduit like '*" & Me.txtnorme & "*' "
End If
sqlwhere = Trim(Right(sql, Len(sql) - InStr(sql, "where") - Len("where") + 1))
sql = sql & ";"
melistresultat.RowSource = sql
Me.listresultat.Requery
End Sub
Au moment ou je clique sur une chekbox le message erreur de compilation apparait.
Pouvez vous m'aider ?!
Merci
Elisa
j'ai 6 critères de recherche sur un formulaire que l'on active via une checkbox dt voici le code :
Private Sub chktype_Click()
If Me.chktype Then
Me.cmbtype.Visible = False
Else
Me.cmbtype.Visible = True
End If
refreshquery
End Sub
Et voici le code de ma liste de resultats :
Private Sub refreshquery()
Dim sql As String
Dim sqlwhere As String
sql = "select nomtypeproduit from types produit, nomdistributeur from distributeurs, nomfabricant from fabricants, normeproduit from produits, PNproduit from produits, nomassembleur from assembleurs"
If Me.chktype Then
sql = sql & "and types produit!nomtypeproduit = '" & Me.cmbtype & "' "
End If
If Me.chkdistributeur Then
sql = sql & "and distributeurs!nomdistributeur = '" & Me.cmbdistributeur & "' "
End If
If Me.chkfournisseur Then
sql = sql & "and fournisseurs!nomfournisseur = '" & Me.cmbfournisseur & "' "
End If
If Me.chkassembleur Then
sql = sql & "and assembleurs!nomassembleur = '" & Me.cmbassembleur & "' "
End If
If Me.chkpn Then
sql = sql & "and produits!PNproduit like '*" & Me.txtpn & "*' "
End If
If Me.chknorme Then
sql = sql & "and produits!normeproduit like '*" & Me.txtnorme & "*' "
End If
sqlwhere = Trim(Right(sql, Len(sql) - InStr(sql, "where") - Len("where") + 1))
sql = sql & ";"
melistresultat.RowSource = sql
Me.listresultat.Requery
End Sub
Au moment ou je clique sur une chekbox le message erreur de compilation apparait.
Pouvez vous m'aider ?!
Merci
Elisa
Autres pages sur : access erreur compilation
Lassé par la pub ? Créez un compte
ok desolée !
la ligne surlignée pour l'erreur est : Private Sub refreshquery()
Merci !
Et voici le code de ma liste de resultats :
la ligne surlignée pour l'erreur est : Private Sub refreshquery()
Merci !
Private Sub chktype_Click() If Me.chktype Then Me.cmbtype.Visible = False Else Me.cmbtype.Visible = True End If refreshquery End Sub
Et voici le code de ma liste de resultats :
Private Sub refreshquery() Dim sql As String Dim sqlwhere As String sql = "select nomtypeproduit from types produit, nomdistributeur from distributeurs, nomfabricant from fabricants, normeproduit from produits, PNproduit from produits, nomassembleur from assembleurs" If Me.chktype Then sql = sql & "and types produit!nomtypeproduit = '" & Me.cmbtype & "' " End If If Me.chkdistributeur Then sql = sql & "and distributeurs!nomdistributeur = '" & Me.cmbdistributeur & "' " End If If Me.chkfournisseur Then sql = sql & "and fournisseurs!nomfournisseur = '" & Me.cmbfournisseur & "' " End If If Me.chkassembleur Then sql = sql & "and assembleurs!nomassembleur = '" & Me.cmbassembleur & "' " End If If Me.chkpn Then sql = sql & "and produits!PNproduit like '*" & Me.txtpn & "*' " End If If Me.chknorme Then sql = sql & "and produits!normeproduit like '*" & Me.txtnorme & "*' " End If sqlwhere = Trim(Right(sql, Len(sql) - InStr(sql, "where" ) - Len("where" ) + 1)) sql = sql & ";" melistresultat.RowSource = sql Me.listresultat.Requery End Sub
Citation :
Ligne 28, c'est une coquille ou c'est écrit comme ça dans ton programme ?J'ose espérer que tu as mis l'Option Explicit dans ton module.
Euh ...
je fais un peu de bricolage sous access en fait ! Et au bout du comtpe ca marche toujours ! Mais là... j'avoue, je me sens un peu dépassée ! Le code je l'ai copié sur un site internet et adapté à mon projet !
L'option explicit ne me dit rien du tout par contre !
Merci bcp pour votre aide !
Forum efficace et bien géré : félicitations !
Elisa
hoegarden, connais-tu d'autres langages de programmation ?
Déclarer les variables est une façon de programmer propre.
Et VB permet tellement d'être sale que cette option me semble indispensable.
Je ne vais pas te gronder, non, mais j'aimerais que tu y réfléchisse quand même. Et que te coûte de mettre une ligne Dim par rapport à 3 heures de débogage parce que tu as fais une faute de frappe que tu ne vois pas, même en te relisant !?
oui je connaits d'autres langages et il y a un autre probleme en mettent l'option explicite quand on ecrit
il retourne un integer et sans un string (enfin je crois vu que j'avais fais mon programme vu dans l'autre topic sans et sa marche niquel et avec l'option explicite j'etais obliger de mettre
Cells(4,5)
il retourne un integer et sans un string (enfin je crois vu que j'avais fais mon programme vu dans l'autre topic sans et sa marche niquel et avec l'option explicite j'etais obliger de mettre
)
CStr(Cells(4,5))
ben le voici
il y a un autre probleme :
avec la variable jaar il le met en string et la variable week il le met en autre chose que string donc cela doit etre comme tu l'a dis :
jaar = Left(dtdate, InStr(dtdate, ".") - 1) 'ex : 7 week = Mid(dtdate, InStr(dtdate, ".") + 1) ' ex : 12 ' Kolom zoeken For i = K_START_GRAPH To K_END_GRAPH If "0" & Cells(LINE_YEAR, i).Value = jaar Then If Cells(LINE_WEEK, i).Text = week Then ' juiste kolom gevonden GetPosition = i Exit Function End If End If Next i
il y a un autre probleme :
avec la variable jaar il le met en string et la variable week il le met en autre chose que string donc cela doit etre comme tu l'a dis :
Citation :
Les variables non déclarées sont de type variant. Donc elle acceptent n'importe quoi.
ok mais c pas sa le probleme lol regarde avant j'avais sa :
et sa marche sans probleme
puis j'ai essayer avec option explicite et sa marche plus pourquoi
Function GetPosition(dtdate As String) As Long Dim max As Long Dim week As Long Dim jaar As Long max = Range("IV" & LINE_YEAR).End(xlUp).Column 'return the number of the last column 'test of er een datum in de cel staat If Len(dtdate) = 5 And _ IsNumeric(Mid(dtdate, 1, 1)) And _ IsNumeric(Mid(dtdate, 2, 1)) And _ Mid(dtdate, 3, 1) = "." And _ IsNumeric(Mid(dtdate, 4, 1)) And _ IsNumeric(Mid(dtdate, 5, 1)) Then Else Exit Function End If GetPosition = -1 ' Jaar en Week uit datum halen jaar = Left(dtdate, InStr(dtdate, ".") - 1) 'ex : 7 week = Mid(dtdate, InStr(dtdate, ".") + 1) ' ex : 12 ' Kolom zoeken For i = K_START_GRAPH To max If Cells(LINE_YEAR, i) = jaar Then If Cells(LINE_WEEK, i) = week Then ' juiste kolom gevonden GetPosition = i Exit Function End If End If Next i End Function
et sa marche sans probleme
puis j'ai essayer avec option explicite et sa marche plus pourquoi
Des problèmes de type de données...
Ici Left renvoie un type variant que tu affectes à un long...
Ou encore ici, tu compares un long à une string.
le problème c'est que VBA convertit tout seul une partie des variables mais parfois il a besoin que tu précises le type avec des fonctions de conversions.
Ici Left renvoie un type variant que tu affectes à un long...
jaar = Left(dtdate, InStr(dtdate, "." ) - 1) 'ex : 7
Ou encore ici, tu compares un long à une string.
Cells(LINE_YEAR, i) = jaar
le problème c'est que VBA convertit tout seul une partie des variables mais parfois il a besoin que tu précises le type avec des fonctions de conversions.
Citation :
Citation :
L'option explicit ne me dit rien du tout par contre !
Mais pourquoi cette option n'est-elle pas activée par défaut
Microsoft à la lanterne !!!!!!
Et ton problème résolu ou pas ?
Ok. Mais c'était quoi le problème ?
Be le probleme etait que je m'etais trompe de mot ... fournisseur à la place de distributeur
lolMerci qd meme !
Il se peut que je revienne pas mal de fois sur le forum je pense !
Elisa
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumVBScript et erreur Access à récupérer
- ForumErreur lors de la conversion b'une BD access 97 vers Access 2000
- Forumformule , erreur de compilation
- ForumErreur de compilation
- Forumerreur de compilation kernel 2.6.16
- Forumerreur de compilation en C++
- Forum*C++* Compilation avec dev c++, erreur de fichier
- Forumtraiter des erreurs access
