Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/04/2011, 19h49   #1
Membre du Club
 
Homme Claude Larocque
Développeur informatique
Inscription : mai 2009
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Claude Larocque
Localisation : Canada

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : mai 2009
Messages : 61
Points : 46
Points : 46
Par défaut Erreur 13 incompatibilité de type

Bonjour,
Lorsque je veux ouvrir mon formulaire [Choisir les accompagnements], j’obtiens le message d’erreur suivant :

Erreur d’exécution ‘13’ :
Incompatibilité de type

J’essaie de trouver le problème, sans toutefois y parvenir, si vous pourriez m’aider, ce serait super.
NOTES : Source : [Produits-Accompagnements Requête]

Sur ce formulaire on y trouve 30 boutons commandes « ACCOMP1 » à « ACCOMP30 », voici l’évènement sur clic :
Code :
1
2
3
Private Sub ACCOMP1_Click()
DoCmd.OpenForm "Choisir les remplacements", acNormal, OpenArgs:=1 ‘Ce formulaire [Choisir les remplacements] a pour but de sélectionner un produit de remplacement pour un accompagnement spécifique, je l’explique en détails avec le code un peu plus loin dans cette discussion.’
End Sub
Chacun des boutons ont exactement le même code, jusqu’au 30ième.
À la fin du formulaire j’ai ce code qui me donne le message d’erreur mentionné ci-dessus :
Code :
1
2
3
4
5
Private Sub Form_Open(Cancel As Integer)
For I = 1 To 30
Forms("Choisir les accompagnements").Controls("ACCOMP" & I).Caption = DLookup("Accompagnement", "Accompagnements", "[AccompID]=" & I)
Next I
End Sub
Le débogage met en surbrillance la section qui débute par « Forms »

Voici les champs de ma table [Accompagnements] ainsi que leurs types :
Nom du champ Type de données
AccompID NuméroAuto (Entier long, Incrément, Indexé=Non, Aligner le texte=Général)
Accompagnement Texte (Taille du champ=55, Masque de saisie=>Cx55, Null interdit=Non, Chaine vide autorisée=Oui, Indexé=Oui avec doublons, Compression Unicode=Oui, Mode IME=Aucun contrôle, Mode de formulation IME=Aucun)
memPropertyPhotoLink Memo ( Null interdit=Non, Chaine vide autorisée=Oui, Indexé=Non, Compression Unicode=Oui, Mode IME=Aucun contrôle, Mode de formulation IME=Aucun, Format du texte= Texte brut, Aligner le texte=Général)

[Produits-Accompagnements Requête] :
Basé sur la table [Accompagnements] avec les 3 champs

Formulaire [Choisir les remplacements] :
Sur ce formulaire on y trouve 30 boutons commandes « REMPLA1 » à « REMPLA30 », voici l’évènement sur clic :
Code :
1
2
3
Private Sub REMPLA1_Click()
DoCmd.OpenForm "Détails commande2", acNormal, OpenArgs:=Me!Attaché & ";" & Me!REMPLA1.Tag ‘Ce formulaire [Détails commande2] a pour but de retrouver les remplacements pour un accompagnement spécifique, vu que mon erreur ne provient pas de ce formulaire, car il ouvre sans problème, je n’élaborerai pas plus en détails car il est très volumineux.’
End Sub
NOTES : Source : [Produits-Remplacements Requête]
Basé sur la table [Remplacements] avec les 4 champs

Plus de détails :
Ce formulaire [Choisir les remplacements] a pour but de sélectionner un produit de remplacement pour un accompagnement spécifique, voici le code sur chargement :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Private Sub Form_Load()
On Error GoTo ErrHand
Dim rs As DAO.Recordset
Dim lngLoop As Long
Dim strSQL As String
 
  If IsNull(Me.OpenArgs) = False Then
  Me!Attaché = Me.OpenArgs
 
    strSQL = "SELECT DISTINCTROW Remplacements.RemplaID, Remplacements.Remplacement " & _
      "FROM Produits INNER JOIN Remplacements " & _
      "ON Produits.Remplacement = Remplacements.RemplaID " & _
      "WHERE Produits.Remplacement = " & Me.OpenArgs & " " & _
      "ORDER BY Remplacements.RemplaID"
 
    Set rs = CurrentDb.OpenRecordset(strSQL)
    lngLoop = 0
 
    Do While rs.EOF = False
     lngLoop = lngLoop + 1
     If lngLoop > 30 Then
      MsgBox "Désolé: Il ne peut avoir plus de 30 remplacements.", vbCritical + vbYesNo
      Exit Do
     End If
     With Me.Controls("REMPLA" & lngLoop)
      .Caption = rs!Remplacement
       .Tag = rs!RemplaID
      .Visible = True
     End With
     rs.MoveNext
    Loop
  End If
 
   lngLoop = lngLoop + 1
  Do While lngLoop <= 30
    Me.Controls("REMPLA" & lngLoop).Visible = False
    lngLoop = lngLoop + 1
  Loop
 
