XL 2013 Problème incompatibilité de type

Chris Linefield

XLDnaute Junior
Bonjour tout le monde !

Je rencontre un petit problème avec mon VB, il m'indique une erreur d'exécution '13' : Incompatibilité de type
VB:
Private Sub retirer_Click()
'bouton du suppression d'une réf d'une place avec recherchv de la place puis effacement des données associées
Dim sup As Variant
    sup = Application.WorksheetFunction.Application.VLookup(ComboBox2, Range("A1:D300"), 2, False)
        Cells(sup, 3).ClearContents
        Cells(sup, 4).ClearContents
        ComboBox4 = ""
        TextBox4 = ""
        ComboBox2 = "Emplacement libre"
        ComboBox4.Value = "Choisir article"
ComboBox1.Value = "NA"
ThisWorkbook.Save
End Sub

Le bouton sert a RAZ un emplacement sur une cellule.

Pouvez-vous me venir en aide ?
 
Solution
Bonjour @Chris Linefield , @Marcel32

Je te propose ceci:

VB:
Private Sub retirer_Click()
'bouton du suppression d'une réf d'une place avec recherchv de la place puis effacement des données associées
Dim sup As Variant

On Error GoTo errorHandler

    sup = Application.WorksheetFunction.Application.VLookup(ComboBox2, Range("A1:D300"), 2, False)
       
        Cells(sup, 3).ClearContents
        Cells(sup, 4).ClearContents
       
errorHandler:
    'indique le numéro et la description de l'erreur survenue
    If Err.Number <> 0 Then
        MsgBox Err.Number & vbLf & Err.Description  ' <== Message optionnel
        MsgBox "La valeur " & ComboBox2.Value & " est non trouvée", vbCritical, "Problème"
        Exit Sub
    End If...

Chris Linefield

XLDnaute Junior
VB:
Private Sub ComboBox2_Change()
'Définition variable de la réf à ranger
Dim refr As Variant
refr = Application.WorksheetFunction.Application.VLookup(ComboBox2, Range("A1:D300"), 3, False)
'Désignation du bouton de vide de place
If ComboBox2.Value = "Emplacement libre" Then
retirer.Caption = "Selectionner emplacement"
Else
retirer.Caption = "Vider l'emplacement " & ComboBox2
End If
End Sub
Private Sub ComboBox3_Change()
'Définition du bouton de mise en stock
If ComboBox3.Value = "Choisir article" Or ComboBox1.Value = "NA" Then
Stocker.Caption = "Selectionner une référence à ranger et un emplacement"
Else
Stocker.Caption = "Cliquer pour mettre en stock la réf: " & ComboBox3 & " en " & ComboBox1
End If
End Sub
Private Sub ComboBox1_Change()
'Définition du bouton de mise en stock
If ComboBox3.Value = "Choisir article" Or ComboBox1.Value = "NA" Then
Stocker.Caption = "Selectionner une référence à ranger et un emplacement"
Else
Stocker.Caption = "Cliquer pour mettre en stock la réf: " & ComboBox3 & " en " & ComboBox1
End If
End Sub
Private Sub ComboBox4_Change()
'Tri auto du FIFO d'entrée en stock des boites
Range("H2:J300").Select
    ActiveWorkbook.Worksheets("Base auto").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Base auto").Sort.SortFields.Add Key:=Range( _
        "J2:J300"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Base auto").Sort
        .SetRange Range("H2:J300")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
test:
'recherchev de la référence à consulter avec gestion de l'absence de la réf
On Error Resume Next
Dim rec As Long
Dim trv As Variant
If IsNumeric(ComboBox4) Then
rec = ComboBox4.Value
trv = rec
Else
trv = ComboBox4.Value
End If
Dim exist As Variant
    exist = Application.WorksheetFunction.VLookup(trv, Range("I2:K300"), 3, False)
        If IsEmpty(exist) Then
            TextBox4.Value = "Produit introuvable"
        Else
            TextBox4.Value = exist
        End If
On Error GoTo test
TextBox5.Value = Application.WorksheetFunction.CountIf(Range("C1:C282"), ComboBox4.Value)
End Sub

Private Sub Label13_Click()

End Sub

Private Sub retirer_Click()
'bouton du suppression d'une réf d'une place avec recherchv de la place puis effacement des données associées
Dim sup As Variant
    sup = Application.WorksheetFunction.Application.VLookup(ComboBox2, Range("A1:D300"), 2, False)
        Cells(sup, 3).ClearContents
        Cells(sup, 4).ClearContents
        ComboBox4 = ""
        TextBox4 = ""
        ComboBox2 = "Emplacement libre"
        ComboBox4.Value = "Choisir article"
ComboBox1.Value = "NA"
ThisWorkbook.Save
End Sub
Private Sub Stocker_Click()
'recherche v de la place à remplir et affectation de la réf et de la date
If ComboBox3.Value = "Choisir article" Or ComboBox1.Value = "NA" Then
MsgBox ("Merci de choisir un article et un emplacement")
GoTo fini
Else
Dim lin As Variant
    lin = Application.WorksheetFunction.VLookup(ComboBox1, Range("A1:D300"), 2, False)
        Cells(lin, 3) = UserForm1.ComboBox3.Value
        Cells(lin, 4) = Now()
    lin = 0
ComboBox1 = "NA"
ComboBox3 = "Choisir article"
ComboBox3.SetFocus
ThisWorkbook.Save
End If
fini:
End Sub

Private Sub UserForm_Click()

End Sub

Voici le code complet de mon fichier excel
 

Phil69970

XLDnaute Barbatruc
Bonjour @Chris Linefield , @Marcel32

Je te propose ceci:

VB:
Private Sub retirer_Click()
'bouton du suppression d'une réf d'une place avec recherchv de la place puis effacement des données associées
Dim sup As Variant

On Error GoTo errorHandler

    sup = Application.WorksheetFunction.Application.VLookup(ComboBox2, Range("A1:D300"), 2, False)
       
        Cells(sup, 3).ClearContents
        Cells(sup, 4).ClearContents
       
errorHandler:
    'indique le numéro et la description de l'erreur survenue
    If Err.Number <> 0 Then
        MsgBox Err.Number & vbLf & Err.Description  ' <== Message optionnel
        MsgBox "La valeur " & ComboBox2.Value & " est non trouvée", vbCritical, "Problème"
        Exit Sub
    End If
       
        ComboBox4 = ""
        TextBox4 = ""
        ComboBox2 = "Emplacement libre"
        ComboBox4.Value = "Choisir article"
ComboBox1.Value = "NA"
ThisWorkbook.Save
End Sub

En fait ta sub provoque une erreur quand la rechercheV ne trouve rien exemple le plus facile quand tu ouvres le fichier et que tu cliques directement sur "Vider emplacement"

1648734791315.png

La rechercheV Recherche A1 dans ta BDD et évidement ne la trouve pas et donc te renvoie une erreur o_O

Avec mon code je gère l'erreur pour sortir de la procédure sur l'erreur. ;)

*Merci de ton retour

@Phil69970
 

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel