Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Vba lors de la fermeture de mon classeur copier vers base

  • Initiateur de la discussion Initiateur de la discussion c0uike
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

c0uike

Guest
Bonjour à tous je cherche depuis quelque jours à copier la valeur hors taxe d'une facture vers une base de donnée se trouvant dans un autre fichier.

J'ai dans la case k3 le numéro de devis.
Dans la case k37 la valeur hors taxe (fichier1.xlsm)

J'aimerai la coller dans (fichier 2.xlsm)(feuille1)

La valeur de la cellule de la ligne correspondant à la valeur k3 dans la colonne "D".

Merci d'avance
 
Re : Vba lors de la fermeture de mon classeur copier vers base

Bonjour

Voilà un essai

le fichier 2 doit être dans le même path que fichier 1 et il doit exister


Attention nouveaux fichiers 😎
 

Pièces jointes

Dernière édition:
Re : Vba lors de la fermeture de mon classeur copier vers base

Bonjour merci pour cette réponse rapide.

J'aimerai que dans le fichier 2 la valeur se colle dans la colonne HT du devis spécifié dans la feuille 1.
je joint le fichier 2 que j'ai modifié.
 

Pièces jointes

Re : Vba lors de la fermeture de mon classeur copier vers base

Bonjour merci pour cette réponse rapide.

J'aimerai que dans le fichier 2 la valeur se colle dans la colonne HT du devis spécifié dans la feuille 1.
je joint le fichier 2 que j'ai modifié.


Voilà les modifs en espèrant que ça vous convienne 😎
 

Pièces jointes

Dernière édition:
Re : Vba lors de la fermeture de mon classeur copier vers base

Merci Gilbert

Je recherchai exactement ça.
Petit problème mon nom de fichier 1 est généré automatiquement par rapport au numéro de facture.
Par contre ce classeur sera le classeur actif au moment de la fermeture du dossier.

Est il possible de me faire le modifié sans vouloir abusé?
Est ce que je peux vous demander de commenter le code? pour je le comprennes.

Les codes de la feuill1 ne sert a rien ainsi que le module 2.
 
Re : Vba lors de la fermeture de mon classeur copier vers base

moi pas bien comprendre ce que toi tu veux

le code du module 2 sert à la boite de dialogue

il n'y a pas de code dans la feuil1

par contre quand on ferme le fichier la macro est lancée dans le thisworkbook (Workbook_BeforeClose)

une autre chose si la macro rencontre un problème et qu'elle ne finit pas correctement il est possible qu'il y ait un problème de fonctionnement par la suite (non enregistrement)

c'est pour cela qu'il y a la macro Sub remise()
 
Dernière édition:
Re : Vba lors de la fermeture de mon classeur copier vers base

Ok merci je n'avais pas trop compris j'ai commencer le Vba il y a une semaine.
Alors j'essaye de réexpliquer.

Feuill1=variable(elle correspond au nom de ma facture et son numéro)
Quand je travail sur cette feuil et que je quitte l'application je veux que les donnée de la case k3 et k37 s'enregistre dans la feuill2.
On a tous cela, mais le problème est que je connais pas le nom de ma feuill1 à l'avance donc le code doit être variable ou a mon avis il est possible de travailler avec ThisWorkbook.Activate.
Le problème est que je le maitrise pas trop.
Pouvez vous m'aidez?
 
Re : Vba lors de la fermeture de mon classeur copier vers base


Pour le VBA pas de problème nous avons tous commencé un jour 😱

humm..... "s'enregistre dans la feuill2." du fichier 2 je suppose pas clair

pas besoin de connaitre le nom si c'est la feuil1 on marque sheets(1)
 
Re : Vba lors de la fermeture de mon classeur copier vers base

Pardon depuis tous a l'heure je parle de feuill mais enfaite je voulais dire fichier 1(variable)
Donc
Fichier 1=variable(il correspond au nom de ma facture et son numéro)
Quand je travail sur ce fichierl et que je quitte l'application je veux que les donnée de la case k3 et k37 s'enregistre dans le fichier2 feuill "base facture".


On a tous cela, mais le problème est que je connais pas le nom de mon fichier 1 à l'avance donc le code doit être variable ou a mon avis il est possible de travailler avec ThisWorkbook.Activate.


Désolé pour la confusion.
 
Dernière modification par un modérateur:
Re : Vba lors de la fermeture de mon classeur copier vers base

voilà une procédure

Code:
Sub test()
    Dim vRet As Integer
    Dim fich1 As String
    fich1 = ThisWorkbook.Name
    vRet = MsgBoxPerso("Faut-il vraiment sauvegarder dans le Fichier 2 avant de quitter?", "Enregistrement", vExclamation, "Oui, l'archivage est requis|Non, quitter sans enregistrer", "Times New Roman", 14, vBold, vLeft, 250, 300, 1, 1, 1)
    If vRet = 1 Then
        Workbooks.Open Filename:=ThisWorkbook.Path & "\" & "fichier 2.xlsm"    'chemin à préciser
        Windows("fichier 2.xlsm").Activate
        Sheets(1).Select
        des = Sheets(1).Cells(Range("d65536").End(xlUp).Row + 1, 1).Address
        Windows(fich1).Activate
        Sheets(1).Range("K3").Copy Workbooks("fichier 2.xlsm").Sheets(1).Range(des)
        Sheets(1).Range("K37").Copy Workbooks("fichier 2.xlsm").Sheets(1).Range(des).Offset(0, 3)
        Application.DisplayAlerts = False
        Workbooks("fichier 2.xlsm").Save
        Windows("fichier 2.xlsm").Close
        ThisWorkbook.Save
        Application.DisplayAlerts = True
    Else
        ThisWorkbook.Save
        Exit Sub
    End If
End Sub
 
Dernière édition:
Re : Vba lors de la fermeture de mon classeur copier vers base

Voilà mon code mais le problème est qu'il ne me colle pas la valeur dans la colonne contenant le numéro de la facture mais a la première ligne vide de mon tableau.


Code:
Sub test()
        Workbooks.Open Filename:=ThisWorkbook.Path & "\" & ".......xlsm"    'chemin à préciser
        Windows("........xlsm").Activate
        Sheets("base_facture").Select
        des = Sheets("facture").Cells(Range("d65536").End(xlUp).Row + 1, 1).Address
        Windows(ThisWorkbook.Name).Activate
        Sheets("facture").Range("K3").Copy Workbooks("........xlsm").Sheets("base_facture").Range(des)
        Sheets("facture").Range("K37").Copy Workbooks("..........xlsm").Sheets("base_facture").Range(des).Offset(0, 4)
        Application.DisplayAlerts = False
        Workbooks("..........xlsm").Save
        Windows(".........xlsm").Close
        ThisWorkbook.Save
        Application.DisplayAlerts = True

End Sub

 

Pièces jointes

  • Capture.jpg
    71 KB · Affichages: 159
  • Capture.jpg
    71 KB · Affichages: 162
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
987
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
904
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…