Erreur : Incompatibilité de type ...

Bonjour,

Je souhaite faire un bouton "mis à jour " qui lorsque je clique dessus, la macro va me cherchais dans un autre fichier excel ("mc"), des informations, puis copie/colle dans le fichier ou se trouve ma macro. Les données dans le classeur "mc" peuvent un peu bouger (insertion/suppression de ligne), j'ai donc 5 repères ("rep1", "rep2",..) qui me permette de savoir quoi copié/coller. Or quand je lance ma macro, j'obtiens une erreur 'Incompatibilité de type" qui me surligne mon premier IF, juste après ma boucle For....

Sub Sheet2_Bouton1_Cliquer()
Dim marqueur1 As String
Dim marqueur2 As String
Dim marqueur3 As String
Dim marqueur4 As String
Dim j As Integer
Dim recap As Workbook
Dim mc As Workbook
Dim rep1 As String
Dim rep2 As String
Dim rep3 As String
Dim rep4 As String
Dim rep5 As String
Set recap = ThisWorkbook
Set mc = Application.Workbooks.Open("S:\Tri.xlsm", ReadOnly:=xlYes)

rep1 = "CONV PHYSIQUES"
rep2 = "OPT"
rep3 = "SO"
rep4 = "CORPO"
rep5 = "FUT"


j = 5

With mc.Sheets("Portefeuille").Select
For i = 1 To 150
If Cells(i, j).Value = rep1 Then
marqueur1 = ActiveCell.Row
ElseIf Cells(i, j).Value = rep2 Then
marqueur2 = ActiveCell.Row
ElseIf Cells(i, j).Value = rep3 Then
marqueur3 = ActiveCell.Row
ElseIf Cells(i, j).Value = rep4 Then
marqueur4 = ActiveCell.Row
ElseIf Cells(i, j).Value = rep5 Then
marqueur5 = ActiveCell.Row
End If
Next i

End With

ligne1 = marqueur1 + 2
ligne2 = marqueur2 + 2
ligne3 = marqueur3 + 2
ligne4 = marqueur4 + 2

mc.Sheets("Portefeuille").Range("C" & ligne1 & ":" & "C" & marqueur2).Copy
recap.Sheets("MC").Range("B2") = xlPasteValues


mc.Sheets("Portefeuille").Range("C" & ligne3 & ":" & "C" & marqueur4).Copy
recap.Sheets("MC").Range("B22") = xlPasteValues

mc.Sheets("Portefeuille").Range("C" & ligne4 & ":" & "C" & marqueur5).Copy
recap.Sheets("MC").Range("B42") = xlPasteValues

mc.Close False

End Sub

Si quelqu'un peut m'aider se serait vraiment sympa. Merci d'avance


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

  1. Bonjour,

    If Cells(i, j).Value = rep1 Then

    Si c'est une cellule de
    mc.Sheets("Portefeuille")

    dans le bloc With/end With, il faut mettre un point devant les Cells(i,j)
    1. Bonjour, effectivement merci ta réponse. En revanche aprés avoir rajouté un point "If .Cells(i, j).Value = rep1 Then "
      , j'ai toujours une erreur avec écrit cette fois "Objet requis"
    2. Re,
      With mc.Sheets("Portefeuille").Select

      Enlevez le
       .Select
    3. Re, en l'enlevant j'obtiens une erreur toujours à la même ligne (1er if ) "incompatibilité de type ". Merci en tout cas pour ta volonté de m'aider.
    4. Re,
      Vous pouvez mettre votre fichier a dispo?
    5. Comment fait-on pour joindre des fichiers excels ? je n'y arrive pas