Recopier automatiquement les informations d'un devis dans un autre devis ?

Bonjour à tous ! Je suis tombée sur ce forum en me renseignant sur la faisabilité de mon projet, et je me demande si une âme charitable accepterait de m’aider ?.. Pour être parfaitement honnête, je viens seulement de découvrir l’existence des « macros », je manque donc cruellement d’expérience sur Excel.

J’aimerais savoir s’il est possible, via Excel, de remplir automatiquement un devis à partir d’un autre devis et si oui, comment je peux procéder.

Je vous explique ma situation : je vais recevoir des devis de la part d’une entreprise partenaire pour l’un de nos clients, et je dois, à partir de ce devis, élaborer un nouveau devis, au nom de mon entreprise, en insérant la commission que va prendre mon entreprise. Je devrai donc recopier les coordonnées du client et lignes intérieur du devis, puis ajouter dans l’une des lignes du devis la commission de prendra mon entreprise.

Est-ce que l’un d’entre vous saurait si ce process peut être automatisé via Excel ?

JE VOUS REMERCIE !!!

Bonjour Lauriane,

il y a mille et une façon de réaliser des devis automatisés dans Excel, avec ou sans macro.
Le devis que tu reçois d’une entreprise n’est sans doute pas au format Excel, il faudra donc saisir dans ton outil les données.
S’il le devis transmis est au format Excel alors tu peux récupérer des données sans avoir à les ressaisir.
Puis ajouter les éléments que tu veux.
Pour te répondre, il faudrait que tu commence une trame de ce que tu veux obtenir et de ce que tu as en entrée.

Bonjour
La plupart des devis sont faits dans un format non modifiable (PDF)il faut vous armer de patience et recopier le devis manuellement en rajoutant vos propres annotations .
Si celui-ci est fait sous excel alors oui il est possible de le dupliquer.
Je suppose que vous sous traiter

cordialement

orguyrine

Bonjour à vous deux, je vous remercie pour vos réponses. J’ai pas mal avancé sur mon projet. Le devis initial sera reçu en format PDF, mais j’ai trouvé des convertisseur PDF to excel gratuit sur le net.
A partir du devis initial sous format excel, j’ J’ai créé une super macro qui m’automatise tout en un seul clique (malheureusement, elle est trop longue pour que je la copie ici)

Il ne me manque qu’une étape : celle de l’enregistrement… J’ai crée une macro, mais elle ne fonctionne pas :frowning:

Accepteriez-vous de me la corriger svp ?..
Voila la macro :

Sub enregistrementfeuille2PDF()

'Boite de dialogue
If MsgBox(« voulez-vous sauvegarder le devis », vbYesNo + vbDefaultButton2) = vbYes Then

'Isoler feuille 2 :
Sheets(« Sheet2 »).Select
Sheets(« Sheet2 »).Copy

'sauvegarde

Dim dossierSauvegarde As String, nomFichier As String, LaDate As String

On Error GoTo fin
With ThisWorkbook.Sheets(« sheet2 »)
LaDate = Format(Date, « yyyyddmm »)

dossierSauvegarde = « /Users/laurianefrancois/Desktop/DEVIS Borne/ »
nomFichier = « DEV_ » & LaDate & « .pdf »
sauvegarde = dossierSauvegarde & «  » & nomFichier
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=sauvegarde, _
Quality:= _
xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

End With
MsgBox « Le devis a bien été enregistré »
Exit Sub
fin: MsgBox « Problème de sauvegarde ! Le devis n’est pas enregistré »
End If
End Sub

HELP PLEASE, je désespère …

J’ai oublié de préciser ; j’aurais besoin d’enregistrer seulement la feuille de calcul n°2. C’est pour ça que j’ai essayé de l’isoler avec la commande :
Sheets(« Sheet2 »).Select
Sheets(« Sheet2 »).Copy

Idéalement, j’aimerais aussi que la macro ferme le (les) fichier(s) après l’enregistrement, mais je ne sais pas comment faire…

Pourriez-vous m’aider svp ? …

Merci infiniment

Bonjour

J’ai repris ton code l’ai intégré dans un classeur vierge est renommé un des onglets " Sheet2 " mis un bouton relié à la macro changé juste cette ligne de code :

dossierSauvegarde = « /Users/laurianefrancois/Desktop/DEVIS Borne/ »
par
dossierSauvegarde = ThisWorkbook.Path & " \ "

