Enregistrer les données dans un tableau récapitulatif

Bonjour tout le monde,

J'ai établit un devis ( avec formules, en cascade, etc... et enregistrement dans Nom de Dossier
NomDossier = Application.InputBox("Indiquer le Nom du Client :", "Dossier")
CheminDossier = "W:\DOSSIERS PARTAGES\GESTION COMMERCIALE\DEVIS\\DEVIS 2023\" & NomDossier & "-"

Cela marche très bien mais j'aimerais également enregistrer les données " voir fichier devis" dans un tableau récapitulatif .

Je ne sais pas si cela est possible ???

8devis.xlsx (24.45 Ko)

Initialement dans mon dossier Devis j'ai comme code Sub Enregistrer()


'Déclaration des variabbles
Dim NomDossier As String
Dim CheminDossier As String

On Error GoTo 1

'Nom de Dossier
NomDossier = Application.InputBox("Indiquer le Nom du Client :", "Dossier")
CheminDossier = "W:\DOSSIERS PARTAGES\GESTION COMMERCIALE\DEVIS\DEVIS 2023\" & NomDossier & "-"


If NomDossier = "" Then Exit Sub

If Range("D9").Value = "" Then
MsgBox "Merci d'indiquer le nom de la Bande Transporteuse", vbOKOnly + vbInformation, "sauvegarder"
Range("D9").Select

Else

With ActiveWorkbook
.SaveAs Filename:=CheminDossier & " " & Range("D4"), FileFormat:=xlOpenXMLWorkbookMacroEnabled
End With
MsgBox "Votre devis a bien été enregistré"
Sheets("feuil2").Shapes("Bouton").Delete

End If

1

End Sub

Mais je sais copie d'un onglet à un onglet mais la je bloque

S'il vous plaît si quelqu'un a une idée

Merci par avance

Bonjour,

A tester :

17devis.xlsm (26.33 Ko)

Le fichier recap doit etre dans le même dossier que les devis (sinon modifier le CheminRecap)

CheminRecap = "W:\DOSSIERS PARTAGES\GESTION COMMERCIALE\DEVIS\DEVIS 2023\recapitulatif-devis.xlsx"

Pour info, les cellules ne correspondent pas entre tes deux fichiers (un décallage de deux lignes)

Sub Enregistrer()
'Déclaration des variabbles
Dim NomDossier As String
Dim CheminDossier As String
Dim CheminRecap As String

'Nom de Dossier
NomDossier = Application.InputBox("Indiquer le Nom du Client :", "Dossier")
CheminDossier = "W:\DOSSIERS PARTAGES\GESTION COMMERCIALE\DEVIS\DEVIS 2023\" & NomDossier & "-"
CheminRecap = "W:\DOSSIERS PARTAGES\GESTION COMMERCIALE\DEVIS\DEVIS 2023\recapitulatif-devis.xlsx"

If NomDossier = "" Then Exit Sub

If Range("D7").Value = "" Then
    MsgBox "Merci d'indiquer le nom de la Bande Transporteuse", vbOKOnly + vbInformation, "sauvegarder"
    ThisWorkbook.Worksheets(1).Range("D7").Select
    Exit Sub
Else
    Workbooks.Open Filename:=CheminRecap
    Set Recap = Workbooks("recapitulatif-devis.xlsx").Worksheets(1)
    Set Donnee = ThisWorkbook.Worksheets(1)
    DerLigRecap = Recap.Cells(Rows.Count, 1).End(xlUp).Row + 1
        Recap.Cells(DerLigRecap, 1) = Donnee.Range("Q5") '7
        Recap.Cells(DerLigRecap, 2) = Donnee.Range("D5") '7
        Recap.Cells(DerLigRecap, 3) = Donnee.Range("D7") '9
        Recap.Cells(DerLigRecap, 4) = Donnee.Range("D11") '13
        Recap.Cells(DerLigRecap, 5) = Donnee.Range("D13") '15
        Recap.Cells(DerLigRecap, 6) = Donnee.Range("G13") '15
        Recap.Cells(DerLigRecap, 7) = Donnee.Range("D15") '17
        Recap.Cells(DerLigRecap, 8) = Donnee.Range("D17") '19
        Recap.Cells(DerLigRecap, 9) = Donnee.Range("I17") '19
        ActiveWorkbook.Close SaveChanges:=True
    ThisWorkbook.SaveAs Filename:=CheminDossier & " " & Range("D5"), FileFormat:=xlOpenXMLWorkbookMacroEnabled
    MsgBox "Votre devis a bien été enregistré"
