Erreur de type 13 sur un MsgBox

Bonjour,

J'ai fait une macro afin de transférer les informations d'un fichier (fichier 1) dans un autre fichier (fichier 2)

Je souhaite que les informations du fichier 1 soit transférer dans le fichier 2 sur la ligne correspondant au numéro Ron qu'ils ont en commun.

C'est pourquoi j'utilise cette formule : ligne = Application.Match(n_ron, Range("Q:Q"))

Cependant lorsque je lance ma macro j'ai un blocage d'incompatibilité 13 au niveau de la ligne d'après (Ecrit en rouge ci dessous) Je ne comprends pas pourquoi car c'est sur un Msgbox ! J'ai essayé de le supprimer mais l'erreur d'incompatibilité 13 se poursuit sur les lignes d'après.

J'ai également changer le type de la variable ligne en la mettant en variant mais ça ne change rien, j'ai toujours mon incompatibilité de type 13.

Je ne comprends pas pourquoi, si quelqu'un pouvait m'aider?

Merci d'avance

Voici le code de ma macro

Sub Chimie()

Dim adress, ec_a, ec_b, ec_c, person As String

Dim score, n_a, n_b, n_c, ligne, n_ron, note As Integer

Dim date As Date

Sheets("Liste").Select

n_ron= Range("J2").Value

n_a = Range("U5").Value

n_b = Range("U4").Value

n_c = Range("U6").Value

date = Range("J5").Value

adress = Range("J3").Value

ec_a = Range("V4").Value

ec_b = Range("V5").Value

ec_c = Range("V6").Value

person = Range("J6").Value

Sheets("Introduction").Select

note = Range("F24").Value

Workbooks.Open Filename:= _

"

"

Sheets("Planning 2019").Select

ligne = Application.Match(n_ron, Range("Q:Q"))

MsgBox "ligne = " & ligne

Range("A" & ligne & "").Value = date

Range("J" & ligne & "").Value = adress

Range("C" & ligne & "").Value = ec_a

Range("D" & ligne & "").Value = ec_b

Range("W" & ligne & "").Value = ec_c

Range("Z" & ligne & "").Value = note

Range("T" & ligne & "").Value = n_a

Range("V" & ligne & "").Value = n_b

Range("H" & ligne & "").Value = n_c

Range("P" & ligne & "").Value = person

MsgBox "Transfert des informations terminé"

End Sub

Bonjour,

Essaie ainsi :

With Worksheets("Planning 2919")
        On Error Resume Next
        ligne = Application.Match(n_ron, .Columns(17), 0)
        If Not IsError(ligne) Then
            MsgBox "ligne = " & ligne
            .Range("A" & ligne).Value = Date
            .Range("J" & ligne).Value = adress
            .Range("C" & ligne).Value = ec_a
            .Range("D" & ligne).Value = ec_b
            .Range("W" & ligne).Value = ec_c
            .Range("Z" & ligne).Value = note
            .Range("T" & ligne).Value = n_a
            .Range("V" & ligne).Value = n_b
            .Range("H" & ligne).Value = n_c
            .Range("P" & ligne).Value = person
        End If
    End With

Merci beaucoup beaucoup pour votre aide ! Ca marche !!!

Est-ce que je peux vous demander que signifie le "(n_ron, Columns (17), 0)"?

Re,

C'est pourquoi j'utilise cette formule : ligne = Application.Match(n_ron, Range("Q:Q"))

Par défaut Match renvoie une position approximative.

Pour avoir une position exacte, il faut :

ligne = Application.Match(n_ron, .Columns(17), 0)

Bon, ai je compris ta question?

Cdlt.

Ah oui d'accord et je n'aurais pas pu mettre simplement : ligne = Application.Match(n_ron, Range("Q:Q"),0) ?

Re,

Oui ! mais Q=17

Pense à clore le sujet.

Bon dimanche.

Cdlt.

Bonjour à tous,

au passage, lorsque tu écris Dim adress, ec_a, ec_b, ec_c, person As String, seule person est typée String, les autres sont Variant.

En VBA il faut typer toutes les variables individuellement.

eric

Merci pour vos réponses !

Re,

Et tu remplaceras :

Dim date As Date

par :

Dim dt As Date

Bon dimanche

Rechercher des sujets similaires à "erreur type msgbox"