pour cibler le même répertoire d’enregistrement que celui de ce fichier

juste inhibé cette ligne de code inutile :

Sheets(« Sheet2 »).Copy

et en cliquant sur le bouton

avant dans le répertoire :

après ce message :

dans le même répertoire :

Fais un essais en l’état avec ce classeur joint que tu enregistres dans un répertoire
Cliques sur le bouton
Regardes dans ce même répertoire si le fichier pdf est présent

Puis adaptes la ligne de code :

dossierSauvegarde = « /Users/laurianefrancois/Desktop/DEVIS Borne/ »

en supprimant celle-ci :

dossierSauvegarde = ThisWorkbook.Path & «  »

et surtout en inversant ses barres « / » par ces barres " \ "

comme ceci :

dossierSauvegarde = "\Users/laurianefrancois\Desktop\DEVIS Borne\ "

Fais moi un retour

« Idéalement, j’aimerais aussi que la macro ferme le (les) fichier(s) après l’enregistrement, mais je ne sais pas comment faire… »

le fichier en pdf enregistré n’est jamais ouvert juste mis dans un répertoire

Classeur1.xlsm (22,3 Ko)

Omg ça fonctionne !! Merci infiniment !

Dernière question et après j’en ai fini :). Savez-vous quelle est la commande pour ajouter automatiquement un numéro de devis, et qu’il se modifie automatiquement une fois que le devis a été enregistré ?

Je vous remercie !

Pour ajouter un numéro je suppose dans le nom d’enregistrement
il suffit de l’inclure sur cette ligne de code soit en dur ainsi :

nomFichier = « DEV_ 001» & LaDate & « .pdf »

numéro « 001 »

mais pour le faire évoluer de réintervenir à chaque fois à la main

soit de faire référence à une cellule qui porte la dernière avec laquelle on fait un +1 et que l’on actualise ensuite du nouveau compteur comme ceci avec par exemple la cellule A2 de l’onglet « sheet2 »

With ThisWorkbook.Sheets(« sheet2 »)
numéro = Format(Range(« A2 ») + 1, « 000 »)
Range(« A2 ») = numéro

et dans la ligne de code ci-dessus d’utiliser cette variable comme ceci :

nomFichier = « DEV_ » & numéro & « _ » & LaDate & « .pdf »

Il va de soit qu’à la fermeture du fichier il faut par un enregistrement de celui-ci entériner cette nouvelle donnée

Ainsi à chaque enregistrement une nouvelle référence

Merci de valider ma réponse toujours plus sympathique

Je te remercie pour ta réponse. Cependant, je me suis mal exprimée, je ne cherchais pas à inscrire le numéro du devis dans le nom du devis mais à créer une nouvelle cellule, au sein du devis, dans laquelle il y aurait le numéro du devis en question (numéro du dernier devis enregistré +1). Le problème c’est que je ne sais pas comment « l’automatiser » (comment faire pour qu’à chaque fois que j’enregistre un devis, le numéro du devis dans mon template s’actualise automatiquement).
Je voudrais commencer par le numéro 1000.

Désolé, j’aurais dû mieux préciser ma demande

Adaptes ces lignes de code dans la procedure d’enregistrement de ton fichier
Dans une cellule à déterminer tu mets le dernier numéro par exemple A2
Puis à chaque enregistrement tu l’incrémentes d’un +1 comme ceci :
Range(« A2 ») = Range(« A2 »)+1

La première fois tu mets 1000 en A2

Si cette cellule est dans l’onglet « feuil1 » pour alimenter la cellule A2 de ton template tu mets comme ceci :

Sheets(« template »).Range(« A2 ») = Sheets(« feuil1 »).Range(« A2 »)+1
et tu actualises en suivant la cellule de référence du numéro utilisé comme ceci :
Sheets(« feuil1 »).Range(« A2 ») = Sheets(« feuil1 »).Range(« A2 »)+1

Ainsi la cellule A2 du template récupère le dernier numéro en feuil1 cellule A2 incrémenté de +1 et cette dernière cellule détentrice du dernier numéro utilisé est elle aussi actualisé du nouveau utilisé

A adapter à tes onglets et cellules concernés

Et surtout ne pas oublier d’enregistrer pour l’entériner le dernier numéro utilisé

Merci pour cette réponse qui me semble très claire !
Je vais tester ce wk, je vous tiens au courant !

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.