'    ActiveWorkbook.Sheets("feuil2").Shapes("Bouton").Delete
End If

End Sub

(J'ai mis en commentaire la suppression du bouton en feuil2 car dans ton exemple il n'existe pas)

A+

Merci Geof 52, d'avoir consacré du temps pour mon problème

Cela marche parfaitement, je ne pensais pas cela possible.

Cependant, lorsque je l'applique à mon vrai dossier, on m'indique que le dossier recapitucalif-devis n'hésite pas. Dans mon vrai dossier j'ai en feuil1 mon devis comme présenté mais j'ai également 4 feuil avec mes paramètres ex : déplacement, client etc...

Je n'ai besoin d'enregistrer que la feuil1 soit le devis dans le dossier recap et dans le dossier individuel les autres feuilles m''importe peu

Désolé de te solliciter encore

Bonjour Candide,

Pour le dossier qui n'existe pas , "recapitucalif" ou recapitulatif

Peut-etre une faute de frappe seulement ici et non sur la macro donc, regarde si l'extension est bien ".xlsx"
Et que le fichier est bien où la macro va le chercher avec CheminRecap

Pour le fichier Devis, peut importe le nombre de feuil, avec :

Set Donnee = ThisWorkbook.Worksheets(1)

Je défini que les opérations (les données) sont sur la Feuil1 du fichier Devis.

Pour ce qu'il en est de l'enregistrement, j'ai gardé ce que tu as fait

ThisWorkbook.SaveAs Filename:=CheminDossier & " " & Range("D5"), FileFormat:=xlOpenXMLWorkbookMacroEnabled

Mais si tu souhaites seulement enregistrer la Feuil devis
Place ceci juste avant l'enregistrement pour supprimer les Feuil inutile

Application.DisplayAlerts = False
    ThisWorkbook.Worksheets("déplacement").Delete
    ThisWorkbook.Worksheets("client").Delete

'etc...
Application.DisplayAlerts = True

Bonjour GEOF52, et Merci

Merci Beaucoup cela marche à merveilleux ... Cela va me faciliter la vie

Comment on mets que le sujet est clos et résolu grâce à vous

Pourrais je abuser en vous demandant si il est possible de faire un tri sur le dossier recapitulatif-devis pour que j'ai les données par client

Pour info, le sujet est clos (petit V a coté du titre du sujet)

Pour l'abus, il faudrait "mettre sous forme de tableau" les données du fichier Recap :

image

Cocher Mon tableau comporte des entete,
Et le nom du tableau doit etre identifiable comme "Tab_RecapDevis" (a remettre dans la macro Devis)

image

Puis on enregistre et ferme le Recap
Pour ouvrir "Devis.xlsm" et dans la macro on ajoute (juste avant "ActiveWorkbook.Close") :

'        Recap.Cells(DerLigRecap, 9) = Donnee.Range("I17") '19 '*********** Deja dans la macro

        'Ordonner par client
        With Recap.ListObjects("Tab_RecapDevis").Sort
            .SortFields.Clear
            .SortFields.Add2 Key:=Range("Tab_RecapDevis[[#All],[Client]]")
            .Header = xlYes
            .Orientation = xlTopToBottom
            .Apply
        End With

'        ActiveWorkbook.Close SaveChanges:=True  '*********** Deja dans la macro

Et normalement a chaque nouveau devis la liste client se remet dans l'ordre alphabetique.

A+

Rechercher des sujets similaires à "enregistrer donnees tableau recapitulatif"