Passer d'un fichier à un autre et y revenir

1

Help !!!

Bonjour,

Je fais mes devis et factures sur des fichiers Excel qui porte le nom de mes clients ex. : « Client X » ou « Client Y ».

Les fichiers « Clients » ont une page pour les devis et une autre pour les factures.

Le fichier « Compta » comme son nom l’indique, me sert à faire ma compta. Il a une page « Livre factures » sur laquelle viennent s’inscrire les totaux des factures de tous les clients. Ces numéros des factures s’incrémentent automatiquement à chaque nouvelle facture.

Au moyen d’une macro, sur le fichier « client », j’arrive à copier les totaux de la facture de ce client sur la page « Livre factures » du fichier « Compta » qui insère automatiquement un numéro à cette facture.

Problème, avec ma macro, je n’arrive pas à revenir du fichier « Compta » sur le fichier client (dont le nom change à chaque client) pour inscrire le numéro sur la facture avant de l’imprimer.

Je conçois que ma demande est un peu ardue, mais comment puis-je, en une seule macro, aller sur un autre fichier et revenir sur le premier ?

Pouvez-vous m’aider ?

Merci d’avance.


***********************************

Voici ma macro

Sub SauvFacture()

'

' Transforme les données en valeurs

    Range("B3:H15").Select

    Selection.Copy

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    Range("E3").Select

   

' Met à jour Compta

    Sheets("Livre Factures").Select

    Range("IB1:IH1").Select

    Selection.Copy

    Workbooks.Open Filename:= _

        "D:\Données\Documents\Gestions\Compta.xlsm" 

    Sheets("Livre Factures").Select

    Range("IB6").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    Range("IA1:II1").Select

    Selection.Copy

    Range("A2000").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    Range("IC6:II6").Select

    Selection.Copy

    Range("C2000").Select

    ActiveSheet.Paste

    ' Trie le listing par n° de Facture col A

    Range("A6:J2000").Select

    Application.CutCopyMode = False

    ActiveWorkbook.Worksheets("Livre Factures").Sort.SortFields.Clear

    ActiveWorkbook.Worksheets("Livre Factures").Sort.SortFields.Add Key:=Range( _

        "A6:A2000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

        xlSortNormal

    With ActiveWorkbook.Worksheets("Livre Factures").Sort

        .SetRange Range("A6:J2000")

        .Header = xlGuess

        .MatchCase = False

        .Orientation = xlTopToBottom

        .SortMethod = xlPinYin

        .Apply

    End With

    Range("B1").Select

   

' Sauvegarde du Compta

    ActiveWorkbook.Save

   

End Sub



    Dan Posté le 23 mars 2021, 16:14
    par Dan
    Répondre
    0

    Bonjour,


    Pour commencer, il ne faut pas utiliser .Select

    Il faut donc reprendre entièrement ton code.

    Un début :

    Option Explicit
    Sub SauvFacture()
    Dim wbk As Workbook
    Dim rngSrc As Range
    Dim rngDst As Range

      ' Transforme les données en valeurs
      With ThisWorkbook.Worksheets("MaFeuille")  'adapter le nom de la feuille
      .Range("B3:H15").Value = .Range("B3:H15").Value
      End With
      ' Met à jour Compta
      Set rngSrc = Worksheets("Livre Factures").Range("IB1:IH1")
      Set wbk = Workbooks.Open(Filename:="D:\Données\Documents\Gestions\Compta.xlsm")
      Set rngDst = wbk.Worksheets("Livre Factures").Range("IB6;IH6")
      rngDst.Value = rngSrc.Value
     
      'etc. ...
      '....
       
    End Sub


    Posté le 23 mars 2021, 20:49

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :