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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.