Nouvelle erreur de type 13 bis repetitas

Bonsoir le forum,

J'ai apporté des modifications à mes USF et du coup, il y a un nouveau message de type 13. Mais cette fois-ci, j'en connais la raison.

Voilà la procédure :

  • 1ère étape : je saisi un achat d'un véhicule qui met à jour la feuille "mouvements".
  • 2ème étape : je saisi la cession d'un véhicule, un combobox me permet de sélectionner que les véhicules disponibles. Cette liste est obtenue grâce à la feuil1 qui ce met à jour à l'ouverture de usf cession véhicule. Après la saisie de la date vente, il y a un contrôle entre la date d'achat et la date de vente pour éviter de sortir un véhicule avant de l'avoir acheté. Je valide l'usf et voilà qu'apparaît le message "erreur d'exécution 13. Incompatibilité de type".

Je pense que ce message est du à la présence d'un zéro dans la "feuil1" car au moment de la validation, l'immatriculation du véhicule est sortie de la liste et remplacé par un zéro mais normalement la macro prévoit également la suppression de la ligne mais apparemment elle ne fonctionne pas à ce moment. J'ai l'impression d'avoir créer une boucle sans fin et comment faire pour l'arrêter ?

J'ai autre soucis la taille de mon fichier, il fait 400 mo même ziper. Y-a-t-il un autre moyen de le poster ?

Merci.

Titoaun

bonjour titouan

http://www.cjoint.com

pour envoyer des fichiers

Pascal

Voilà

Merci Pascal pour l'info.

Bonjour le forum,

Je commence à m'inquiéter de ne pas avoir de réponse. Si proche de la fin de mon projet.

Merci d'avance.

T.

Bonjour,

le problème vient du code que j'ai surligné. en initialisant des éléments d'un userform tu déclenches l'évènement change et s'il existe une procédure change associée à cet élément elle est déclenchée. c'est ce qui ce passe avec textbox1 quant tu le remets à "". textbox1_change est exécuté et comme textbox1 est "", tu as une erreur 13 lors de la conversion de date.

il faut soit desactiver les events, soit positionner une variable que tu testes au début de chaque procédure change en fonction de ce que tu es en train de faire, par exemple v="initialize" quand tu vas initialiser et mettre comme première instruction dans tes procédures change if v="initialize" then exit sub

Private Sub CommandButton3_Click()
     Dim i As Integer 'saisie obligatoire
  For i = 1 To 3
    If i <> 5 And i <> 6 Then
      If Me("TextBox" & i) = "" Then
        Me("TextBox" & i).SetFocus
        MsgBox "La saisie de tous les champs est obligatoire"
        Exit Sub
      End If
    End If
  Next i
  For i = 1 To 4
    If Me("ComboBox" & i) = "" Then
      Me("ComboBox" & i).SetFocus
      MsgBox "La saisie de tous les champs est obligatoire"
      Exit Sub
    End If
  Next i
    Dim Ligne As Long
    Dim Cel As Range
    CommandButton3.Caption = "valider"
    CommandButton3.Default = True
     With Sheets("mouvements")
     Set Cel = .Columns("H").Find(what:=Me.ComboBox4, LookIn:=xlValues, lookat:=xlWhole)
     If Not Cel Is Nothing Then
      Ligne = Cel.Row
        'Prochaine ligne disponible
        'NewLine = .Range("k" & .Rows.Count).End(xlUp)(2).Row
        .Range("K" & Ligne) = CDate(TextBox1)
        .Range("L" & Ligne) = TextBox2
        .Range("M" & Ligne) = ComboBox1.Value
        .Range("N" & Ligne) = ComboBox2.Value
        .Range("O" & Ligne) = TextBox4
        .Range("Q" & Ligne) = CDbl(TextBox3)
        .Range("T" & Ligne) = ComboBox3.Value
    End If
Dim C As Control
   For Each C In Me.Controls 'remise à zéro USF
     Select Case TypeName(C)
        Case "TextBox"
         C.Value = ""
        Case "CheckBox"
         C.Value = False
        Case "ListBox", "ComboBox"
         C.ListIndex = -1
      End Select
    Next C
  End With
 'InitCBB4
 End Sub

Bonsoir h2so4,

Merci pour l'explication et tes propositions. J'ai remplacé le code surligné pour faire simple par le unload du userform1 suivi de userform1.show comme ça mon formulaire est vidé. C'est une solution un peu bourrin et pas très esthétique mais çà résout mon soucis.

Bonne soirée.

T.

Rechercher des sujets similaires à "nouvelle erreur type bis repetitas"