Erreur : Incompatibilité de type ...

Fermé
ironthom - Modifié le 24 janv. 2018 à 17:04
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 25 janv. 2018 à 13:25
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

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
24 janv. 2018 à 15:33
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)
0
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"
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
24 janv. 2018 à 18:08
Re,
With mc.Sheets("Portefeuille").Select

Enlevez le
 .Select
0
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.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
24 janv. 2018 à 18:53
Re,
Vous pouvez mettre votre fichier a dispo?
0
ironthom Messages postés 2 Date d'inscription jeudi 25 janvier 2018 Statut Membre Dernière intervention 25 janvier 2018
25 janv. 2018 à 10:53
Comment fait-on pour joindre des fichiers excels ? je n'y arrive pas
0