Copie de cellules d'un ficher ouvert vers un fichier fermé

Bonjour,

Désolée de poser une question qui a déjà été traitée plusieurs fois mais je ne trouve pas la solution à mon problème et je suis novice.

Dans le cadre d'une création d'entreprise je prépare des fichiers clients.

J'aimerais lorsque je rentre un nouveau client que les données s'enregistrent automatiquement dans un fichier clients fermé.

Voici ce que j'ai écrit

Private Sub CommandButton2_Click()
Dim WB1 As Workbook, WB2 As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim j As Long
Dim chemin As String, fichier As String
Set WB1 = ActiveWorkbook
Set ws1 = WB1.Sheets("Informations client")
Set WB2 = ThisWorkbook
chemin = "C:\Users\aurel\Desktop\BCT\Fichier clients\"
fichier = "Fichier clients.xlsx"
Workbooks.Open chemin & fichier
Set ws2 = WB2.Sheets("Clients")
j = ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
ws2.Range("A" & j).Value = ws1.Range("A19").Value
ws2.Range("B" & j).Value = ws1.Range("B2").Value
ws2.Range("C" & j).Value = ws1.Range("B3").Value
ws2.Range("D" & j).Value = ws1.Range("B6").Value
ws2.Range("E" & j).Value = ws1.Range("B7").Value
 Application.ScreenUpdating = True
End Sub

Lorsque je l'exécute il me met "erreur d'exécution "9" l'indice n'appartient pas à la sélection". Cela concernerait ws2. Je ne comprends pas pourquoi.

Je vous remercie pour votre aide.

Bonjour

Teste comme ceci

Private Sub CommandButton2_Click()
  Dim WB1 As Workbook, WB2 As Workbook
  Dim ws1 As Worksheet, ws2 As Worksheet
  Dim j As Long
  Dim chemin As String, fichier As String
  Set WB1 = ThisWorkbook
  Set ws1 = WB1.Sheets("Informations client")
  chemin = "C:\Users\aurel\Desktop\BCT\Fichier clients\"
  fichier = "Fichier clients.xlsx"
  Workbooks.Open chemin & fichier
  Set WB2 = ActiveWorkbook
  Set ws2 = WB2.Sheets("Clients")
  j = ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
  ws2.Range("A" & j).Value = ws1.Range("A19").Value
  ws2.Range("B" & j).Value = ws1.Range("B2").Value
  ws2.Range("C" & j).Value = ws1.Range("B3").Value
  ws2.Range("D" & j).Value = ws1.Range("B6").Value
  ws2.Range("E" & j).Value = ws1.Range("B7").Value
  Application.ScreenUpdating = True
  ws2.close
End Sub

Merci M12 pour votre aide et votre réponse rapide.

Lorsque je l'exécute il me met "erreur de compilation - Membre de méthode ou de données introuvable".

J'ai enlevé le "ws2.close" et ça marche.

Du coup je présume que c'était pour que mon fichier client une fois la copie faite se ferme ?

Re,

Exact, (Je me suis tromprer de lettre, dans ce cas tu peut remplacer par

WB2.Close

ou

ActiveWorkbook.close

Bonjour,

Une petite contribution.

Cdlt.

Private Sub CommandButton2_Click()
Dim WB1 As Workbook, WB2 As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim chemin As String, fichier As String
Dim j As Long

    Application.ScreenUpdating = False

    Set WB1 = ThisWorkbook
    Set ws1 = WB1.Worksheets("Informations client")

    chemin = "C:\Users\aurel\Desktop\BCT\Fichier clients\"
    fichier = "Fichier clients.xlsx"

    Set WB2 = Workbooks.Open(chemin & fichier)
    Set ws2 = WB2.Worksheets("Clients")

    j = ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
    ws2.Range("A" & j).Value = ws1.Range("A19").Value
    ws2.Range("B" & j).Value = ws1.Range("B2").Value
    ws2.Range("C" & j).Value = ws1.Range("B3").Value
    ws2.Range("D" & j).Value = ws1.Range("B6").Value
    ws2.Range("E" & j).Value = ws1.Range("B7").Value

    WB2.Save
    WB2.Close savechanges:=True

End Sub

Merci beaucoup à vous 2. Ça marche !

Rechercher des sujets similaires à "copie ficher ouvert fichier ferme"