Cleanup:
On Error Resume Next
  rs.Close
  Set rs = Nothing
  Exit Sub
 
ErrHand:
  MsgBox Err.Number & ": " & Err.Description
  Resume Cleanup
 
End Sub
J’ai créé une requête vide et je l’ai placé en Vue SQL pour vérifier le SQL de mon formulaire comme ceci :

Code sql :
SELECT DISTINCTROW Remplacements.RemplaID, Remplacements.Remplacement FROM Produits INNER JOIN Remplacements ON Produits.Remplacement = Remplacements.RemplaID WHERE Produits.Remplacement = " & Me.OpenArgs & " ORDER BY Remplacements.RemplaID

Car je soupçonne que c’est cette section qui me génère cette erreur, mais je n’ai pas trouvé de solution jusqu’à présent.
J’ai également eu un message d’erreur en Vue SQL quelque peu différent mais qui citait :
« Type de données incompatible dans l’expression du critère »

Voici les champs de ma table [Remplacemements] ainsi que leurs types :
Nom du champ Type de données
RemplaID NuméroAuto (Entier long, Incrément, Indexé=Non, Aligner le texte=Général)
Remplacement Texte (Taille du champ=55, Masque de saisie=>Cx55, Null interdit=Non, Chaine vide autorisée=Oui, Indexé=Oui avec doublons, Compression Unicode=Oui, Mode IME=Aucun contrôle, Mode de formulation IME=Aucun)
memPropertyPhotoLink Memo ( Null interdit=Non, Chaine vide autorisée=Oui, Indexé=Non, Compression Unicode=Oui, Mode IME=Aucun contrôle, Mode de formulation IME=Aucun, Format du texte= Texte brut, Aligner le texte=Général)
AttachéRemplacement Numérique (Taille du champ=Entier long, Incrément, Null Interdit=Non, Indexé=Non, Aligner le texte=Général)

Et pour terminer, les champs « Accompagnement » et « Remplacement » sont sur la table [Produits], en voici les détails :

Nom du champ Type de données
Accompagnement Numérique (Entier long,Décimales= Auto, Null interdit-Non, Indexé=Oui avec doublons, Aligner le texte=Général)

Remplacement Numérique (Entier long,Décimales= Auto, Null interdit-Non, Indexé=Oui avec doublons, Aligner le texte=Général)

Si de plus amples informations vous sont nécessaires, n’hésitez pas à me contacter, il me fera plaisir de vous répondre rapidement.

Claude du Québec.
toumack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 15h54   #2
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
Bonjour,

Posez une gestion d'erreur dans vos procédures vous aidera à identifier la cause et l'emploi de l'instruction erl vous donnera la position si peu que vous numérotiez chaque ligne de code.

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 17h38   #3
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 256
Points : 5 256
Bonjour à tous,

Si ton champ remplacement est du type numérique, alors il faut que Me.OpenArgs contienne un numérique aussi, mais apparemment c'est le cas...

Sinon pour ta ligne en surbrillance pour le message d'erreur,

Code :
1
2
3
4
5
Private Sub Form_Open(Cancel As Integer)
For I = 1 To 30
Forms("Choisir les accompagnements").Controls("ACCOMP" & I).Caption = DLookup("Accompagnement", "Accompagnements", "[AccompID]=" & I)
Next I
End Sub
Sur:

Code :
Forms("Choisir les accompagnements").Controls("ACCOMP" & I).Caption = DLookup("Accompagnement", "Accompagnements", "[AccompID]=" & I)
Tu as peut-être une valeur nulle pour

Code :
DLookup("Accompagnement", "Accompagnements", "[AccompID]=" & I)
Peut-être faudrait-il essayer :

Code :
Forms("Choisir les accompagnements").Controls("ACCOMP" & I).Caption = nz(DLookup("Accompagnement", "Accompagnements", "[AccompID]=" & I),"")

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h24.


 
 
 
 
Partenaires

Hébergement Web