Renvoi de valeurs entre tableaux

Bonjour à tous.

Je rencontre un soucis avec ma macro qui envoi des données d'un tableau à un autre.

je renvoie 13 données.

Les lignes qui fonctionnent :

1, 2, 4, 5, 6, 7, 9, 10

Les lignes qui ne renvoient pas leur valeurs :

3, 8, 11, 12 et 13

Je vous mets ci-dessous mon code, soyez indulgent, je débute...

Merci d'avance pour votre aide

Guillaume

Private Sub CommandButton2_Click()

    te = Sheets("Dossiers Garanties").Range("B:B").Find(TextBox1.Value, Range("B65536"), , , xlByRows).Row
    td = Sheets("Suivi Dossiers").Range("B:B").Find(TextBox1.Value, Range("B65536"), , , xlByRows).Row

    Application.Workbooks.Open "I:\_ACTIVITE_HEU\_INGENIERIE\_SAV\_GMF\FG_MODELE V2.xlsm", ReadOnly:=True

Application.ScreenUpdating = False

    Workbooks("Suivi Activite APV.xlsm").Sheets(2).Activate

'1 N° DE DOSSIER
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("G2").Value = Sheets("Dossiers Garanties").Cells(te, 2).Value
'2 AFFAIRE SUIVIE PAR
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("C4").Value = Sheets("Dossiers Garanties").Cells(te, 3).Value
'3 RETOUR PIECE
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("G4").Value = Sheets("Dossiers Garanties").Cells(te, 18).Value
'4 VEHICULE
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("C8").Value = Sheets("Dossiers Garanties").Cells(te, 8).Value
'5 TRANSFO/PROJET
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("C9").Value = Sheets("Dossiers Garanties").Cells(te, 9).Value
'6 N° CHASSIS
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("C10").Value = Sheets("Dossiers Garanties").Cells(te, 6).Value
'7 DATE MISE EN CIRCULATION
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("C11").Value = Sheets("Suivi Dossiers").Cells(td, 8).Value
'8 NUMERO ORDRE DE REPARATION
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("C12").Value = Sheets("Dossiers Garanties").Cells(te, 7).Value
'9 DATE DEMANDE
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("G8").Value = Sheets("Suivi Dossiers").Cells(td, 3).Value
'10 AFFAIRE-CONTACT
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("G9").Value = Sheets("Suivi Dossiers").Cells(td, 5).Value
'11 INCIDENT
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("C15").Value = Sheets("Dossiers Garanties").Cells(te, 10).Value
'12 ACTION
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("C18").Value = Sheets("Dossiers Garanties").Cells(te, 11).Value
'13 ACCORD MAIN DOEUVRE
    Workbooks("FG_MODELE V2.xlsm").Sheets("Sheet1").Range("C34").Value = Sheets("Dossiers Garanties").Cells(te, 15).Value & " H en T1"

    Workbooks("FG_MODELE V2.xlsm").Sheets(1).Activate

Application.ScreenUpdating = True

  Unload Me
  End

End Sub

Bonjour Guillaume,

Je te propose le code VBA suivant :

Option Explicit

Private Sub CommandButton2_Click()

  Dim td&, te&

  Application.ScreenUpdating = False

  td = Worksheets("Suivi Dossiers").Range("B:B").Find(TextBox1.Value, Range("B65536"), , , xlByRows).Row

  Workbooks.Open "I:\_ACTIVITE_HEU\_INGENIERIE\_SAV\_GMF\FG_MODELE V2.xlsm", ReadOnly:=True
  Worksheets("Sheet1").Select ' feuille "Sheet1", du classeur qu'on vient d'ouvrir

  With Workbooks("Suivi Activite APV").Worksheets("Dossiers Garanties")
    te = .Range("B:B").Find(TextBox1.Value, Range("B65536"), , , xlByRows).Row
    [G2] = .Cells(te, 2)      '  1 N° DE DOSSIER
     [C4] = .Cells(te, 3)      '  2 AFFAIRE SUIVIE PAR
     [G4] = .Cells(te, 18)     '  3 RETOUR PIECE
     [C8] = .Cells(te, 8)      '  4 VEHICULE
     [C9] = .Cells(te, 9)      '  5 TRANSFO/PROJET
     [C10] = .Cells(te, 6)     '  6 N° CHASSIS
     [C11] = .Cells(td, 8)     '  7 DATE MISE EN CIRCULATION
     [C12] = .Cells(te, 7)     '  8 NUMERO ORDRE DE REPARATION
     [G8] = .Cells(td, 3)      '  9 DATE DEMANDE
     [G9] = .Cells(td, 5)      ' 10 AFFAIRE-CONTACT
     [C15] = .Cells(te, 10)    ' 11 INCIDENT
     [C18] = .Cells(te, 11)    ' 12 ACTION
     [C34] = .Cells(te, 15) _
       & " H en T1"            ' 13 ACCORD MAIN DOEUVRE
   End With

  Worksheets(1).Select ' inutile si la 1ère feuille du classeur est "Sheet1"

  Application.ScreenUpdating = True

  Unload Me

End Sub

⚠ Si la feuille "Suivi Dossiers" est dans un autre classeur que le classeur actif (lors du lancement de la macro), tu dois

alors le préciser : td = Workbooks("Classeur X").Worksheets("Suivi Dossiers").Range("B:B").Find( ...

⚠ J'ai supposé que la feuille "Dossiers Garanties" est dans le classeur "Suivi Activite APV" ;

dans le cas contraire, tu dois adapter With Workbooks("Suivi Activite APV")

Vérifie bien si ça marche correctement pour toutes les lignes que tu veux.

Merci de me dire si ça te convient.

Cordialement

Rechercher des sujets similaires à "renvoi valeurs entre tableaux"