Erreur d'exécution 13 : incompatibilité de type

  • Initiateur de la discussion Initiateur de la discussion Lipikar
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lipikar

XLDnaute Nouveau
Bonjour à tous,

Je suis très débutant en VBA à tel point que je suis plus proche du bricolage que du programmeur.
J'ai récupéré un bout de code pour ce que je cherche à obtenir, je l'ai travaillé mais j'ai un problème lors de l'exécution : "Erreur 13 : incompatibilité de type".

Voici le code en question :

Code:
Sub Recherche()

Dim i As String
Dim k As String

mot_clef = InputBox("Veuillez saisir votre recherche")
LaDerniere = Application.Workbooks("Base Appros V4.xlsm").Worksheets("Base").Cells(30000, 163).End(xlUp).Row
k = 1
For i = 2 To LaDerniere
mot_clef2 = "*" & mot_clef & "*"
If Application.Workbooks("Base Appros V4.xlsm").Worksheets("Base").Cells(i, 163).Value Like mot_clef2 = True Then

Application.Workbooks("Base Appros V4.xlsm").Worksheets("Base").Range("A" & i & "").Copy
Application.Workbooks("Base Appros V4.xlsm").Worksheets("Recherche").Range("E" & k & "").Select
ActiveSheet.Paste

Application.Workbooks("Base Appros V4.xlsm").Worksheets("Base").Range("FG" & i & "").Copy
Application.Workbooks("Base Appros V4.xlsm").Worksheets("Recherche").Range("F" & k & "").Select
ActiveSheet.Paste

k = k + 1
End If
Next i

End Sub

L'erreur se situe sur la ligne suivante :

Code:
If Application.Workbooks("Base Appros V4.xlsm").Worksheets("Base").Cells(i, 163).Value Like mot_clef2 = True Then

J'ai débord testé cette macro dans un classeur très simple pour la travailler, tout fonctionnait.
Je l'ai transférée dans le classeur sur lequel elle est censée fonctionner, et j'obtiens cette erreur..
Je ne comprends pas ce qui change et pose problème.

Je vous remercie par avance pour votre aide 🙂
 
Dernière édition:
Re : Erreur d'exécution 13 : incompatibilité de type

Bonjour Lipikar,

Tu utilises une variable "string" comme indice dans une boucle.

Essaie comme ceci :

Code:
Sub Recherche()

Dim i As [COLOR="Red"][B]Integer[/B][/COLOR]
Dim k As [COLOR="Red"][B]Integer[/B][/COLOR]

mot_clef = InputBox("Veuillez saisir votre recherche")
LaDerniere = Application.Workbooks("Base Appros V4.xlsm").Worksheets("Base").Cells(30000, 163).End(xlUp).Row
k = 1
For i = 2 To LaDerniere
mot_clef2 = "*" & mot_clef & "*"
If Application.Workbooks("Base Appros V4.xlsm").Worksheets("Base").Cells(i, 163).Value Like mot_clef2 = True Then

Application.Workbooks("Base Appros V4.xlsm").Worksheets("Base").Range("A" & i & "").Copy
Application.Workbooks("Base Appros V4.xlsm").Worksheets("Recherche").Range("E" & k & "").Select
ActiveSheet.Paste

Application.Workbooks("Base Appros V4.xlsm").Worksheets("Base").Range("FG" & i & "").Copy
Application.Workbooks("Base Appros V4.xlsm").Worksheets("Recherche").Range("F" & k & "").Select
ActiveSheet.Paste

k = k + 1
End If
Next i

End Sub

Espérant avoir aidé.

Cordialement.
 
Re : Erreur d'exécution 13 : incompatibilité de type

Une autre chose qui me semble bien étrange : lorsque dans la box de recherche je tape la lettre "p", le code renvoie l'erreur "incompatibilité de type", mais lorsque je recherche la lettre "o" le code renvoie l'erreur "la méthode select de la classe range a échoué", et ce sur une autre ligne.. 😎 😕
 
Re : Erreur d'exécution 13 : incompatibilité de type

Bonjour Lipikar, Papou-net 🙂, le forum,
Une proposition , pas testée pour cause de 2007...
Cela devrait au moins résoudre "la méthode select de la classe range a échoué"
Code:
[COLOR=blue]Sub[/COLOR] Recherche()
[COLOR=blue]Dim[/COLOR] i [COLOR=blue]As Long[/COLOR], k [COLOR=blue]As Long[/COLOR], LaDerniere [COLOR=blue]As Long[/COLOR]
[COLOR=blue]Dim[/COLOR] mot_clef2 [COLOR=blue]As String[/COLOR]
[COLOR=blue]Set[/COLOR] FB = Application.Workbooks("Base Appros V4.xlsm").Worksheets("Base")
[COLOR=blue]Set[/COLOR] FR = Application.Workbooks("Base Appros V4.xlsm").Worksheets("Recherche")
mot_clef = InputBox("Veuillez saisir votre recherche")
LaDerniere = FB.Cells(30000, 163).End(xlUp).Row
k = 1
[COLOR=blue]For[/COLOR] i = 2 [COLOR=blue]To[/COLOR] LaDerniere
    mot_clef2 = "*" & mot_clef & "*"
    [COLOR=blue]If[/COLOR] FB.Cells(i, 163).Value [COLOR=blue]Like[/COLOR] mot_clef2 = [COLOR=blue]True Then[/COLOR]
        FB.Range("A" & i).Copy FR.Range("E" & k)
        FB.Range("FG" & i).Copy FR.Range("F" & k)
        k = k + 1
    [COLOR=blue]End If[/COLOR]
[COLOR=blue]Next[/COLOR] i
[COLOR=blue]End Sub[/COLOR]
Cordialement
EDIT
Voir:
Code:
[COLOR=blue]Sub[/COLOR] Recherche2()
mot_clef = "*" & InputBox("Veuillez saisir votre recherche") & "*"
[COLOR=blue]Set[/COLOR] FR = Application.Workbooks("Base Appros V4.xlsm").Worksheets("Recherche")
[COLOR=blue]With[/COLOR] Application.Workbooks("Base Appros V4.xlsm").Worksheets("Base")
    LaDerniere = .Cells(Rows.Count, 163).End(xlUp).Row
    [COLOR=blue]For[/COLOR] i = 2 [COLOR=blue]To[/COLOR] LaDerniere
        [COLOR=blue]If[/COLOR] .Cells(i, 163).Value [COLOR=blue]Like[/COLOR] mot_clef [COLOR=blue]Then[/COLOR]
            k = k + 1
            FR.Range("E" & k) = .Range("A" & i)
            FR.Range("F" & k) = .Range("FG" & i)
        [COLOR=blue]End If[/COLOR]
    [COLOR=blue]Next[/COLOR] i
[COLOR=blue]End With[/COLOR]
[COLOR=blue]End Sub[/COLOR]
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
1 K
  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
691
Retour